From 3d2f94681a537157b5a1d9404cc4cbee56b0f891 Mon Sep 17 00:00:00 2001 From: Michael Green <84688932+michael-j-green@users.noreply.github.com> Date: Sat, 25 Nov 2023 14:50:44 +1100 Subject: [PATCH] Add authentication support (#185) --- gaseous-server/.DS_Store | Bin 6148 -> 10244 bytes gaseous-server/Assets/.DS_Store | Bin 6148 -> 6148 bytes gaseous-server/Assets/Ratings/.DS_Store | Bin 6148 -> 8196 bytes .../Classes/Auth/Classes/IdentityRole.cs | 16 + .../Classes/Auth/Classes/IdentityUser.cs | 15 + .../Classes/Auth/Classes/RoleStore.cs | 171 +++++ .../Classes/Auth/Classes/RoleTable.cs | 168 +++++ .../Classes/Auth/Classes/UserClaimsTable.cs | 95 +++ .../Classes/Auth/Classes/UserLoginsTable.cs | 117 ++++ .../Classes/Auth/Classes/UserRoleTable.cs | 86 +++ .../Classes/Auth/Classes/UserStore.cs | 616 ++++++++++++++++++ .../Classes/Auth/Classes/UserTable.cs | 371 +++++++++++ .../Classes/Auth/Models/AccountViewModels.cs | 100 +++ .../Auth/Models/AddPhoneNumberViewModel.cs | 14 + .../Auth/Models/ChangePasswordViewModel.cs | 25 + .../Models/DisplayRecoveryCodesViewModel.cs | 13 + .../Classes/Auth/Models/IndexViewModel.cs | 21 + .../Auth/Models/ManageLoginsViewModel.cs | 14 + .../Classes/Auth/Models/ProfileViewModel.cs | 46 ++ .../Auth/Models/RemoveLoginViewModel.cs | 10 + .../Auth/Models/SecurityProfileViewModel.cs | 18 + .../Classes/Auth/Models/SendCodeViewModel.cs | 17 + .../Auth/Models/SetPasswordViewModel.cs | 20 + .../Auth/Models/UseRecoveryCodeViewModel.cs | 14 + .../Classes/Auth/Models/UserViewModel.cs | 47 ++ .../VerifyAuthenticatorCodeViewModel.cs | 20 + .../Auth/Models/VerifyCodeViewModel.cs | 23 + .../Auth/Models/VerifyPhoneNumberViewModel.cs | 17 + gaseous-server/Classes/Database.cs | 114 ++++ gaseous-server/Classes/Metadata/AgeRating.cs | 197 ++++++ .../Controllers/V1.0/AccountController.cs | 396 +++++++++++ .../{ => V1.0}/BackgroundTasksController.cs | 6 + .../Controllers/{ => V1.0}/BiosController.cs | 9 + .../{ => V1.0}/CollectionsController.cs | 17 + .../{ => V1.0}/FilterController.cs | 4 + .../Controllers/{ => V1.0}/GamesController.cs | 104 ++- .../{ => V1.0}/LibraryController.cs | 7 + .../Controllers/{ => V1.0}/LogsController.cs | 4 + .../{ => V1.0}/PlatformMapsController.cs | 10 + .../{ => V1.0}/PlatformsController.cs | 7 + .../Controllers/{ => V1.0}/RomsController.cs | 5 + .../{ => V1.0}/SearchController.cs | 5 + .../{ => V1.0}/SignaturesController.cs | 6 + .../{ => V1.0}/SystemController.cs | 26 +- .../Controllers/V1.1/FirstSetupController.cs | 78 +++ .../Controllers/V1.1/GamesController.cs | 413 ++++++++++++ .../Controllers/V1.1/RatingsController.cs | 65 ++ gaseous-server/Program.cs | 197 +++++- .../Reference/OldAccountController.cs.bak | 585 +++++++++++++++++ .../Reference/OldManageController.cs.bak | 383 +++++++++++ .../Support/Database/MySQL/gaseous-1005.sql | 54 ++ gaseous-server/gaseous-server.csproj | 5 + gaseous-server/wwwroot/.DS_Store | Bin 6148 -> 8196 bytes .../wwwroot/images/LoginWallpaper.jpg | Bin 0 -> 606346 bytes gaseous-server/wwwroot/images/tick.svg | 5 + gaseous-server/wwwroot/images/user.svg | 5 + gaseous-server/wwwroot/index.html | 117 +++- gaseous-server/wwwroot/pages/collections.html | 20 +- .../pages/dialogs/collectionaddgame.html | 4 +- .../pages/dialogs/collectiondelete.html | 2 +- .../wwwroot/pages/dialogs/collectionedit.html | 22 +- .../wwwroot/pages/dialogs/librarydelete.html | 2 +- .../wwwroot/pages/dialogs/librarynew.html | 4 +- .../pages/dialogs/mediagroupdelete.html | 2 +- .../pages/dialogs/platformmapedit.html | 4 +- .../wwwroot/pages/dialogs/romdelete.html | 2 +- .../wwwroot/pages/dialogs/rominfo.html | 8 +- .../pages/dialogs/settingsuserdelete.html | 29 + .../pages/dialogs/settingsuseredit.html | 375 +++++++++++ .../pages/dialogs/settingsusernew.html | 88 +++ .../wwwroot/pages/dialogs/upload.html | 6 +- .../wwwroot/pages/dialogs/userprofile.html | 122 ++++ gaseous-server/wwwroot/pages/emulator.html | 12 +- gaseous-server/wwwroot/pages/first.html | 167 +++++ gaseous-server/wwwroot/pages/game.html | 40 +- gaseous-server/wwwroot/pages/home.html | 4 +- gaseous-server/wwwroot/pages/login.html | 128 ++++ gaseous-server/wwwroot/pages/settings.html | 17 +- .../wwwroot/pages/settings/bios.html | 6 +- .../wwwroot/pages/settings/logs.html | 2 +- .../wwwroot/pages/settings/mapping.html | 21 +- .../wwwroot/pages/settings/settings.html | 2 +- .../wwwroot/pages/settings/system.html | 14 +- .../wwwroot/pages/settings/users.html | 99 +++ .../wwwroot/scripts/filterformating.js | 82 ++- .../wwwroot/scripts/gamesformating.js | 4 +- gaseous-server/wwwroot/scripts/main.js | 15 + gaseous-server/wwwroot/styles/style.css | 110 +++- 88 files changed, 6187 insertions(+), 124 deletions(-) create mode 100644 gaseous-server/Classes/Auth/Classes/IdentityRole.cs create mode 100644 gaseous-server/Classes/Auth/Classes/IdentityUser.cs create mode 100644 gaseous-server/Classes/Auth/Classes/RoleStore.cs create mode 100644 gaseous-server/Classes/Auth/Classes/RoleTable.cs create mode 100644 gaseous-server/Classes/Auth/Classes/UserClaimsTable.cs create mode 100644 gaseous-server/Classes/Auth/Classes/UserLoginsTable.cs create mode 100644 gaseous-server/Classes/Auth/Classes/UserRoleTable.cs create mode 100644 gaseous-server/Classes/Auth/Classes/UserStore.cs create mode 100644 gaseous-server/Classes/Auth/Classes/UserTable.cs create mode 100644 gaseous-server/Classes/Auth/Models/AccountViewModels.cs create mode 100644 gaseous-server/Classes/Auth/Models/AddPhoneNumberViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/ChangePasswordViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/DisplayRecoveryCodesViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/IndexViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/ManageLoginsViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/ProfileViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/RemoveLoginViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/SecurityProfileViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/SendCodeViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/SetPasswordViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/UseRecoveryCodeViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/UserViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/VerifyAuthenticatorCodeViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/VerifyCodeViewModel.cs create mode 100644 gaseous-server/Classes/Auth/Models/VerifyPhoneNumberViewModel.cs create mode 100644 gaseous-server/Controllers/V1.0/AccountController.cs rename gaseous-server/Controllers/{ => V1.0}/BackgroundTasksController.cs (83%) rename gaseous-server/Controllers/{ => V1.0}/BiosController.cs (93%) rename gaseous-server/Controllers/{ => V1.0}/CollectionsController.cs (93%) rename gaseous-server/Controllers/{ => V1.0}/FilterController.cs (97%) rename gaseous-server/Controllers/{ => V1.0}/GamesController.cs (90%) rename gaseous-server/Controllers/{ => V1.0}/LibraryController.cs (91%) rename gaseous-server/Controllers/{ => V1.0}/LogsController.cs (83%) rename gaseous-server/Controllers/{ => V1.0}/PlatformMapsController.cs (94%) rename gaseous-server/Controllers/{ => V1.0}/PlatformsController.cs (95%) rename gaseous-server/Controllers/{ => V1.0}/RomsController.cs (95%) rename gaseous-server/Controllers/{ => V1.0}/SearchController.cs (94%) rename gaseous-server/Controllers/{ => V1.0}/SignaturesController.cs (96%) rename gaseous-server/Controllers/{ => V1.0}/SystemController.cs (80%) create mode 100644 gaseous-server/Controllers/V1.1/FirstSetupController.cs create mode 100644 gaseous-server/Controllers/V1.1/GamesController.cs create mode 100644 gaseous-server/Controllers/V1.1/RatingsController.cs create mode 100644 gaseous-server/Reference/OldAccountController.cs.bak create mode 100644 gaseous-server/Reference/OldManageController.cs.bak create mode 100644 gaseous-server/Support/Database/MySQL/gaseous-1005.sql create mode 100644 gaseous-server/wwwroot/images/LoginWallpaper.jpg create mode 100644 gaseous-server/wwwroot/images/tick.svg create mode 100644 gaseous-server/wwwroot/images/user.svg create mode 100644 gaseous-server/wwwroot/pages/dialogs/settingsuserdelete.html create mode 100644 gaseous-server/wwwroot/pages/dialogs/settingsuseredit.html create mode 100644 gaseous-server/wwwroot/pages/dialogs/settingsusernew.html create mode 100644 gaseous-server/wwwroot/pages/dialogs/userprofile.html create mode 100644 gaseous-server/wwwroot/pages/first.html create mode 100644 gaseous-server/wwwroot/pages/login.html create mode 100644 gaseous-server/wwwroot/pages/settings/users.html diff --git a/gaseous-server/.DS_Store b/gaseous-server/.DS_Store index af3f72ae65a0cbb4f670d15e0a4615fc76b66b13..e33e0ab12a16616eb33c6cbf4d8e8c14d652f8c1 100644 GIT binary patch literal 10244 zcmeHMO=uHA6n>ke*~BXJpjgzyLOm2LbWLKRD43?L7ZHlF_Rvb3HKC2&?1ua_NNLH* zf_fFbh^61mTnzb&=de|1gq(V&zJ{LAA{R8w@qfL zEB48<2aUUGJjKwMJGL7HjyBD0lUe2t8gmDYN7i_TqS5H+XHYn3X=YWa6i^EI6(G5L z2Mj?43Xp4?zYDD;cVxt}T?>6;N)%CdEsb9;^xs7ZsSF2YuxymH@cExpVYx_B8T`d+G(_M#$U8j~SI)w^# zDCP?YnVKj%dAE^q>rTE(eY30~9*@PRySf(_Q)a5qNS#S8^%;wU2@{_O6H80+*pZ(8 zvzMpm?ULi(CPP8ee4~Uz?E6l62cP(8#M2u6_|MH&i>UI^C#8+majG)+6KC1qDk`g= zGD%?WCuyp~FxX_((Yg1Y9YrsGM?VQ6vfB8uk{P^7S@}?{*$+mEEFm^VSW5j!Y&(&y z3l6T)3R)XK1$^?d4$YHyBLFF~fAG0`&Adg~2clb}*d6T|P1qo#iNYo1nMank#1bmc z<#v&q_U3&5mnHsI34MsO9)$7mfF|J)Miv&_5Z4+^JtMQrTg2Fp&65+>GGA-dPmJns z^~9TbPvUjJ7_O;V9JhCFNSmisjJuwH`E_SE+wm7;w?}y5vj_(;K3O4Ux;|>SYxtPN zUL&+EPUN(_^6};t&+}Wg2c~%{4 zRZw>cAu7Il|Lu!3`%UwqT3QFAJSwxlJf(i5Jw=BG{gCzI?)@Aj6Nx?}F<`dlAUW_G zzb?|K#5sth+;4OaJmVJU;NIP1y_=JC)l2<|Z(}e@oP)?Y`btXuNOM3Ts!$3j1(X6x z0j0pcQ6S7lYLN5)(cu68?;AbTK$QafQ2{M7k{!w5$hVJ-WD!DGVcU*U@y7Kc~5EGE3djkGi8}r}=;Vp8@oAK+HPYXZK>p(HpF delta 135 zcmZn(XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50D8dGk2ZB)qu~2NHo}wr_0|Nsi1A_nqLmopqL$PO0esWUI#*NDv>p?Q?3_%Qu z3?&Si$g=rKKpCJ021g*)`ws>{7KZAi^5TM|9I)ygNd-BX#U%y?*BF_YSyuu5=%;pof3xNzBYkEduMvOi2Z* zi3!ilOUW;H$}i1JDF$l}hDdO7a&X2ANK{vw7?|iNn3x*Z>L^rO8W{lDmPWO;oE)Oc z`qn}5**Up+`CVX#GcW>!01SAcGy_9Dgw+kC&_W?6-7q*gKeqs^fVEu@Q$=pRiwo4} z9PL}wV*Ujj1%(xwIl1{McvMNi0=*yu$vU$mWSvIqC@N)noapT7C%#-;=bVWdJ U0r{Z;LW8}tIYeXw^TY-g0J5)ozyJUM delta 88 zcmZoMXfc=|#>CJzu~2NHo}wrt0|NsP3otO`F{CpTmjxH)<>XH+RA*$|yns2KW%C7Q n5$4V89Q+(WEt?NAe`lV|FQUr{(sclc87ABCNNu%YdeLFLoncvLY&7?%cihH#=q6s2O zqjQ=a#}LyvpZAeArdFmw8T2XIss>RNPuUS!x8M+P2si{B0uBL(z`ub2?rh%DN8J08 z>qduwL*TzefS(T@I;RCidyjd9JoVV$jk24GS z)!*|g_S#1IY0wCx7t&3pjtV*_pY`|>Gv!UNGv{wbji%(i zZ4Ee$s8mvZrVr20PWAI2IU-805!H_2Hh0ZkKl9C%-ZQ@y22r?!6>eP;xUbL#-5$dJ z9e5`8TJDsful=#`XYaq6n3xf`KCL65blv7!Au8y3vP5jFjosW?p+0D>=xq<0UOmNhEU;dF3OshTdw%bKmqs%bl9c zQhwXf__QFRuXtt*ey-~nXe`XkisM^&%Tq?{4rNx7RuKi9uS5CtVkPv+W+^CzqW+O3t>sH7WL1Jk##4yN2DG zKd?KFA7gid?jgU|ZR>zD(JSlD5>l3JZ1N4Hl)h=%<>%Tm%^lb^%C)RwIc$2uT0+`8 z!R!B(qksQDVO}|N9Rd!4KS6*cOMa;c4SAJ~s`6UfLw|zK8<*=zDpW9tavW5Y^x<`MR_^-dFdd%8w>xlEN1865CoY7 m1OnVZ!WCr0#=`H+llf&FK~4bK!2+V0AZ`GQZI0)e!wdi?3LTdK diff --git a/gaseous-server/Classes/Auth/Classes/IdentityRole.cs b/gaseous-server/Classes/Auth/Classes/IdentityRole.cs new file mode 100644 index 0000000..64a2548 --- /dev/null +++ b/gaseous-server/Classes/Auth/Classes/IdentityRole.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Data; +using gaseous_server.Classes; +using Microsoft.AspNetCore.Identity; + +namespace Authentication +{ + /// + /// Class that implements the ASP.NET Identity + /// IRole interface + /// + public class ApplicationRole : IdentityRole + { + } +} diff --git a/gaseous-server/Classes/Auth/Classes/IdentityUser.cs b/gaseous-server/Classes/Auth/Classes/IdentityUser.cs new file mode 100644 index 0000000..e263b70 --- /dev/null +++ b/gaseous-server/Classes/Auth/Classes/IdentityUser.cs @@ -0,0 +1,15 @@ +using gaseous_server.Classes; +using Microsoft.AspNetCore.Identity; +using System; + +namespace Authentication +{ + /// + /// Class that implements the ASP.NET Identity + /// IUser interface + /// + public class ApplicationUser : IdentityUser + { + public SecurityProfileViewModel SecurityProfile { get; set; } + } +} diff --git a/gaseous-server/Classes/Auth/Classes/RoleStore.cs b/gaseous-server/Classes/Auth/Classes/RoleStore.cs new file mode 100644 index 0000000..3a80cb2 --- /dev/null +++ b/gaseous-server/Classes/Auth/Classes/RoleStore.cs @@ -0,0 +1,171 @@ +using System; +using System.Security.Claims; +using System.Threading.Tasks; +using gaseous_server.Classes; +using Microsoft.AspNetCore.Identity; +using MySqlConnector; + +namespace Authentication +{ + /// + /// Class that implements the key ASP.NET Identity role store iterfaces + /// + public class RoleStore : IQueryableRoleStore + { + private RoleTable roleTable; + public Database Database { get; private set; } + + public IQueryable Roles + { + get + { + List roles = roleTable.GetRoles(); + return roles.AsQueryable(); + } + } + + public RoleStore() + { + Database = new Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); + roleTable = new RoleTable(Database); + } + + /// + /// Constructor that takes a MySQLDatabase as argument + /// + /// + public RoleStore(Database database) + { + Database = database; + roleTable = new RoleTable(database); + } + + public Task CreateAsync(ApplicationRole role, CancellationToken cancellationToken) + { + if (role == null) + { + throw new ArgumentNullException("role"); + } + + roleTable.Insert(role); + + return Task.FromResult(IdentityResult.Success); + } + + public Task DeleteAsync(ApplicationRole role, CancellationToken cancellationToken) + { + if (role == null) + { + throw new ArgumentNullException("user"); + } + + roleTable.Delete(role.Id); + + return Task.FromResult(IdentityResult.Success); + } + + public Task FindByIdAsync(string roleId, CancellationToken cancellationToken) + { + ApplicationRole result = roleTable.GetRoleById(roleId) as ApplicationRole; + + return Task.FromResult(result); + } + + public Task RoleExistsAsync(string roleId, CancellationToken cancellationToken) + { + ApplicationRole? result = roleTable.GetRoleById(roleId) as ApplicationRole; + + if (result == null) + { + return Task.FromResult(false); + } + else + { + return Task.FromResult(true); + } + } + + public Task FindByNameAsync(string roleName, CancellationToken cancellationToken) + { + ApplicationRole? result = roleTable.GetRoleByName(roleName) as ApplicationRole; + + return Task.FromResult(result); + } + + public Task UpdateAsync(ApplicationRole role, CancellationToken cancellationToken) + { + if (role == null) + { + throw new ArgumentNullException("user"); + } + + roleTable.Update(role); + + return Task.FromResult(IdentityResult.Success); + } + + public void Dispose() + { + if (Database != null) + { + Database = null; + } + } + + public Task GetRoleIdAsync(ApplicationRole role, CancellationToken cancellationToken) + { + if (role != null) + { + return Task.FromResult(roleTable.GetRoleId(role.Name)); + } + + return Task.FromResult(null); + } + + public Task GetRoleNameAsync(ApplicationRole role, CancellationToken cancellationToken) + { + if (role != null) + { + return Task.FromResult(roleTable.GetRoleName(role.Id)); + } + + return Task.FromResult(null); + } + + public Task SetRoleNameAsync(ApplicationRole role, string? roleName, CancellationToken cancellationToken) + { + if (role == null) + { + throw new ArgumentNullException("role"); + } + + role.Name = roleName; + roleTable.Update(role); + + return Task.FromResult(IdentityResult.Success); + } + + public Task GetNormalizedRoleNameAsync(ApplicationRole role, CancellationToken cancellationToken) + { + if (role != null) + { + return Task.FromResult(roleTable.GetRoleName(role.Id)); + } + + return Task.FromResult(null); + } + + public Task SetNormalizedRoleNameAsync(ApplicationRole role, string? normalizedName, CancellationToken cancellationToken) + { + if (role == null) + { + throw new ArgumentNullException("role"); + } + + role.Name = normalizedName; + roleTable.Update(role); + + return Task.FromResult(IdentityResult.Success); + } + } +} diff --git a/gaseous-server/Classes/Auth/Classes/RoleTable.cs b/gaseous-server/Classes/Auth/Classes/RoleTable.cs new file mode 100644 index 0000000..b9f7d89 --- /dev/null +++ b/gaseous-server/Classes/Auth/Classes/RoleTable.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.Data; +using gaseous_server.Classes; +using Microsoft.AspNetCore.Identity; + +namespace Authentication +{ + /// + /// Class that represents the Role table in the MySQL Database + /// + public class RoleTable + { + private Database _database; + + /// + /// Constructor that takes a MySQLDatabase instance + /// + /// + public RoleTable(Database database) + { + _database = database; + } + + /// + /// Deltes a role from the Roles table + /// + /// The role Id + /// + public int Delete(string roleId) + { + string commandText = "Delete from Roles where Id = @id"; + Dictionary parameters = new Dictionary(); + parameters.Add("@id", roleId); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + + /// + /// Inserts a new Role in the Roles table + /// + /// The role's name + /// + public int Insert(ApplicationRole role) + { + string commandText = "Insert into Roles (Id, Name) values (@id, @name)"; + Dictionary parameters = new Dictionary(); + parameters.Add("@name", role.Name); + parameters.Add("@id", role.Id); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + + /// + /// Returns a role name given the roleId + /// + /// The role Id + /// Role name + public string? GetRoleName(string roleId) + { + string commandText = "Select Name from Roles where Id = @id"; + Dictionary parameters = new Dictionary(); + parameters.Add("@id", roleId); + + DataTable table = _database.ExecuteCMD(commandText, parameters); + + if (table.Rows.Count == 0) + { + return null; + } + else + { + return (string)table.Rows[0][0]; + } + } + + /// + /// Returns the role Id given a role name + /// + /// Role's name + /// Role's Id + public string? GetRoleId(string roleName) + { + string? roleId = null; + string commandText = "Select Id from Roles where Name = @name"; + Dictionary parameters = new Dictionary() { { "@name", roleName } }; + + DataTable result = _database.ExecuteCMD(commandText, parameters); + if (result.Rows.Count > 0) + { + return Convert.ToString(result.Rows[0][0]); + } + + return roleId; + } + + /// + /// Gets the ApplicationRole given the role Id + /// + /// + /// + public ApplicationRole? GetRoleById(string roleId) + { + var roleName = GetRoleName(roleId); + ApplicationRole? role = null; + + if(roleName != null) + { + role = new ApplicationRole(); + role.Id = roleId; + role.Name = roleName; + role.NormalizedName = roleName.ToUpper(); + } + + return role; + + } + + /// + /// Gets the ApplicationRole given the role name + /// + /// + /// + public ApplicationRole? GetRoleByName(string roleName) + { + var roleId = GetRoleId(roleName); + ApplicationRole role = null; + + if (roleId != null) + { + role = new ApplicationRole(); + role.Id = roleId; + role.Name = roleName; + role.NormalizedName = roleName.ToUpper(); + } + + return role; + } + + public int Update(ApplicationRole role) + { + string commandText = "Update Roles set Name = @name where Id = @id"; + Dictionary parameters = new Dictionary(); + parameters.Add("@id", role.Id); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + + public List GetRoles() + { + List roles = new List(); + + string commandText = "Select Name from Roles"; + + var rows = _database.ExecuteCMDDict(commandText); + foreach(Dictionary row in rows) + { + ApplicationRole role = (ApplicationRole)Activator.CreateInstance(typeof(ApplicationRole)); + role.Id = (string)row["Id"]; + role.Name = (string)row["Name"]; + role.NormalizedName = ((string)row["Name"]).ToUpper(); + roles.Add(role); + } + + return roles; + } + } +} diff --git a/gaseous-server/Classes/Auth/Classes/UserClaimsTable.cs b/gaseous-server/Classes/Auth/Classes/UserClaimsTable.cs new file mode 100644 index 0000000..5940e10 --- /dev/null +++ b/gaseous-server/Classes/Auth/Classes/UserClaimsTable.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Security.Claims; +using gaseous_server.Classes; +using Microsoft.AspNetCore.Identity; + +namespace Authentication +{ + /// + /// Class that represents the UserClaims table in the MySQL Database + /// + public class UserClaimsTable + { + private Database _database; + + /// + /// Constructor that takes a MySQLDatabase instance + /// + /// + public UserClaimsTable(Database database) + { + _database = database; + } + + /// + /// Returns a ClaimsIdentity instance given a userId + /// + /// The user's id + /// + public ClaimsIdentity FindByUserId(string userId) + { + ClaimsIdentity claims = new ClaimsIdentity(); + string commandText = "Select * from UserClaims where UserId = @userId"; + Dictionary parameters = new Dictionary() { { "@UserId", userId } }; + + var rows = _database.ExecuteCMD(commandText, parameters).Rows; + foreach (DataRow row in rows) + { + Claim claim = new Claim((string)row["ClaimType"], (string)row["ClaimValue"]); + claims.AddClaim(claim); + } + + return claims; + } + + /// + /// Deletes all claims from a user given a userId + /// + /// The user's id + /// + public int Delete(string userId) + { + string commandText = "Delete from UserClaims where UserId = @userId"; + Dictionary parameters = new Dictionary(); + parameters.Add("userId", userId); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + + /// + /// Inserts a new claim in UserClaims table + /// + /// User's claim to be added + /// User's id + /// + public int Insert(Claim userClaim, string userId) + { + string commandText = "Insert into UserClaims (ClaimValue, ClaimType, UserId) values (@value, @type, @userId)"; + Dictionary parameters = new Dictionary(); + parameters.Add("value", userClaim.Value); + parameters.Add("type", userClaim.Type); + parameters.Add("userId", userId); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + + /// + /// Deletes a claim from a user + /// + /// The user to have a claim deleted + /// A claim to be deleted from user + /// + public int Delete(IdentityUser user, Claim claim) + { + string commandText = "Delete from UserClaims where UserId = @userId and @ClaimValue = @value and ClaimType = @type"; + Dictionary parameters = new Dictionary(); + parameters.Add("userId", user.Id); + parameters.Add("value", claim.Value); + parameters.Add("type", claim.Type); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + } +} diff --git a/gaseous-server/Classes/Auth/Classes/UserLoginsTable.cs b/gaseous-server/Classes/Auth/Classes/UserLoginsTable.cs new file mode 100644 index 0000000..2837b36 --- /dev/null +++ b/gaseous-server/Classes/Auth/Classes/UserLoginsTable.cs @@ -0,0 +1,117 @@ +using gaseous_server.Classes; +using Microsoft.AspNetCore.Identity; +using System.Collections.Generic; +using System.Data; + +namespace Authentication +{ + /// + /// Class that represents the UserLogins table in the MySQL Database + /// + public class UserLoginsTable + { + private Database _database; + + /// + /// Constructor that takes a MySQLDatabase instance + /// + /// + public UserLoginsTable(Database database) + { + _database = database; + } + + /// + /// Deletes a login from a user in the UserLogins table + /// + /// User to have login deleted + /// Login to be deleted from user + /// + public int Delete(IdentityUser user, UserLoginInfo login) + { + string commandText = "Delete from UserLogins where UserId = @userId and LoginProvider = @loginProvider and ProviderKey = @providerKey"; + Dictionary parameters = new Dictionary(); + parameters.Add("UserId", user.Id); + parameters.Add("loginProvider", login.LoginProvider); + parameters.Add("providerKey", login.ProviderKey); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + + /// + /// Deletes all Logins from a user in the UserLogins table + /// + /// The user's id + /// + public int Delete(string userId) + { + string commandText = "Delete from UserLogins where UserId = @userId"; + Dictionary parameters = new Dictionary(); + parameters.Add("UserId", userId); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + + /// + /// Inserts a new login in the UserLogins table + /// + /// User to have new login added + /// Login to be added + /// + public int Insert(IdentityUser user, UserLoginInfo login) + { + string commandText = "Insert into UserLogins (LoginProvider, ProviderKey, UserId) values (@loginProvider, @providerKey, @userId)"; + Dictionary parameters = new Dictionary(); + parameters.Add("loginProvider", login.LoginProvider); + parameters.Add("providerKey", login.ProviderKey); + parameters.Add("userId", user.Id); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + + /// + /// Return a userId given a user's login + /// + /// The user's login info + /// + public string? FindUserIdByLogin(UserLoginInfo userLogin) + { + string commandText = "Select UserId from UserLogins where LoginProvider = @loginProvider and ProviderKey = @providerKey"; + Dictionary parameters = new Dictionary(); + parameters.Add("loginProvider", userLogin.LoginProvider); + parameters.Add("providerKey", userLogin.ProviderKey); + + DataTable table = _database.ExecuteCMD(commandText, parameters); + + if (table.Rows.Count == 0) + { + return null; + } + else + { + return (string)table.Rows[0][0]; + } + } + + /// + /// Returns a list of user's logins + /// + /// The user's id + /// + public List FindByUserId(string userId) + { + List logins = new List(); + string commandText = "Select * from UserLogins where UserId = @userId"; + Dictionary parameters = new Dictionary() { { "@userId", userId } }; + + var rows = _database.ExecuteCMD(commandText, parameters).Rows; + foreach (DataRow row in rows) + { + var login = new UserLoginInfo((string)row["LoginProvider"], (string)row["ProviderKey"], (string)row["LoginProvider"]); + logins.Add(login); + } + + return logins; + } + } +} diff --git a/gaseous-server/Classes/Auth/Classes/UserRoleTable.cs b/gaseous-server/Classes/Auth/Classes/UserRoleTable.cs new file mode 100644 index 0000000..14f8e2a --- /dev/null +++ b/gaseous-server/Classes/Auth/Classes/UserRoleTable.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Data; +using gaseous_server.Classes; +using Microsoft.AspNetCore.Identity; + +namespace Authentication +{ + /// + /// Class that represents the UserRoles table in the MySQL Database + /// + public class UserRolesTable + { + private Database _database; + + /// + /// Constructor that takes a MySQLDatabase instance + /// + /// + public UserRolesTable(Database database) + { + _database = database; + } + + /// + /// Returns a list of user's roles + /// + /// The user's id + /// + public List FindByUserId(string userId) + { + List roles = new List(); + string commandText = "Select Roles.Name from UserRoles, Roles where UserRoles.UserId = @userId and UserRoles.RoleId = Roles.Id"; + Dictionary parameters = new Dictionary(); + parameters.Add("@userId", userId); + + var rows = _database.ExecuteCMD(commandText, parameters).Rows; + foreach(DataRow row in rows) + { + roles.Add((string)row["Name"]); + } + + return roles; + } + + /// + /// Deletes all roles from a user in the UserRoles table + /// + /// The user's id + /// + public int Delete(string userId) + { + string commandText = "Delete from UserRoles where UserId = @userId"; + Dictionary parameters = new Dictionary(); + parameters.Add("UserId", userId); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + + public int DeleteUserFromRole(string userId, string roleId) + { + string commandText = "Delete from UserRoles where UserId = @userId and RoleId = @roleId"; + Dictionary parameters = new Dictionary(); + parameters.Add("userId", userId); + parameters.Add("roleId", roleId); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + + /// + /// Inserts a new role for a user in the UserRoles table + /// + /// The User + /// The Role's id + /// + public int Insert(IdentityUser user, string roleId) + { + string commandText = "Insert into UserRoles (UserId, RoleId) values (@userId, @roleId)"; + Dictionary parameters = new Dictionary(); + parameters.Add("userId", user.Id); + parameters.Add("roleId", roleId); + + return (int)_database.ExecuteNonQuery(commandText, parameters); + } + } +} diff --git a/gaseous-server/Classes/Auth/Classes/UserStore.cs b/gaseous-server/Classes/Auth/Classes/UserStore.cs new file mode 100644 index 0000000..348ebe5 --- /dev/null +++ b/gaseous-server/Classes/Auth/Classes/UserStore.cs @@ -0,0 +1,616 @@ +using System; +using System.Security.Claims; +using System.Threading.Tasks; +using gaseous_server.Classes; +using Microsoft.AspNetCore.Identity; +using MySqlConnector; + +namespace Authentication +{ + public class UserStore : + IUserStore, + IUserRoleStore, + IUserLoginStore, + IUserClaimStore, + IUserPasswordStore, + IUserSecurityStampStore, + IQueryableUserStore, + IUserEmailStore, + IUserPhoneNumberStore, + IUserTwoFactorStore, + IUserLockoutStore + { + private Database database; + + private UserTable userTable; + private RoleTable roleTable; + private UserRolesTable userRolesTable; + private UserLoginsTable userLoginsTable; + private UserClaimsTable userClaimsTable; + + public UserStore() + { + database = new Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); + userTable = new UserTable(database); + roleTable = new RoleTable(database); + userRolesTable = new UserRolesTable(database); + userLoginsTable = new UserLoginsTable(database); + userClaimsTable = new UserClaimsTable(database); + } + + public UserStore(Database database) + { + this.database = database; + userTable = new UserTable(database); + roleTable = new RoleTable(database); + userRolesTable = new UserRolesTable(database); + userLoginsTable = new UserLoginsTable(database); + userClaimsTable = new UserClaimsTable(database); + } + + public IQueryable Users + { + get + { + List users = userTable.GetUsers(); + return users.AsQueryable(); + } + } + + public Task AddClaimsAsync(ApplicationUser user, IEnumerable claims, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + if (claims == null) + { + throw new ArgumentNullException("user"); + } + + foreach (Claim claim in claims) + { + userClaimsTable.Insert(claim, user.Id); + } + + return Task.FromResult(null); + } + + public Task AddLoginAsync(ApplicationUser user, UserLoginInfo login, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + if (login == null) + { + throw new ArgumentNullException("login"); + } + + userLoginsTable.Insert(user, login); + + return Task.FromResult(null); + } + + public Task AddToRoleAsync(ApplicationUser user, string roleName, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + if (string.IsNullOrEmpty(roleName)) + { + throw new ArgumentException("Argument cannot be null or empty: roleName."); + } + + string roleId = roleTable.GetRoleId(roleName); + if (!string.IsNullOrEmpty(roleId)) + { + userRolesTable.Insert(user, roleId); + } + + return Task.FromResult(null); + } + + public Task CreateAsync(ApplicationUser user, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + userTable.Insert(user); + + return Task.FromResult(IdentityResult.Success); + } + + public Task DeleteAsync(ApplicationUser user, CancellationToken cancellationToken) + { + if (user != null) + { + userTable.Delete(user); + } + + return Task.FromResult(IdentityResult.Success); + } + + public void Dispose() + { + if (database != null) + { + database = null; + } + } + + public Task FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken) + { + if (String.IsNullOrEmpty(normalizedEmail)) + { + throw new ArgumentNullException("email"); + } + + ApplicationUser result = userTable.GetUserByEmail(normalizedEmail) as ApplicationUser; + if (result != null) + { + return Task.FromResult(result); + } + + return Task.FromResult(null); + } + + public Task FindByIdAsync(string userId, CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(userId)) + { + throw new ArgumentException("Null or empty argument: userId"); + } + + ApplicationUser result = userTable.GetUserById(userId) as ApplicationUser; + if (result != null) + { + return Task.FromResult(result); + } + + return Task.FromResult(null); + } + + public Task FindByLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken) + { + if (loginProvider == null || providerKey == null) + { + throw new ArgumentNullException("login"); + } + + UserLoginInfo login = new UserLoginInfo(loginProvider, providerKey, loginProvider); + + var userId = userLoginsTable.FindUserIdByLogin(login); + if (userId != null) + { + ApplicationUser user = userTable.GetUserById(userId) as ApplicationUser; + if (user != null) + { + return Task.FromResult(user); + } + } + + return Task.FromResult(null); + } + + public Task FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(normalizedUserName)) + { + throw new ArgumentException("Null or empty argument: normalizedUserName"); + } + + List result = userTable.GetUserByName(normalizedUserName) as List; + + // Should I throw if > 1 user? + if (result != null && result.Count == 1) + { + return Task.FromResult(result[0]); + } + + return Task.FromResult(null); + } + + public Task GetAccessFailedCountAsync(ApplicationUser user, CancellationToken cancellationToken) + { + return Task.FromResult(user.AccessFailedCount); + } + + public Task> GetClaimsAsync(ApplicationUser user, CancellationToken cancellationToken) + { + ClaimsIdentity identity = userClaimsTable.FindByUserId(user.Id); + + return Task.FromResult>(identity.Claims.ToList()); + } + + public Task GetEmailAsync(ApplicationUser user, CancellationToken cancellationToken) + { + return Task.FromResult(user.Email); + } + + public Task GetEmailConfirmedAsync(ApplicationUser user, CancellationToken cancellationToken) + { + return Task.FromResult(user.EmailConfirmed); + } + + public Task GetLockoutEnabledAsync(ApplicationUser user, CancellationToken cancellationToken) + { + return Task.FromResult(user.LockoutEnabled); + } + + public Task GetLockoutEndDateAsync(ApplicationUser user, CancellationToken cancellationToken) + { + if (user.LockoutEnd.HasValue) + { + return Task.FromResult((DateTimeOffset?)user.LockoutEnd.Value); + } + else + { + return Task.FromResult((DateTimeOffset?)new DateTimeOffset()); + } + } + + public Task> GetLoginsAsync(ApplicationUser user, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + List logins = userLoginsTable.FindByUserId(user.Id); + if (logins != null) + { + return Task.FromResult>(logins); + } + + return Task.FromResult>(null); + } + + public Task GetNormalizedEmailAsync(ApplicationUser user, CancellationToken cancellationToken) + { + return Task.FromResult(user.NormalizedEmail); + } + + public Task GetNormalizedUserNameAsync(ApplicationUser user, CancellationToken cancellationToken) + { + if (user != null) + { + return Task.FromResult(userTable.GetUserName(user.Id)); + } + + return Task.FromResult(null); + } + + public Task GetPasswordHashAsync(ApplicationUser user, CancellationToken cancellationToken) + { + if (user != null) + { + return Task.FromResult(userTable.GetPasswordHash(user.Id)); + } + + return Task.FromResult(null); + } + + public Task GetPhoneNumberAsync(ApplicationUser user, CancellationToken cancellationToken) + { + return Task.FromResult(user.PhoneNumber); + } + + public Task GetPhoneNumberConfirmedAsync(ApplicationUser user, CancellationToken cancellationToken) + { + return Task.FromResult(user.PhoneNumberConfirmed); + } + + public Task> GetRolesAsync(ApplicationUser user, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + List roles = userRolesTable.FindByUserId(user.Id); + { + if (roles != null) + { + return Task.FromResult>(roles); + } + } + + return Task.FromResult>(null); + } + + public Task GetSecurityStampAsync(ApplicationUser user, CancellationToken cancellationToken) + { + return Task.FromResult(user.SecurityStamp); + } + + public Task GetTwoFactorEnabledAsync(ApplicationUser user, CancellationToken cancellationToken) + { + return Task.FromResult(user.TwoFactorEnabled); + } + + public Task GetUserIdAsync(ApplicationUser user, CancellationToken cancellationToken) + { + if (user != null) + { + return Task.FromResult(userTable.GetUserId(user.NormalizedUserName)); + } + + return Task.FromResult(null); + } + + public Task GetUserNameAsync(ApplicationUser user, CancellationToken cancellationToken) + { + if (user != null) + { + //return Task.FromResult(userTable.GetUserName(user.Id)); + return Task.FromResult(user.UserName); + } + + return Task.FromResult(null); + } + + public Task> GetUsersForClaimAsync(Claim claim, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } + + public Task> GetUsersInRoleAsync(string roleName, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } + + public Task HasPasswordAsync(ApplicationUser user, CancellationToken cancellationToken) + { + var hasPassword = !string.IsNullOrEmpty(userTable.GetPasswordHash(user.Id)); + + return Task.FromResult(Boolean.Parse(hasPassword.ToString())); + } + + public Task IncrementAccessFailedCountAsync(ApplicationUser user, CancellationToken cancellationToken) + { + user.AccessFailedCount++; + userTable.Update(user); + + return Task.FromResult(user.AccessFailedCount); + } + + public Task IsInRoleAsync(ApplicationUser user, string roleName, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + if (string.IsNullOrEmpty(roleName)) + { + throw new ArgumentNullException("role"); + } + + List roles = userRolesTable.FindByUserId(user.Id); + { + if (roles != null) + { + foreach (string role in roles) + { + if (role.ToUpper() == roleName.ToUpper()) + { + return Task.FromResult(true); + } + } + } + } + + return Task.FromResult(false); + } + + public Task RemoveClaimsAsync(ApplicationUser user, IEnumerable claims, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + if (claims == null) + { + throw new ArgumentNullException("claim"); + } + + foreach (Claim claim in claims) + { + userClaimsTable.Delete(user, claim); + } + + return Task.FromResult(null); + } + + public Task RemoveFromRoleAsync(ApplicationUser user, string roleName, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + if (roleName == null) + { + throw new ArgumentNullException("role"); + } + + IdentityRole? role = roleTable.GetRoleByName(roleName); + + if (role != null) + { + userRolesTable.DeleteUserFromRole(user.Id, role.Id); + } + + return Task.FromResult(null); + } + + public Task RemoveLoginAsync(ApplicationUser user, string loginProvider, string providerKey, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + if (loginProvider == null || providerKey == null) + { + throw new ArgumentNullException("login"); + } + + UserLoginInfo login = new UserLoginInfo(loginProvider, providerKey, loginProvider); + + userLoginsTable.Delete(user, login); + + return Task.FromResult(null); + } + + public Task ReplaceClaimAsync(ApplicationUser user, Claim claim, Claim newClaim, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + if (claim == null || newClaim == null) + { + throw new ArgumentNullException("claim"); + } + + userClaimsTable.Delete(user, claim); + userClaimsTable.Insert(newClaim, user.Id); + + return Task.FromResult(null); + } + + public Task ResetAccessFailedCountAsync(ApplicationUser user, CancellationToken cancellationToken) + { + user.AccessFailedCount = 0; + userTable.Update(user); + + return Task.FromResult(0); + } + + public Task SetEmailAsync(ApplicationUser user, string? email, CancellationToken cancellationToken) + { + user.Email = email; + userTable.Update(user); + + return Task.FromResult(0); + } + + public Task SetEmailConfirmedAsync(ApplicationUser user, bool confirmed, CancellationToken cancellationToken) + { + user.EmailConfirmed = confirmed; + userTable.Update(user); + + return Task.FromResult(0); + } + + public Task SetLockoutEnabledAsync(ApplicationUser user, bool enabled, CancellationToken cancellationToken) + { + user.LockoutEnabled = enabled; + userTable.Update(user); + + return Task.FromResult(0); + } + + public Task SetLockoutEndDateAsync(ApplicationUser user, DateTimeOffset? lockoutEnd, CancellationToken cancellationToken) + { + user.LockoutEnd = lockoutEnd; + userTable.Update(user); + + return Task.FromResult(0); + } + + public Task SetNormalizedEmailAsync(ApplicationUser user, string? normalizedEmail, CancellationToken cancellationToken) + { + user.NormalizedEmail = normalizedEmail; + userTable.Update(user); + + return Task.FromResult(0); + } + + public Task SetNormalizedUserNameAsync(ApplicationUser user, string? normalizedName, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + user.NormalizedUserName = normalizedName; + userTable.Update(user); + + return Task.FromResult(IdentityResult.Success); + } + + public Task SetPasswordHashAsync(ApplicationUser user, string? passwordHash, CancellationToken cancellationToken) + { + user.PasswordHash = passwordHash; + + return Task.FromResult(null); + } + + public Task SetPhoneNumberAsync(ApplicationUser user, string? phoneNumber, CancellationToken cancellationToken) + { + user.PhoneNumber = phoneNumber; + userTable.Update(user); + + return Task.FromResult(0); + } + + public Task SetPhoneNumberConfirmedAsync(ApplicationUser user, bool confirmed, CancellationToken cancellationToken) + { + user.PhoneNumberConfirmed = confirmed; + userTable.Update(user); + + return Task.FromResult(0); + } + + public Task SetSecurityStampAsync(ApplicationUser user, string stamp, CancellationToken cancellationToken) + { + user.SecurityStamp = stamp; + + return Task.FromResult(0); + } + + public Task SetTwoFactorEnabledAsync(ApplicationUser user, bool enabled, CancellationToken cancellationToken) + { + user.TwoFactorEnabled = enabled; + userTable.Update(user); + + return Task.FromResult(0); + } + + public Task SetUserNameAsync(ApplicationUser user, string? userName, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + user.UserName = userName; + userTable.Update(user); + + return Task.FromResult(IdentityResult.Success); + } + + public Task UpdateAsync(ApplicationUser user, CancellationToken cancellationToken) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + userTable.Update(user); + + return Task.FromResult(IdentityResult.Success); + } + } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Classes/UserTable.cs b/gaseous-server/Classes/Auth/Classes/UserTable.cs new file mode 100644 index 0000000..ed5e496 --- /dev/null +++ b/gaseous-server/Classes/Auth/Classes/UserTable.cs @@ -0,0 +1,371 @@ +using System; +using System.Collections.Generic; +using System.Data; +using gaseous_server.Classes; +using Microsoft.AspNetCore.Identity; + +namespace Authentication +{ + /// + /// Class that represents the Users table in the MySQL Database + /// + public class UserTable + where TUser :ApplicationUser + { + private Database _database; + + /// + /// Constructor that takes a MySQLDatabase instance + /// + /// + public UserTable(Database database) + { + _database = database; + } + + /// + /// Returns the user's name given a user id + /// + /// + /// + public string? GetUserName(string userId) + { + string commandText = "Select NormalizedUserName from Users where Id = @id"; + Dictionary parameters = new Dictionary() { { "@id", userId } }; + + DataTable table = _database.ExecuteCMD(commandText, parameters); + + if (table.Rows.Count == 0) + { + return null; + } + else + { + return (string)table.Rows[0][0]; + } + } + + /// + /// Returns a User ID given a user name + /// + /// The user's name + /// + public string? GetUserId(string normalizedUserName) + { + string commandText = "Select Id from Users where NormalizedUserName = @name"; + Dictionary parameters = new Dictionary() { { "@name", normalizedUserName } }; + + DataTable table = _database.ExecuteCMD(commandText, parameters); + + if (table.Rows.Count == 0) + { + return null; + } + else + { + return (string)table.Rows[0][0]; + } + } + + /// + /// Returns an TUser given the user's id + /// + /// The user's id + /// + public TUser GetUserById(string userId) + { + TUser user = null; + string commandText = "Select * from Users where Id = @id"; + Dictionary parameters = new Dictionary() { { "@id", userId } }; + + var rows = _database.ExecuteCMDDict(commandText, parameters); + if (rows != null && rows.Count == 1) + { + Dictionary row = rows[0]; + user = (TUser)Activator.CreateInstance(typeof(TUser)); + user.Id = (string)row["Id"]; + user.UserName = (string?)row["UserName"]; + user.PasswordHash = (string?)(string.IsNullOrEmpty((string?)row["PasswordHash"]) ? null : row["PasswordHash"]); + user.SecurityStamp = (string?)(string.IsNullOrEmpty((string?)row["SecurityStamp"]) ? null : row["SecurityStamp"]); + user.ConcurrencyStamp = (string?)(string.IsNullOrEmpty((string?)row["ConcurrencyStamp"]) ? null : row["ConcurrencyStamp"]); + user.Email = (string?)(string.IsNullOrEmpty((string?)row["Email"]) ? null : row["Email"]); + user.EmailConfirmed = row["EmailConfirmed"] == "1" ? true:false; + user.PhoneNumber = (string?)(string.IsNullOrEmpty((string?)row["PhoneNumber"]) ? null : row["PhoneNumber"]); + user.PhoneNumberConfirmed = row["PhoneNumberConfirmed"] == "1" ? true : false; + user.NormalizedEmail = (string?)(string.IsNullOrEmpty((string?)row["NormalizedEmail"]) ? null : row["NormalizedEmail"]); + user.NormalizedUserName = (string?)(string.IsNullOrEmpty((string?)row["NormalizedUserName"]) ? null : row["NormalizedUserName"]); + user.LockoutEnabled = row["LockoutEnabled"] == "1" ? true : false; + user.LockoutEnd = string.IsNullOrEmpty((string?)row["LockoutEnd"]) ? DateTime.Now : DateTime.Parse((string?)row["LockoutEnd"]); + user.AccessFailedCount = string.IsNullOrEmpty((string?)row["AccessFailedCount"]) ? 0 : int.Parse((string?)row["AccessFailedCount"]); + user.TwoFactorEnabled = row["TwoFactorEnabled"] == "1" ? true:false; + user.SecurityProfile = GetSecurityProfile(user); + } + + return user; + } + + /// + /// Returns a list of TUser instances given a user name + /// + /// User's name + /// + public List GetUserByName(string normalizedUserName) + { + List users = new List(); + string commandText = "Select * from Users where NormalizedEmail = @name"; + Dictionary parameters = new Dictionary() { { "@name", normalizedUserName } }; + + var rows = _database.ExecuteCMDDict(commandText, parameters); + foreach(Dictionary row in rows) + { + TUser user = (TUser)Activator.CreateInstance(typeof(TUser)); + user.Id = (string)row["Id"]; + user.UserName = (string?)row["UserName"]; + user.PasswordHash = (string?)(string.IsNullOrEmpty((string?)row["PasswordHash"]) ? null : row["PasswordHash"]); + user.SecurityStamp = (string?)(string.IsNullOrEmpty((string?)row["SecurityStamp"]) ? null : row["SecurityStamp"]); + user.ConcurrencyStamp = (string?)(string.IsNullOrEmpty((string?)row["ConcurrencyStamp"]) ? null : row["ConcurrencyStamp"]); + user.Email = (string?)(string.IsNullOrEmpty((string?)row["Email"]) ? null : row["Email"]); + user.EmailConfirmed = row["EmailConfirmed"] == "1" ? true:false; + user.PhoneNumber = (string?)(string.IsNullOrEmpty((string?)row["PhoneNumber"]) ? null : row["PhoneNumber"]); + user.PhoneNumberConfirmed = row["PhoneNumberConfirmed"] == "1" ? true : false; + user.NormalizedEmail = (string?)(string.IsNullOrEmpty((string?)row["NormalizedEmail"]) ? null : row["NormalizedEmail"]); + user.NormalizedUserName = (string?)(string.IsNullOrEmpty((string?)row["NormalizedUserName"]) ? null : row["NormalizedUserName"]); + user.LockoutEnabled = row["LockoutEnabled"] == "1" ? true : false; + user.LockoutEnd = string.IsNullOrEmpty((string?)row["LockoutEnd"]) ? DateTime.Now : DateTime.Parse((string?)row["LockoutEnd"]); + user.AccessFailedCount = string.IsNullOrEmpty((string?)row["AccessFailedCount"]) ? 0 : int.Parse((string?)row["AccessFailedCount"]); + user.TwoFactorEnabled = row["TwoFactorEnabled"] == "1" ? true:false; + user.SecurityProfile = GetSecurityProfile(user); + users.Add(user); + } + + return users; + } + + public List GetUsers() + { + List users = new List(); + string commandText = "Select * from Users order by NormalizedUserName"; + + var rows = _database.ExecuteCMDDict(commandText); + foreach(Dictionary row in rows) + { + TUser user = (TUser)Activator.CreateInstance(typeof(TUser)); + user.Id = (string)row["Id"]; + user.UserName = (string?)row["UserName"]; + user.PasswordHash = (string?)(string.IsNullOrEmpty((string?)row["PasswordHash"]) ? null : row["PasswordHash"]); + user.SecurityStamp = (string?)(string.IsNullOrEmpty((string?)row["SecurityStamp"]) ? null : row["SecurityStamp"]); + user.ConcurrencyStamp = (string?)(string.IsNullOrEmpty((string?)row["ConcurrencyStamp"]) ? null : row["ConcurrencyStamp"]); + user.Email = (string?)(string.IsNullOrEmpty((string?)row["Email"]) ? null : row["Email"]); + user.EmailConfirmed = row["EmailConfirmed"] == "1" ? true:false; + user.PhoneNumber = (string?)(string.IsNullOrEmpty((string?)row["PhoneNumber"]) ? null : row["PhoneNumber"]); + user.PhoneNumberConfirmed = row["PhoneNumberConfirmed"] == "1" ? true : false; + user.NormalizedEmail = (string?)(string.IsNullOrEmpty((string?)row["NormalizedEmail"]) ? null : row["NormalizedEmail"]); + user.NormalizedUserName = (string?)(string.IsNullOrEmpty((string?)row["NormalizedUserName"]) ? null : row["NormalizedUserName"]); + user.LockoutEnabled = row["LockoutEnabled"] == "1" ? true : false; + user.LockoutEnd = string.IsNullOrEmpty((string?)row["LockoutEnd"]) ? DateTime.Now : DateTime.Parse((string?)row["LockoutEnd"]); + user.AccessFailedCount = string.IsNullOrEmpty((string?)row["AccessFailedCount"]) ? 0 : int.Parse((string?)row["AccessFailedCount"]); + user.TwoFactorEnabled = row["TwoFactorEnabled"] == "1" ? true:false; + user.SecurityProfile = GetSecurityProfile(user); + users.Add(user); + } + + return users; + } + + public TUser GetUserByEmail(string email) + { + List users = GetUserByName(email); + if (users.Count == 0) + { + return null; + } + else + { + return users[0]; + } + } + + /// + /// Return the user's password hash + /// + /// The user's id + /// + public string GetPasswordHash(string userId) + { + string commandText = "Select PasswordHash from Users where Id = @id"; + Dictionary parameters = new Dictionary(); + parameters.Add("@id", userId); + + DataTable table = _database.ExecuteCMD(commandText, parameters); + + if (table.Rows.Count == 0) + { + return null; + } + else + { + return (string)table.Rows[0][0]; + } + } + + /// + /// Sets the user's password hash + /// + /// + /// + /// + public int SetPasswordHash(string userId, string passwordHash) + { + string commandText = "Update Users set PasswordHash = @pwdHash where Id = @id"; + Dictionary parameters = new Dictionary(); + parameters.Add("@pwdHash", passwordHash); + parameters.Add("@id", userId); + + return _database.ExecuteCMD(commandText, parameters).Rows.Count; + } + + /// + /// Returns the user's security stamp + /// + /// + /// + public string GetSecurityStamp(string userId) + { + string commandText = "Select SecurityStamp from Users where Id = @id"; + Dictionary parameters = new Dictionary() { { "@id", userId } }; + DataTable table = _database.ExecuteCMD(commandText, parameters); + + if (table.Rows.Count == 0) + { + return null; + } + else + { + return (string)table.Rows[0][0]; + } + } + + /// + /// Inserts a new user in the Users table + /// + /// + /// + public int Insert(TUser user) + { + string commandText = @"Insert into Users (UserName, Id, PasswordHash, SecurityStamp, ConcurrencyStamp, Email, EmailConfirmed, PhoneNumber, PhoneNumberConfirmed, NormalizedEmail, NormalizedUserName, AccessFailedCount, LockoutEnabled, LockoutEnd, TwoFactorEnabled) values (@name, @id, @pwdHash, @SecStamp, @concurrencystamp, @email ,@emailconfirmed ,@phonenumber, @phonenumberconfirmed, @normalizedemail, @normalizedusername, @accesscount, @lockoutenabled, @lockoutenddate, @twofactorenabled);"; + Dictionary parameters = new Dictionary(); + parameters.Add("@name", user.UserName); + parameters.Add("@id", user.Id); + parameters.Add("@pwdHash", user.PasswordHash); + parameters.Add("@SecStamp", user.SecurityStamp); + parameters.Add("@concurrencystamp", user.ConcurrencyStamp); + parameters.Add("@email", user.Email); + parameters.Add("@emailconfirmed", user.EmailConfirmed); + parameters.Add("@phonenumber", user.PhoneNumber); + parameters.Add("@phonenumberconfirmed", user.PhoneNumberConfirmed); + parameters.Add("@normalizedemail", user.NormalizedEmail); + parameters.Add("@normalizedusername", user.NormalizedUserName); + parameters.Add("@accesscount", user.AccessFailedCount); + parameters.Add("@lockoutenabled", user.LockoutEnabled); + parameters.Add("@lockoutenddate", user.LockoutEnd); + parameters.Add("@twofactorenabled", user.TwoFactorEnabled); + + // set default security profile + SetSecurityProfile(user, new SecurityProfileViewModel()); + + return _database.ExecuteCMD(commandText, parameters).Rows.Count; + } + + /// + /// Deletes a user from the Users table + /// + /// The user's id + /// + private int Delete(string userId) + { + string commandText = "Delete from Users where Id = @userId"; + Dictionary parameters = new Dictionary(); + parameters.Add("@userId", userId); + + return _database.ExecuteCMD(commandText, parameters).Rows.Count; + } + + /// + /// Deletes a user from the Users table + /// + /// + /// + public int Delete(TUser user) + { + return Delete(user.Id); + } + + /// + /// Updates a user in the Users table + /// + /// + /// + public int Update(TUser user) + { + string commandText = @"Update Users set UserName = @userName, PasswordHash = @pwdHash, SecurityStamp = @secStamp, ConcurrencyStamp = @concurrencystamp, Email = @email, EmailConfirmed = @emailconfirmed, PhoneNumber = @phonenumber, PhoneNumberConfirmed = @phonenumberconfirmed, NormalizedEmail = @normalizedemail, NormalizedUserName = @normalizedusername, AccessFailedCount = @accesscount, LockoutEnabled = @lockoutenabled, LockoutEnd = @lockoutenddate, TwoFactorEnabled=@twofactorenabled WHERE Id = @userId;"; + Dictionary parameters = new Dictionary(); + parameters.Add("@userId", user.Id); + parameters.Add("@userName", user.UserName); + parameters.Add("@pwdHash", user.PasswordHash); + parameters.Add("@SecStamp", user.SecurityStamp); + parameters.Add("@concurrencystamp", user.ConcurrencyStamp); + parameters.Add("@email", user.Email); + parameters.Add("@emailconfirmed", user.EmailConfirmed); + parameters.Add("@phonenumber", user.PhoneNumber); + parameters.Add("@phonenumberconfirmed", user.PhoneNumberConfirmed); + parameters.Add("@normalizedemail", user.NormalizedEmail); + parameters.Add("@normalizedusername", user.NormalizedUserName); + parameters.Add("@accesscount", user.AccessFailedCount); + parameters.Add("@lockoutenabled", user.LockoutEnabled); + parameters.Add("@lockoutenddate", user.LockoutEnd); + parameters.Add("@twofactorenabled", user.TwoFactorEnabled); + + // set the security profile + SetSecurityProfile(user, user.SecurityProfile); + + return _database.ExecuteCMD(commandText, parameters).Rows.Count; + } + + private SecurityProfileViewModel GetSecurityProfile(TUser user) + { + string sql = "SELECT SecurityProfile FROM users WHERE Id=@Id;"; + Dictionary dbDict = new Dictionary(); + dbDict.Add("Id", user.Id); + + List> data = _database.ExecuteCMDDict(sql, dbDict); + if (data.Count == 0) + { + // no saved profile - return the default one + return new SecurityProfileViewModel(); + } + else + { + string? securityProfileString = (string?)data[0]["SecurityProfile"]; + if (securityProfileString != null && securityProfileString != "null") + { + SecurityProfileViewModel securityProfile = Newtonsoft.Json.JsonConvert.DeserializeObject(securityProfileString); + return securityProfile; + } + else + { + return new SecurityProfileViewModel(); + } + } + } + + private int SetSecurityProfile(TUser user, SecurityProfileViewModel securityProfile) + { + string commandText = "UPDATE users SET SecurityProfile=@SecurityProfile WHERE Id=@Id;"; + Dictionary parameters = new Dictionary(); + parameters.Add("Id", user.Id); + parameters.Add("SecurityProfile", Newtonsoft.Json.JsonConvert.SerializeObject(securityProfile)); + + return _database.ExecuteCMD(commandText, parameters).Rows.Count; + } + } +} diff --git a/gaseous-server/Classes/Auth/Models/AccountViewModels.cs b/gaseous-server/Classes/Auth/Models/AccountViewModels.cs new file mode 100644 index 0000000..a10bcef --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/AccountViewModels.cs @@ -0,0 +1,100 @@ +using System.ComponentModel.DataAnnotations; + +namespace Authentication +{ + public class ExternalLoginConfirmationViewModel + { + [Required] + [EmailAddress] + [Display(Name = "Email")] + public string Email { get; set; } + } + + public class ManageUserViewModel + { + [Required] + [DataType(DataType.Password)] + [Display(Name = "Current password")] + public string OldPassword { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "New password")] + public string NewPassword { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm new password")] + [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } + } + + public class LoginViewModel + { + [Required] + [EmailAddress] + [Display(Name = "Email")] + public string Email { get; set; } + + [Required] + [DataType(DataType.Password)] + [Display(Name = "Password")] + public string Password { get; set; } + + [Display(Name = "Remember me?")] + public bool RememberMe { get; set; } + } + + public class RegisterViewModel + { + [Required] + [DataType(DataType.Text)] + [Display(Name = "User name")] + public string UserName { get; set; } + + [Required] + [EmailAddress] + [Display(Name = "Email")] + public string Email { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "Password")] + public string Password { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm password")] + [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } + } + + public class ResetPasswordViewModel + { + [Required] + [EmailAddress] + [Display(Name = "Email")] + public string Email { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "Password")] + public string Password { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm password")] + [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } + + public string Code { get; set; } + } + + public class ForgotPasswordViewModel + { + [Required] + [EmailAddress] + [Display(Name = "Email")] + public string Email { get; set; } + } +} diff --git a/gaseous-server/Classes/Auth/Models/AddPhoneNumberViewModel.cs b/gaseous-server/Classes/Auth/Models/AddPhoneNumberViewModel.cs new file mode 100644 index 0000000..05aad08 --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/AddPhoneNumberViewModel.cs @@ -0,0 +1,14 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.ComponentModel.DataAnnotations; + +namespace Authentication; + +public class AddPhoneNumberViewModel +{ + [Required] + [Phone] + [Display(Name = "Phone number")] + public string PhoneNumber { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/ChangePasswordViewModel.cs b/gaseous-server/Classes/Auth/Models/ChangePasswordViewModel.cs new file mode 100644 index 0000000..e25188f --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/ChangePasswordViewModel.cs @@ -0,0 +1,25 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.ComponentModel.DataAnnotations; + +namespace Authentication; + +public class ChangePasswordViewModel +{ + [Required] + [DataType(DataType.Password)] + [Display(Name = "Current password")] + public string OldPassword { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 10)] + [DataType(DataType.Password)] + [Display(Name = "New password")] + public string NewPassword { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm new password")] + [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/DisplayRecoveryCodesViewModel.cs b/gaseous-server/Classes/Auth/Models/DisplayRecoveryCodesViewModel.cs new file mode 100644 index 0000000..d6245b5 --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/DisplayRecoveryCodesViewModel.cs @@ -0,0 +1,13 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.ComponentModel.DataAnnotations; + +namespace Authentication; + +public class DisplayRecoveryCodesViewModel +{ + [Required] + public IEnumerable Codes { get; set; } + +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/IndexViewModel.cs b/gaseous-server/Classes/Auth/Models/IndexViewModel.cs new file mode 100644 index 0000000..f7f2365 --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/IndexViewModel.cs @@ -0,0 +1,21 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.AspNetCore.Identity; + +namespace Authentication; + +public class IndexViewModel +{ + public bool HasPassword { get; set; } + + public IList Logins { get; set; } + + public string PhoneNumber { get; set; } + + public bool TwoFactor { get; set; } + + public bool BrowserRemembered { get; set; } + + public string AuthenticatorKey { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/ManageLoginsViewModel.cs b/gaseous-server/Classes/Auth/Models/ManageLoginsViewModel.cs new file mode 100644 index 0000000..c050be8 --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/ManageLoginsViewModel.cs @@ -0,0 +1,14 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Identity; + +namespace Authentication; + +public class ManageLoginsViewModel +{ + public IList CurrentLogins { get; set; } + + public IList OtherLogins { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/ProfileViewModel.cs b/gaseous-server/Classes/Auth/Models/ProfileViewModel.cs new file mode 100644 index 0000000..3a1843e --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/ProfileViewModel.cs @@ -0,0 +1,46 @@ +namespace Authentication +{ + public class ProfileBasicViewModel + { + public string UserId { get; set; } + public string UserName { get; set; } + public string EmailAddress { get; set; } + public List Roles { get; set; } + public SecurityProfileViewModel SecurityProfile { get; set; } + public string HighestRole { + get + { + string _highestRole = ""; + foreach (string role in Roles) + { + switch (role) + { + case "Admin": + // there is no higher + _highestRole = role; + break; + case "Gamer": + // only one high is Admin, so check for that + if (_highestRole != "Admin") + { + _highestRole = role; + } + break; + case "Player": + // make sure _highestRole isn't already set to Gamer or Admin + if (_highestRole != "Admin" && _highestRole != "Gamer") + { + _highestRole = role; + } + break; + default: + _highestRole = "Player"; + break; + } + } + + return _highestRole; + } + } + } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/RemoveLoginViewModel.cs b/gaseous-server/Classes/Auth/Models/RemoveLoginViewModel.cs new file mode 100644 index 0000000..4b1a09b --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/RemoveLoginViewModel.cs @@ -0,0 +1,10 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Authentication; + +public class RemoveLoginViewModel +{ + public string LoginProvider { get; set; } + public string ProviderKey { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/SecurityProfileViewModel.cs b/gaseous-server/Classes/Auth/Models/SecurityProfileViewModel.cs new file mode 100644 index 0000000..da493a2 --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/SecurityProfileViewModel.cs @@ -0,0 +1,18 @@ +using System.ComponentModel.DataAnnotations; + +namespace Authentication +{ + public class SecurityProfileViewModel + { + public AgeRestrictionItem AgeRestrictionPolicy { get; set; } = new AgeRestrictionItem{ + MaximumAgeRestriction = "Adult", + IncludeUnrated = true + }; + + public class AgeRestrictionItem + { + public string MaximumAgeRestriction { get; set; } + public bool IncludeUnrated { get; set; } + } + } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/SendCodeViewModel.cs b/gaseous-server/Classes/Auth/Models/SendCodeViewModel.cs new file mode 100644 index 0000000..fd1f011 --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/SendCodeViewModel.cs @@ -0,0 +1,17 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.AspNetCore.Mvc.Rendering; + +namespace Authentication; + +public class SendCodeViewModel +{ + public string SelectedProvider { get; set; } + + public ICollection Providers { get; set; } + + public string ReturnUrl { get; set; } + + public bool RememberMe { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/SetPasswordViewModel.cs b/gaseous-server/Classes/Auth/Models/SetPasswordViewModel.cs new file mode 100644 index 0000000..4b8a62c --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/SetPasswordViewModel.cs @@ -0,0 +1,20 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.ComponentModel.DataAnnotations; + +namespace Authentication; + +public class SetPasswordViewModel +{ + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "New password")] + public string NewPassword { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm new password")] + [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/UseRecoveryCodeViewModel.cs b/gaseous-server/Classes/Auth/Models/UseRecoveryCodeViewModel.cs new file mode 100644 index 0000000..f3ec77b --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/UseRecoveryCodeViewModel.cs @@ -0,0 +1,14 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.ComponentModel.DataAnnotations; + +namespace Authentication; + +public class UseRecoveryCodeViewModel +{ + [Required] + public string Code { get; set; } + + public string ReturnUrl { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/UserViewModel.cs b/gaseous-server/Classes/Auth/Models/UserViewModel.cs new file mode 100644 index 0000000..cedbb8a --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/UserViewModel.cs @@ -0,0 +1,47 @@ +namespace Authentication +{ + public class UserViewModel + { + public string Id { get; set; } + public string EmailAddress { get; set; } + public bool LockoutEnabled { get; set; } + public DateTimeOffset? LockoutEnd { get; set; } + public List Roles { get; set; } + public SecurityProfileViewModel SecurityProfile { get; set; } + public string HighestRole { + get + { + string _highestRole = ""; + foreach (string role in Roles) + { + switch (role) + { + case "Admin": + // there is no higher + _highestRole = role; + break; + case "Gamer": + // only one high is Admin, so check for that + if (_highestRole != "Admin") + { + _highestRole = role; + } + break; + case "Player": + // make sure _highestRole isn't already set to Gamer or Admin + if (_highestRole != "Admin" && _highestRole != "Gamer") + { + _highestRole = role; + } + break; + default: + _highestRole = "Player"; + break; + } + } + + return _highestRole; + } + } + } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/VerifyAuthenticatorCodeViewModel.cs b/gaseous-server/Classes/Auth/Models/VerifyAuthenticatorCodeViewModel.cs new file mode 100644 index 0000000..e1abe1c --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/VerifyAuthenticatorCodeViewModel.cs @@ -0,0 +1,20 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.ComponentModel.DataAnnotations; + +namespace Authentication; + +public class VerifyAuthenticatorCodeViewModel +{ + [Required] + public string Code { get; set; } + + public string ReturnUrl { get; set; } + + [Display(Name = "Remember this browser?")] + public bool RememberBrowser { get; set; } + + [Display(Name = "Remember me?")] + public bool RememberMe { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/VerifyCodeViewModel.cs b/gaseous-server/Classes/Auth/Models/VerifyCodeViewModel.cs new file mode 100644 index 0000000..44dec11 --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/VerifyCodeViewModel.cs @@ -0,0 +1,23 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.ComponentModel.DataAnnotations; + +namespace Authentication; + +public class VerifyCodeViewModel +{ + [Required] + public string Provider { get; set; } + + [Required] + public string Code { get; set; } + + public string ReturnUrl { get; set; } + + [Display(Name = "Remember this browser?")] + public bool RememberBrowser { get; set; } + + [Display(Name = "Remember me?")] + public bool RememberMe { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Auth/Models/VerifyPhoneNumberViewModel.cs b/gaseous-server/Classes/Auth/Models/VerifyPhoneNumberViewModel.cs new file mode 100644 index 0000000..0a7112f --- /dev/null +++ b/gaseous-server/Classes/Auth/Models/VerifyPhoneNumberViewModel.cs @@ -0,0 +1,17 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.ComponentModel.DataAnnotations; + +namespace Authentication; + +public class VerifyPhoneNumberViewModel +{ + [Required] + public string Code { get; set; } + + [Required] + [Phone] + [Display(Name = "Phone number")] + public string PhoneNumber { get; set; } +} \ No newline at end of file diff --git a/gaseous-server/Classes/Database.cs b/gaseous-server/Classes/Database.cs index 5b67b39..9266d94 100644 --- a/gaseous-server/Classes/Database.cs +++ b/gaseous-server/Classes/Database.cs @@ -147,6 +147,50 @@ namespace gaseous_server.Classes return _ExecuteCMD(Command, Parameters, Timeout, ConnectionString); } + public List> ExecuteCMDDict(string Command) + { + Dictionary dbDict = new Dictionary(); + return _ExecuteCMDDict(Command, dbDict, 30, ""); + } + + public List> ExecuteCMDDict(string Command, Dictionary Parameters) + { + return _ExecuteCMDDict(Command, Parameters, 30, ""); + } + + public List> ExecuteCMDDict(string Command, Dictionary Parameters, int Timeout = 30, string ConnectionString = "") + { + return _ExecuteCMDDict(Command, Parameters, Timeout, ConnectionString); + } + + private List> _ExecuteCMDDict(string Command, Dictionary Parameters, int Timeout = 30, string ConnectionString = "") + { + DataTable dataTable = _ExecuteCMD(Command, Parameters, Timeout, ConnectionString); + + // convert datatable to dictionary + List> rows = new List>(); + + foreach (DataRow dataRow in dataTable.Rows) + { + Dictionary row = new Dictionary(); + for (int i = 0; i < dataRow.Table.Columns.Count; i++) + { + string columnName = dataRow.Table.Columns[i].ColumnName; + if (dataRow[i] == System.DBNull.Value) + { + row.Add(columnName, null); + } + else + { + row.Add(columnName, dataRow[i].ToString()); + } + } + rows.Add(row); + } + + return rows; + } + private DataTable _ExecuteCMD(string Command, Dictionary Parameters, int Timeout = 30, string ConnectionString = "") { if (ConnectionString == "") { ConnectionString = _ConnectionString; } @@ -160,6 +204,35 @@ namespace gaseous_server.Classes } } + public int ExecuteNonQuery(string Command) + { + Dictionary dbDict = new Dictionary(); + return _ExecuteNonQuery(Command, dbDict, 30, ""); + } + + public int ExecuteNonQuery(string Command, Dictionary Parameters) + { + return _ExecuteNonQuery(Command, Parameters, 30, ""); + } + + public int ExecuteNonQuery(string Command, Dictionary Parameters, int Timeout = 30, string ConnectionString = "") + { + return _ExecuteNonQuery(Command, Parameters, Timeout, ConnectionString); + } + + private int _ExecuteNonQuery(string Command, Dictionary Parameters, int Timeout = 30, string ConnectionString = "") + { + if (ConnectionString == "") { ConnectionString = _ConnectionString; } + switch (_ConnectorType) + { + case databaseType.MySql: + MySQLServerConnector conn = new MySQLServerConnector(ConnectionString); + return (int)conn.ExecNonQuery(Command, Parameters, Timeout); + default: + return 0; + } + } + public void ExecuteTransactionCMD(List CommandList, int Timeout = 60) { object conn; @@ -284,6 +357,47 @@ namespace gaseous_server.Classes return RetTable; } + public int ExecNonQuery(string SQL, Dictionary< string, object> Parameters, int Timeout) + { + int result = 0; + + Logging.Log(Logging.LogType.Debug, "Database", "Connecting to database", null, true); + MySqlConnection conn = new MySqlConnection(DBConn); + conn.Open(); + + MySqlCommand cmd = new MySqlCommand + { + Connection = conn, + CommandText = SQL, + CommandTimeout = Timeout + }; + + foreach (string Parameter in Parameters.Keys) + { + cmd.Parameters.AddWithValue(Parameter, Parameters[Parameter]); + } + + try + { + Logging.Log(Logging.LogType.Debug, "Database", "Executing sql: '" + SQL + "'", null, true); + if (Parameters.Count > 0) + { + string dictValues = string.Join(";", Parameters.Select(x => string.Join("=", x.Key, x.Value))); + Logging.Log(Logging.LogType.Debug, "Database", "Parameters: " + dictValues, null, true); + } + result = cmd.ExecuteNonQuery(); + } catch (Exception ex) { + Logging.Log(Logging.LogType.Critical, "Database", "Error while executing '" + SQL + "'", ex); + Trace.WriteLine("Error executing " + SQL); + Trace.WriteLine("Full exception: " + ex.ToString()); + } + + Logging.Log(Logging.LogType.Debug, "Database", "Closing database connection", null, true); + conn.Close(); + + return result; + } + public void TransactionExecCMD(List> Parameters, int Timeout) { var conn = new MySqlConnection(DBConn); diff --git a/gaseous-server/Classes/Metadata/AgeRating.cs b/gaseous-server/Classes/Metadata/AgeRating.cs index 1960874..d761fc6 100644 --- a/gaseous-server/Classes/Metadata/AgeRating.cs +++ b/gaseous-server/Classes/Metadata/AgeRating.cs @@ -1,5 +1,6 @@ using System; using System.Reflection; +using System.Text.Json.Serialization; using IGDB; using IGDB.Models; @@ -151,6 +152,202 @@ namespace gaseous_server.Classes.Metadata public AgeRatingTitle RatingTitle { get; set; } public string[] Descriptions { get; set; } } + + public class AgeGroups + { + public AgeGroups() + { + + } + + public static Dictionary> AgeGroupings + { + get + { + return new Dictionary>{ + { + "Adult", new List{ Adult_Item, Mature_Item, Teen_Item, Child_Item } + }, + { + "Mature", new List{ Mature_Item, Teen_Item, Child_Item } + }, + { + "Teen", new List{ Teen_Item, Child_Item } + }, + { + "Child", new List{ Child_Item } + } + }; + } + } + + public static Dictionary AgeGroupingsFlat + { + get + { + return new Dictionary{ + { + "Adult", Adult_Item + }, + { + "Mature", Mature_Item + }, + { + "Teen", Teen_Item + }, + { + "Child", Child_Item + } + }; + } + } + + public static List ClassificationBoards + { + get + { + ClassificationBoardItem boardItem = new ClassificationBoardItem{ + Board = AgeRatingCategory.ACB, + Classifications = new List{ + AgeRatingTitle.ACB_G, AgeRatingTitle.ACB_M, AgeRatingTitle.ACB_MA15, AgeRatingTitle.ACB_R18, AgeRatingTitle.ACB_RC + } + }; + + return new List{ + new ClassificationBoardItem{ + Board = AgeRatingCategory.ACB, + Classifications = new List{ + AgeRatingTitle.ACB_G, + AgeRatingTitle.ACB_M, + AgeRatingTitle.ACB_MA15, + AgeRatingTitle.ACB_R18, + AgeRatingTitle.ACB_RC + } + }, + new ClassificationBoardItem{ + Board = AgeRatingCategory.CERO, + Classifications = new List{ + AgeRatingTitle.CERO_A, + AgeRatingTitle.CERO_B, + AgeRatingTitle.CERO_C, + AgeRatingTitle.CERO_D, + AgeRatingTitle.CERO_Z + } + }, + new ClassificationBoardItem{ + Board = AgeRatingCategory.CLASS_IND, + Classifications = new List{ + AgeRatingTitle.CLASS_IND_L, + AgeRatingTitle.CLASS_IND_Ten, + AgeRatingTitle.CLASS_IND_Twelve, + AgeRatingTitle.CLASS_IND_Fourteen, + AgeRatingTitle.CLASS_IND_Sixteen, + AgeRatingTitle.CLASS_IND_Eighteen + } + } + }; + } + } + + readonly static AgeGroupItem Adult_Item = new AgeGroupItem{ + ACB = new List{ AgeRatingTitle.ACB_R18, AgeRatingTitle.ACB_RC }, + CERO = new List{ AgeRatingTitle.CERO_Z }, + CLASS_IND = new List{ AgeRatingTitle.CLASS_IND_Eighteen }, + ESRB = new List{ AgeRatingTitle.RP, AgeRatingTitle.AO }, + GRAC = new List{ AgeRatingTitle.GRAC_Eighteen }, + PEGI = new List{ AgeRatingTitle.Eighteen}, + USK = new List{ AgeRatingTitle.USK_18} + }; + + readonly static AgeGroupItem Mature_Item = new AgeGroupItem{ + ACB = new List{ AgeRatingTitle.ACB_M, AgeRatingTitle.ACB_MA15 }, + CERO = new List{ AgeRatingTitle.CERO_C, AgeRatingTitle.CERO_D }, + CLASS_IND = new List{ AgeRatingTitle.CLASS_IND_Sixteen }, + ESRB = new List{ AgeRatingTitle.M }, + GRAC = new List{ AgeRatingTitle.GRAC_Fifteen }, + PEGI = new List{ AgeRatingTitle.Sixteen}, + USK = new List{ AgeRatingTitle.USK_16} + }; + + readonly static AgeGroupItem Teen_Item = new AgeGroupItem{ + ACB = new List{ AgeRatingTitle.ACB_PG }, + CERO = new List{ AgeRatingTitle.CERO_B }, + CLASS_IND = new List{ AgeRatingTitle.CLASS_IND_Twelve, AgeRatingTitle.CLASS_IND_Fourteen }, + ESRB = new List{ AgeRatingTitle.T }, + GRAC = new List{ AgeRatingTitle.GRAC_Twelve }, + PEGI = new List{ AgeRatingTitle.Twelve}, + USK = new List{ AgeRatingTitle.USK_12} + }; + + readonly static AgeGroupItem Child_Item = new AgeGroupItem{ + ACB = new List{ AgeRatingTitle.ACB_G }, + CERO = new List{ AgeRatingTitle.CERO_A }, + CLASS_IND = new List{ AgeRatingTitle.CLASS_IND_L, AgeRatingTitle.CLASS_IND_Ten }, + ESRB = new List{ AgeRatingTitle.E, AgeRatingTitle.E10 }, + GRAC = new List{ AgeRatingTitle.GRAC_All }, + PEGI = new List{ AgeRatingTitle.Three, AgeRatingTitle.Seven}, + USK = new List{ AgeRatingTitle.USK_0, AgeRatingTitle.USK_6} + }; + + public class AgeGroupItem + { + public List ACB { get; set; } + public List CERO { get; set; } + public List CLASS_IND { get; set; } + public List ESRB { get; set; } + public List GRAC { get; set; } + public List PEGI { get; set; } + public List USK { get; set; } + + [JsonIgnore] + [Newtonsoft.Json.JsonIgnore] + public List AgeGroupItemValues + { + get + { + List values = new List(); + { + foreach (AgeRatingTitle ageRatingTitle in ACB) + { + values.Add((long)ageRatingTitle); + } + foreach (AgeRatingTitle ageRatingTitle in CERO) + { + values.Add((long)ageRatingTitle); + } + foreach (AgeRatingTitle ageRatingTitle in CLASS_IND) + { + values.Add((long)ageRatingTitle); + } + foreach (AgeRatingTitle ageRatingTitle in ESRB) + { + values.Add((long)ageRatingTitle); + } + foreach (AgeRatingTitle ageRatingTitle in GRAC) + { + values.Add((long)ageRatingTitle); + } + foreach (AgeRatingTitle ageRatingTitle in PEGI) + { + values.Add((long)ageRatingTitle); + } + foreach (AgeRatingTitle ageRatingTitle in USK) + { + values.Add((long)ageRatingTitle); + } + } + + return values; + } + } + } + + public class ClassificationBoardItem + { + public IGDB.Models.AgeRatingCategory Board { get; set; } + public List Classifications { get; set; } + } + } } } diff --git a/gaseous-server/Controllers/V1.0/AccountController.cs b/gaseous-server/Controllers/V1.0/AccountController.cs new file mode 100644 index 0000000..9f072ae --- /dev/null +++ b/gaseous-server/Controllers/V1.0/AccountController.cs @@ -0,0 +1,396 @@ +using System.Security.Claims; +using System.Text; +using Authentication; +using gaseous_server.Classes; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.UI.Services; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Rendering; + +namespace gaseous_server.Controllers +{ + [ApiController] + [Route("api/v{version:apiVersion}/[controller]")] + [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize] + public class AccountController : Controller + { + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + private readonly IEmailSender _emailSender; + private readonly ILogger _logger; + + public AccountController( + UserManager userManager, + SignInManager signInManager, + IEmailSender emailSender, + ILoggerFactory loggerFactory) + { + _userManager = userManager; + _signInManager = signInManager; + _emailSender = emailSender; + _logger = loggerFactory.CreateLogger(); + } + + [HttpPost] + [AllowAnonymous] + [Route("Login")] + public async Task Login(LoginViewModel model) + { + if (ModelState.IsValid) + { + // This doesn't count login failures towards account lockout + // To enable password failures to trigger account lockout, set lockoutOnFailure: true + var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false); + if (result.Succeeded) + { + Logging.Log(Logging.LogType.Information, "Login", model.Email + " has logged in, from IP: " + HttpContext.Connection.RemoteIpAddress?.ToString()); + return Ok(result.ToString()); + } + // if (result.RequiresTwoFactor) + // { + // return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); + // } + if (result.IsLockedOut) + { + Logging.Log(Logging.LogType.Warning, "Login", model.Email + " was unable to login due to a locked account. Login attempt from IP: " + HttpContext.Connection.RemoteIpAddress?.ToString()); + return Unauthorized(); + } + else + { + Logging.Log(Logging.LogType.Critical, "Login", "An unknown error occurred during login by " + model.Email + ". Login attempt from IP: " + HttpContext.Connection.RemoteIpAddress?.ToString()); + return Unauthorized(); + } + } + + // If we got this far, something failed, redisplay form + Logging.Log(Logging.LogType.Critical, "Login", "An unknown error occurred during login by " + model.Email + ". Login attempt from IP: " + HttpContext.Connection.RemoteIpAddress?.ToString()); + return Unauthorized(); + } + + [HttpPost] + [Route("LogOff")] + public async Task LogOff() + { + var userName = User.FindFirstValue(ClaimTypes.Name); + await _signInManager.SignOutAsync(); + if (userName != null) + { + Logging.Log(Logging.LogType.Information, "Login", userName + " has logged out"); + } + return Ok(); + } + + [HttpGet] + [Route("Profile/Basic")] + [Authorize] + public async Task ProfileBasic() + { + ProfileBasicViewModel profile = new ProfileBasicViewModel(); + profile.UserId = User.FindFirstValue(ClaimTypes.NameIdentifier); + ApplicationUser user = await _userManager.FindByIdAsync(profile.UserId); + profile.UserName = _userManager.GetUserName(HttpContext.User); + profile.EmailAddress = await _userManager.GetEmailAsync(user); + profile.Roles = new List(await _userManager.GetRolesAsync(user)); + profile.SecurityProfile = user.SecurityProfile; + profile.Roles.Sort(); + + return Ok(profile); + } + + [HttpGet] + [Route("Profile/Basic/profile.js")] + [ApiExplorerSettings(IgnoreApi = true)] + [AllowAnonymous] + public async Task ProfileBasicFile() + { + var user = await _userManager.GetUserAsync(User); + if (user != null) + { + ProfileBasicViewModel profile = new ProfileBasicViewModel(); + profile.UserId = User.FindFirstValue(ClaimTypes.NameIdentifier); + profile.UserName = _userManager.GetUserName(HttpContext.User); + profile.EmailAddress = await _userManager.GetEmailAsync(user); + profile.Roles = new List(await _userManager.GetRolesAsync(user)); + profile.SecurityProfile = user.SecurityProfile; + profile.Roles.Sort(); + + string profileString = "var userProfile = " + Newtonsoft.Json.JsonConvert.SerializeObject(profile, Newtonsoft.Json.Formatting.Indented) + ";"; + + byte[] bytes = Encoding.UTF8.GetBytes(profileString); + return File(bytes, "text/javascript"); + } + else + { + string profileString = "var userProfile = null;"; + + byte[] bytes = Encoding.UTF8.GetBytes(profileString); + return File(bytes, "text/javascript"); + } + } + + [HttpPost] + [Route("ChangePassword")] + [Authorize] + public async Task ChangePassword(ChangePasswordViewModel model) + { + if (ModelState.IsValid) + { + var user = await _userManager.GetUserAsync(User); + if (user == null) + { + return RedirectToAction("Login"); + } + + // ChangePasswordAsync changes the user password + var result = await _userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword); + + // The new password did not meet the complexity rules or + // the current password is incorrect. Add these errors to + // the ModelState and rerender ChangePassword view + if (!result.Succeeded) + { + foreach (var error in result.Errors) + { + ModelState.AddModelError(string.Empty, error.Description); + } + return Unauthorized(result); + } + + // Upon successfully changing the password refresh sign-in cookie + await _signInManager.RefreshSignInAsync(user); + return Ok(); + } + + return NotFound(); + } + + [HttpGet] + [Route("Users")] + [Authorize(Roles = "Admin")] + public async Task GetAllUsers() + { + List users = new List(); + + foreach (ApplicationUser rawUser in _userManager.Users) + { + UserViewModel user = new UserViewModel(); + user.Id = rawUser.Id; + user.EmailAddress = rawUser.NormalizedEmail.ToLower(); + user.LockoutEnabled = rawUser.LockoutEnabled; + user.LockoutEnd = rawUser.LockoutEnd; + user.SecurityProfile = rawUser.SecurityProfile; + + // get roles + ApplicationUser? aUser = await _userManager.FindByIdAsync(rawUser.Id); + if (aUser != null) + { + IList aUserRoles = await _userManager.GetRolesAsync(aUser); + user.Roles = aUserRoles.ToList(); + + user.Roles.Sort(); + } + + users.Add(user); + } + + return Ok(users); + } + + [HttpPost] + [Route("Users")] + [Authorize(Roles = "Admin")] + public async Task NewUser(RegisterViewModel model) + { + if (ModelState.IsValid) + { + ApplicationUser user = new ApplicationUser + { + UserName = model.UserName, + NormalizedUserName = model.UserName.ToUpper(), + Email = model.Email, + NormalizedEmail = model.Email.ToUpper() + }; + var result = await _userManager.CreateAsync(user, model.Password); + if (result.Succeeded) + { + // add new users to the player role + await _userManager.AddToRoleAsync(user, "Player"); + + Logging.Log(Logging.LogType.Information, "User Management", User.FindFirstValue(ClaimTypes.Name) + " created user " + model.Email + " with password."); + + return Ok(result); + } + else + { + return Ok(result); + } + } + else + { + return NotFound(); + } + } + + [HttpGet] + [Route("Users/{UserId}")] + [Authorize(Roles = "Admin")] + public async Task GetUser(string UserId) + { + ApplicationUser? rawUser = await _userManager.FindByIdAsync(UserId); + + if (rawUser != null) + { + UserViewModel user = new UserViewModel(); + user.Id = rawUser.Id; + user.EmailAddress = rawUser.NormalizedEmail.ToLower(); + user.LockoutEnabled = rawUser.LockoutEnabled; + user.LockoutEnd = rawUser.LockoutEnd; + user.SecurityProfile = rawUser.SecurityProfile; + + // get roles + IList aUserRoles = await _userManager.GetRolesAsync(rawUser); + user.Roles = aUserRoles.ToList(); + + user.Roles.Sort(); + + return Ok(user); + } + else + { + return NotFound(); + } + } + + [HttpDelete] + [Route("Users/{UserId}")] + [Authorize(Roles = "Admin")] + public async Task DeleteUser(string UserId) + { + // get user + ApplicationUser? user = await _userManager.FindByIdAsync(UserId); + + if (user == null) + { + return NotFound(); + } + else + { + await _userManager.DeleteAsync(user); + Logging.Log(Logging.LogType.Information, "User Management", User.FindFirstValue(ClaimTypes.Name) + " deleted user " + user.Email); + return Ok(); + } + } + + [HttpPost] + [Route("Users/{UserId}/Roles")] + [Authorize(Roles = "Admin")] + public async Task SetUserRoles(string UserId, string RoleName) + { + ApplicationUser? user = await _userManager.FindByIdAsync(UserId); + + if (user != null) + { + // get roles + List userRoles = (await _userManager.GetRolesAsync(user)).ToList(); + + // delete all roles + foreach (string role in userRoles) + { + if ((new string[] { "Admin", "Gamer", "Player" }).Contains(role) ) + { + await _userManager.RemoveFromRoleAsync(user, role); + } + } + + // add only requested roles + switch (RoleName) + { + case "Admin": + await _userManager.AddToRoleAsync(user, "Admin"); + await _userManager.AddToRoleAsync(user, "Gamer"); + await _userManager.AddToRoleAsync(user, "Player"); + break; + case "Gamer": + await _userManager.AddToRoleAsync(user, "Gamer"); + await _userManager.AddToRoleAsync(user, "Player"); + break; + case "Player": + await _userManager.AddToRoleAsync(user, "Player"); + break; + default: + await _userManager.AddToRoleAsync(user, RoleName); + break; + } + + return Ok(); + } + else + { + return NotFound(); + } + } + + [HttpPost] + [Route("Users/{UserId}/SecurityProfile")] + [Authorize(Roles = "Admin")] + public async Task SetUserSecurityProfile(string UserId, SecurityProfileViewModel securityProfile) + { + if (ModelState.IsValid) + { + ApplicationUser? user = await _userManager.FindByIdAsync(UserId); + + if (user != null) + { + user.SecurityProfile = securityProfile; + await _userManager.UpdateAsync(user); + + return Ok(); + } + else + { + return NotFound(); + } + } + else + { + return NotFound(); + } + } + + [HttpPost] + [Route("Users/{UserId}/Password")] + [Authorize(Roles = "Admin")] + public async Task ResetPassword(string UserId, SetPasswordViewModel model) + { + if (ModelState.IsValid) + { + // we can reset the users password + ApplicationUser? user = await _userManager.FindByIdAsync(UserId); + if (user != null) + { + string resetToken = await _userManager.GeneratePasswordResetTokenAsync(user); + IdentityResult passwordChangeResult = await _userManager.ResetPasswordAsync(user, resetToken, model.NewPassword); + if (passwordChangeResult.Succeeded == true) + { + return Ok(); + } + else + { + return Ok(passwordChangeResult); + } + } + else + { + return NotFound(); + } + } + else + { + return NotFound(); + } + } + } +} \ No newline at end of file diff --git a/gaseous-server/Controllers/BackgroundTasksController.cs b/gaseous-server/Controllers/V1.0/BackgroundTasksController.cs similarity index 83% rename from gaseous-server/Controllers/BackgroundTasksController.cs rename to gaseous-server/Controllers/V1.0/BackgroundTasksController.cs index 3eec9a5..877bbd1 100644 --- a/gaseous-server/Controllers/BackgroundTasksController.cs +++ b/gaseous-server/Controllers/V1.0/BackgroundTasksController.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace gaseous_server.Controllers @@ -9,9 +10,12 @@ namespace gaseous_server.Controllers [ApiController] [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize(Roles = "Admin,Gamer,Player")] public class BackgroundTasksController : Controller { [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public List GetQueue() @@ -20,10 +24,12 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{TaskType}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] + [Authorize(Roles = "Admin")] public ActionResult ForceRun(ProcessQueue.QueueItemType TaskType, Boolean ForceRun) { foreach (ProcessQueue.QueueItem qi in ProcessQueue.QueueItems) diff --git a/gaseous-server/Controllers/BiosController.cs b/gaseous-server/Controllers/V1.0/BiosController.cs similarity index 93% rename from gaseous-server/Controllers/BiosController.cs rename to gaseous-server/Controllers/V1.0/BiosController.cs index caa0fbc..732b2f8 100644 --- a/gaseous-server/Controllers/BiosController.cs +++ b/gaseous-server/Controllers/V1.0/BiosController.cs @@ -4,6 +4,7 @@ using System.IO.Compression; using System.Linq; using System.Threading.Tasks; using gaseous_server.Classes; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace gaseous_server.Controllers @@ -11,9 +12,12 @@ namespace gaseous_server.Controllers [ApiController] [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize] public class BiosController : Controller { [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public List GetBios() @@ -22,6 +26,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{PlatformId}")] [ProducesResponseType(StatusCodes.Status200OK)] @@ -31,8 +36,10 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpHead] [Route("zip/{PlatformId}")] [ProducesResponseType(typeof(FileStreamResult), StatusCodes.Status200OK)] @@ -66,8 +73,10 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpHead] [Route("{PlatformId}/{BiosName}")] [ProducesResponseType(typeof(FileStreamResult), StatusCodes.Status200OK)] diff --git a/gaseous-server/Controllers/CollectionsController.cs b/gaseous-server/Controllers/V1.0/CollectionsController.cs similarity index 93% rename from gaseous-server/Controllers/CollectionsController.cs rename to gaseous-server/Controllers/V1.0/CollectionsController.cs index 64c6ef3..c05a227 100644 --- a/gaseous-server/Controllers/CollectionsController.cs +++ b/gaseous-server/Controllers/V1.0/CollectionsController.cs @@ -4,6 +4,7 @@ using System.IO.Compression; using System.Linq; using System.Threading.Tasks; using gaseous_server.Classes; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace gaseous_server.Controllers @@ -11,6 +12,8 @@ namespace gaseous_server.Controllers [ApiController] [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize] public class CollectionsController : Controller { /// @@ -18,6 +21,7 @@ namespace gaseous_server.Controllers /// /// [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public List GetCollections() @@ -32,6 +36,7 @@ namespace gaseous_server.Controllers /// Set to true to begin the collection build process /// [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{CollectionId}")] [ProducesResponseType(typeof(Classes.Collections.CollectionItem), StatusCodes.Status200OK)] @@ -59,6 +64,7 @@ namespace gaseous_server.Controllers /// /// [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{CollectionId}/Roms")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] @@ -82,8 +88,10 @@ namespace gaseous_server.Controllers /// /// [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPost] [Route("Preview")] + [Authorize(Roles = "Admin,Gamer")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] public ActionResult GetCollectionRomsPreview(Classes.Collections.CollectionItem Item) @@ -104,6 +112,7 @@ namespace gaseous_server.Controllers /// /// [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{CollectionId}/Roms/Zip")] [ProducesResponseType(typeof(FileStreamResult), StatusCodes.Status200OK)] @@ -138,7 +147,9 @@ namespace gaseous_server.Controllers /// /// [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPost] + [Authorize(Roles = "Admin,Gamer")] [ProducesResponseType(typeof(Classes.Collections.CollectionItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] public ActionResult NewCollection(Classes.Collections.CollectionItem Item) @@ -160,8 +171,10 @@ namespace gaseous_server.Controllers /// /// [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPatch] [Route("{CollectionId}")] + [Authorize(Roles = "Admin,Gamer")] [ProducesResponseType(typeof(Classes.Collections.CollectionItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] public ActionResult EditCollection(long CollectionId, Classes.Collections.CollectionItem Item) @@ -183,7 +196,9 @@ namespace gaseous_server.Controllers /// /// [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPatch] + [Authorize(Roles = "Admin,Gamer")] [Route("{CollectionId}/AlwaysInclude")] [ProducesResponseType(typeof(Classes.Collections.CollectionItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] @@ -218,7 +233,9 @@ namespace gaseous_server.Controllers /// /// [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpDelete] + [Authorize(Roles = "Admin,Gamer")] [Route("{CollectionId}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] diff --git a/gaseous-server/Controllers/FilterController.cs b/gaseous-server/Controllers/V1.0/FilterController.cs similarity index 97% rename from gaseous-server/Controllers/FilterController.cs rename to gaseous-server/Controllers/V1.0/FilterController.cs index cb90796..c83947a 100644 --- a/gaseous-server/Controllers/FilterController.cs +++ b/gaseous-server/Controllers/V1.0/FilterController.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Threading.Tasks; using gaseous_server.Classes; using IGDB.Models; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -12,10 +13,13 @@ namespace gaseous_server.Controllers { [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize] [ApiController] public class FilterController : ControllerBase { [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] //[ResponseCache(CacheProfileName = "5Minute")] diff --git a/gaseous-server/Controllers/GamesController.cs b/gaseous-server/Controllers/V1.0/GamesController.cs similarity index 90% rename from gaseous-server/Controllers/GamesController.cs rename to gaseous-server/Controllers/V1.0/GamesController.cs index f7553cb..65085ef 100644 --- a/gaseous-server/Controllers/GamesController.cs +++ b/gaseous-server/Controllers/V1.0/GamesController.cs @@ -9,6 +9,7 @@ using System.Threading.Tasks; using gaseous_server.Classes; using gaseous_server.Classes.Metadata; using IGDB.Models; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.CodeAnalysis.Scripting; @@ -18,6 +19,8 @@ namespace gaseous_server.Controllers { [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize] [ApiController] public class GamesController : ControllerBase { @@ -36,7 +39,7 @@ namespace gaseous_server.Controllers bool sortdescending = false) { - return Ok(GetGames(name, platform, genre, gamemode, playerperspective, theme, minrating, maxrating, sortdescending)); + return Ok(GetGames(name, platform, genre, gamemode, playerperspective, theme, minrating, maxrating, "Adult", true, true, sortdescending)); } public static List GetGames( @@ -48,6 +51,9 @@ namespace gaseous_server.Controllers string theme = "", int minrating = -1, int maxrating = -1, + string ratinggroup = "Adult", + bool includenullrating = true, + bool sortbynamethe = false, bool sortdescending = false) { string whereClause = ""; @@ -170,6 +176,52 @@ namespace gaseous_server.Controllers whereClauses.Add(tempVal); } + if (ratinggroup.Length > 0) + { + List AgeClassificationsList = new List(); + foreach (string ratingGroup in ratinggroup.Split(',')) + { + if (AgeGroups.AgeGroupings.ContainsKey(ratingGroup)) + { + List ageGroups = AgeGroups.AgeGroupings[ratingGroup]; + foreach (AgeGroups.AgeGroupItem ageGroup in ageGroups) + { + AgeClassificationsList.AddRange(ageGroup.AgeGroupItemValues); + } + } + } + + if (AgeClassificationsList.Count > 0) + { + tempVal = "(view_AgeRatings.Rating IN ("; + for (int i = 0; i < AgeClassificationsList.Count; i++) + { + if (i > 0) + { + tempVal += ", "; + } + string themeLabel = "@Rating" + i; + tempVal += themeLabel; + whereParams.Add(themeLabel, AgeClassificationsList[i]); + } + tempVal += ")"; + + tempVal += " OR "; + + if (includenullrating == true) + { + tempVal += "view_AgeRatings.Rating IS NULL"; + } + else + { + tempVal += "view_AgeRatings.Rating IS NOT NULL"; + } + tempVal += ")"; + + whereClauses.Add(tempVal); + } + } + // build where clause if (whereClauses.Count > 0) { @@ -199,14 +251,21 @@ namespace gaseous_server.Controllers } // order by clause - string orderByClause = "ORDER BY `Name` ASC"; + string orderByField = "Name"; + if (sortbynamethe == true) + { + orderByField = "NameThe"; + } + string orderByClause = "ORDER BY `" + orderByField + "` ASC"; if (sortdescending == true) { - orderByClause = "ORDER BY `Name` DESC"; + orderByClause = "ORDER BY `" + orderByField + "` DESC"; } Database db = new Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); - string sql = "SELECT DISTINCT Games_Roms.GameId AS ROMGameId, Game.* FROM Games_Roms LEFT JOIN Game ON Game.Id = Games_Roms.GameId LEFT JOIN Relation_Game_Genres ON Game.Id = Relation_Game_Genres.GameId LEFT JOIN Relation_Game_GameModes ON Game.Id = Relation_Game_GameModes.GameId LEFT JOIN Relation_Game_PlayerPerspectives ON Game.Id = Relation_Game_PlayerPerspectives.GameId LEFT JOIN Relation_Game_Themes ON Game.Id = Relation_Game_Themes.GameId " + whereClause + " " + havingClause + " " + orderByClause; + //string sql = "SELECT DISTINCT Games_Roms.GameId AS ROMGameId, Game.* FROM Games_Roms LEFT JOIN Game ON Game.Id = Games_Roms.GameId LEFT JOIN Relation_Game_Genres ON Game.Id = Relation_Game_Genres.GameId LEFT JOIN Relation_Game_GameModes ON Game.Id = Relation_Game_GameModes.GameId LEFT JOIN Relation_Game_PlayerPerspectives ON Game.Id = Relation_Game_PlayerPerspectives.GameId LEFT JOIN Relation_Game_Themes ON Game.Id = Relation_Game_Themes.GameId " + whereClause + " " + havingClause + " " + orderByClause; + + string sql = "SELECT DISTINCT Games_Roms.GameId AS ROMGameId, Game.*, case when Game.`Name` like 'The %' then CONCAT(trim(substr(Game.`Name` from 4)), ', The') else Game.`Name` end as NameThe FROM Games_Roms LEFT JOIN Game ON Game.Id = Games_Roms.GameId LEFT JOIN Relation_Game_Genres ON Game.Id = Relation_Game_Genres.GameId LEFT JOIN Relation_Game_GameModes ON Game.Id = Relation_Game_GameModes.GameId LEFT JOIN Relation_Game_PlayerPerspectives ON Game.Id = Relation_Game_PlayerPerspectives.GameId LEFT JOIN Relation_Game_Themes ON Game.Id = Relation_Game_Themes.GameId LEFT JOIN (SELECT Relation_Game_AgeRatings.GameId, AgeRating.* FROM Relation_Game_AgeRatings JOIN AgeRating ON Relation_Game_AgeRatings.AgeRatingsId = AgeRating.Id) view_AgeRatings ON Game.Id = view_AgeRatings.GameId " + whereClause + " " + havingClause + " " + orderByClause; List RetVal = new List(); @@ -221,6 +280,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}")] [ProducesResponseType(typeof(Game), StatusCodes.Status200OK)] @@ -248,6 +308,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/alternativename")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] @@ -280,6 +341,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/agerating")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] @@ -312,6 +374,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/agerating/{RatingId}/image")] [ProducesResponseType(typeof(FileContentResult), StatusCodes.Status200OK)] @@ -392,6 +455,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/artwork")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] @@ -422,6 +486,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/artwork/{ArtworkId}")] [ProducesResponseType(typeof(Artwork), StatusCodes.Status200OK)] @@ -457,6 +522,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/artwork/{ArtworkId}/image")] [ProducesResponseType(typeof(FileStreamResult), StatusCodes.Status200OK)] @@ -512,6 +578,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/cover")] [ProducesResponseType(typeof(Cover), StatusCodes.Status200OK)] @@ -546,6 +613,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/cover/image")] [ProducesResponseType(typeof(FileStreamResult), StatusCodes.Status200OK)] @@ -586,6 +654,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/genre")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] @@ -623,6 +692,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/companies")] [ProducesResponseType(typeof(List>), StatusCodes.Status200OK)] @@ -667,6 +737,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/companies/{CompanyId}")] [ProducesResponseType(typeof(Dictionary), StatusCodes.Status200OK)] @@ -709,6 +780,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/companies/{CompanyId}/image")] [ProducesResponseType(typeof(FileStreamResult), StatusCodes.Status200OK)] @@ -753,6 +825,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/roms")] [ProducesResponseType(typeof(Classes.Roms.GameRomObject), StatusCodes.Status200OK)] @@ -773,6 +846,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/roms/{RomId}")] [ProducesResponseType(typeof(Classes.Roms.GameRomItem), StatusCodes.Status200OK)] @@ -801,7 +875,9 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPatch] + [Authorize(Roles = "Admin,Gamer")] [Route("{GameId}/roms/{RomId}")] [ProducesResponseType(typeof(Classes.Roms.GameRomItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] @@ -829,7 +905,9 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpDelete] + [Authorize(Roles = "Admin,Gamer")] [Route("{GameId}/roms/{RomId}")] [ProducesResponseType(typeof(Classes.Roms.GameRomItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] @@ -857,8 +935,10 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpHead] [Route("{GameId}/roms/{RomId}/file")] [ProducesResponseType(typeof(FileStreamResult), StatusCodes.Status200OK)] @@ -894,8 +974,10 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpHead] [Route("{GameId}/roms/{RomId}/{FileName}")] [ProducesResponseType(typeof(FileStreamResult), StatusCodes.Status200OK)] @@ -931,6 +1013,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/romgroup/{RomGroupId}")] [ProducesResponseType(typeof(Classes.RomMediaGroup.GameRomMediaGroupItem), StatusCodes.Status200OK)] @@ -959,7 +1042,9 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPost] + [Authorize(Roles = "Admin,Gamer")] [Route("{GameId}/romgroup")] [ProducesResponseType(typeof(Classes.RomMediaGroup.GameRomMediaGroupItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] @@ -986,7 +1071,9 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPatch] + [Authorize(Roles = "Admin,Gamer")] [Route("{GameId}/romgroup/{RomId}")] [ProducesResponseType(typeof(Classes.RomMediaGroup.GameRomMediaGroupItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] @@ -1014,7 +1101,9 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpDelete] + [Authorize(Roles = "Admin,Gamer")] [Route("{GameId}/romgroup/{RomGroupId}")] [ProducesResponseType(typeof(Classes.RomMediaGroup.GameRomMediaGroupItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] @@ -1042,8 +1131,10 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpHead] [Route("{GameId}/romgroup/{RomGroupId}/file")] [Route("{GameId}/romgroup/{RomGroupId}/{filename}")] @@ -1089,6 +1180,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("search")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] @@ -1127,6 +1219,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/screenshots")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] @@ -1157,6 +1250,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/screenshots/{ScreenshotId}")] [ProducesResponseType(typeof(Screenshot), StatusCodes.Status200OK)] @@ -1190,6 +1284,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/screenshots/{ScreenshotId}/image")] [ProducesResponseType(typeof(FileStreamResult), StatusCodes.Status200OK)] @@ -1233,6 +1328,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{GameId}/videos")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] diff --git a/gaseous-server/Controllers/LibraryController.cs b/gaseous-server/Controllers/V1.0/LibraryController.cs similarity index 91% rename from gaseous-server/Controllers/LibraryController.cs rename to gaseous-server/Controllers/V1.0/LibraryController.cs index 37c44c2..fe5981e 100644 --- a/gaseous-server/Controllers/LibraryController.cs +++ b/gaseous-server/Controllers/V1.0/LibraryController.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO.Compression; using System.Linq; using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace gaseous_server.Controllers @@ -10,9 +11,12 @@ namespace gaseous_server.Controllers [ApiController] [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize(Roles = "Admin")] public class LibraryController : Controller { [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] public ActionResult GetLibraries() @@ -21,6 +25,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet("{LibraryId}")] [ProducesResponseType(typeof(GameLibrary.LibraryItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] @@ -37,6 +42,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPost] [ProducesResponseType(typeof(GameLibrary.LibraryItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] @@ -58,6 +64,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpDelete("{LibraryId}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] diff --git a/gaseous-server/Controllers/LogsController.cs b/gaseous-server/Controllers/V1.0/LogsController.cs similarity index 83% rename from gaseous-server/Controllers/LogsController.cs rename to gaseous-server/Controllers/V1.0/LogsController.cs index 8b536db..e9e00a9 100644 --- a/gaseous-server/Controllers/LogsController.cs +++ b/gaseous-server/Controllers/V1.0/LogsController.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using gaseous_server.Classes; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace gaseous_server.Controllers @@ -10,9 +11,12 @@ namespace gaseous_server.Controllers [ApiController] [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize(Roles = "Admin")] public class LogsController : Controller { [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public List Logs(long? StartIndex, int PageNumber = 1, int PageSize = 100) diff --git a/gaseous-server/Controllers/PlatformMapsController.cs b/gaseous-server/Controllers/V1.0/PlatformMapsController.cs similarity index 94% rename from gaseous-server/Controllers/PlatformMapsController.cs rename to gaseous-server/Controllers/V1.0/PlatformMapsController.cs index f124e65..7d5f055 100644 --- a/gaseous-server/Controllers/PlatformMapsController.cs +++ b/gaseous-server/Controllers/V1.0/PlatformMapsController.cs @@ -12,15 +12,19 @@ using IGDB.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.CodeAnalysis.Scripting; +using Microsoft.AspNetCore.Authorization; namespace gaseous_server.Controllers { [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] [ApiController] + [Authorize] public class PlatformMapsController : Controller { [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] public ActionResult GetPlatformMap(bool ResetToDefault = false) @@ -34,6 +38,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{PlatformId}")] [ProducesResponseType(typeof(PlatformMapping.PlatformMapItem), StatusCodes.Status200OK)] @@ -60,10 +65,12 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPost] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] [RequestSizeLimit(long.MaxValue)] [DisableRequestSizeLimit, RequestFormLimits(MultipartBodyLengthLimit = long.MaxValue, ValueLengthLimit = int.MaxValue)] + [Authorize(Roles = "Admin")] public async Task UploadPlatformMap(List files) { Guid sessionid = Guid.NewGuid(); @@ -115,6 +122,7 @@ namespace gaseous_server.Controllers } // [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPost] // [Route("{PlatformId}")] // [ProducesResponseType(typeof(PlatformMapping.PlatformMapItem), StatusCodes.Status200OK)] @@ -143,10 +151,12 @@ namespace gaseous_server.Controllers // } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPatch] [Route("{PlatformId}")] [ProducesResponseType(typeof(PlatformMapping.PlatformMapItem), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] + [Authorize(Roles = "Admin")] public ActionResult EditPlatformMap(long PlatformId, PlatformMapping.PlatformMapItem Map) { try diff --git a/gaseous-server/Controllers/PlatformsController.cs b/gaseous-server/Controllers/V1.0/PlatformsController.cs similarity index 95% rename from gaseous-server/Controllers/PlatformsController.cs rename to gaseous-server/Controllers/V1.0/PlatformsController.cs index 9cbed4f..2cd370e 100644 --- a/gaseous-server/Controllers/PlatformsController.cs +++ b/gaseous-server/Controllers/V1.0/PlatformsController.cs @@ -9,6 +9,7 @@ using gaseous_server.Classes; using gaseous_server.Classes.Metadata; using gaseous_server.Models; using IGDB.Models; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.CodeAnalysis.Scripting; @@ -17,10 +18,13 @@ namespace gaseous_server.Controllers { [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize] [ApiController] public class PlatformsController : Controller { [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] public ActionResult Platform() @@ -46,6 +50,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{PlatformId}")] [ProducesResponseType(typeof(Platform), StatusCodes.Status200OK)] @@ -72,6 +77,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{PlatformId}/platformlogo")] [ProducesResponseType(typeof(PlatformLogo), StatusCodes.Status200OK)] @@ -105,6 +111,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("{PlatformId}/platformlogo/image")] [ProducesResponseType(typeof(FileStreamResult), StatusCodes.Status200OK)] diff --git a/gaseous-server/Controllers/RomsController.cs b/gaseous-server/Controllers/V1.0/RomsController.cs similarity index 95% rename from gaseous-server/Controllers/RomsController.cs rename to gaseous-server/Controllers/V1.0/RomsController.cs index a1d2574..e2129d8 100644 --- a/gaseous-server/Controllers/RomsController.cs +++ b/gaseous-server/Controllers/V1.0/RomsController.cs @@ -9,6 +9,7 @@ using System.Threading.Tasks; using gaseous_server.Classes; using gaseous_server.Classes.Metadata; using IGDB.Models; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.CodeAnalysis.Scripting; @@ -18,11 +19,15 @@ namespace gaseous_server.Controllers { [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize] [ApiController] public class RomsController : ControllerBase { [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpPost] + [Authorize(Roles = "Admin,Gamer")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] [RequestSizeLimit(long.MaxValue)] [DisableRequestSizeLimit, RequestFormLimits(MultipartBodyLengthLimit = long.MaxValue, ValueLengthLimit = int.MaxValue)] diff --git a/gaseous-server/Controllers/SearchController.cs b/gaseous-server/Controllers/V1.0/SearchController.cs similarity index 94% rename from gaseous-server/Controllers/SearchController.cs rename to gaseous-server/Controllers/V1.0/SearchController.cs index d221295..2321fa6 100644 --- a/gaseous-server/Controllers/SearchController.cs +++ b/gaseous-server/Controllers/V1.0/SearchController.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using gaseous_server.Classes; using IGDB; using IGDB.Models; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using static gaseous_server.Classes.Metadata.Games; @@ -14,6 +15,8 @@ namespace gaseous_server.Controllers [ApiController] [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize] public class SearchController : Controller { private static IGDBClient igdb = new IGDBClient( @@ -23,6 +26,7 @@ namespace gaseous_server.Controllers ); [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("Platform")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] @@ -45,6 +49,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("Game")] [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] diff --git a/gaseous-server/Controllers/SignaturesController.cs b/gaseous-server/Controllers/V1.0/SignaturesController.cs similarity index 96% rename from gaseous-server/Controllers/SignaturesController.cs rename to gaseous-server/Controllers/V1.0/SignaturesController.cs index d9d72f6..5eb0e07 100644 --- a/gaseous-server/Controllers/SignaturesController.cs +++ b/gaseous-server/Controllers/V1.0/SignaturesController.cs @@ -6,6 +6,7 @@ using System.Security.Cryptography; using System.Threading.Tasks; using gaseous_server.Classes; using gaseous_signature_parser.models.RomSignatureObject; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; // For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 @@ -15,6 +16,8 @@ namespace gaseous_server.Controllers [ApiController] [Route("api/v{version:apiVersion}/[controller]/[action]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize] public class SignaturesController : ControllerBase { /// @@ -22,6 +25,7 @@ namespace gaseous_server.Controllers /// /// Number of sources, publishers, games, and rom signatures in the database [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public Models.Signatures_Status Status() @@ -30,6 +34,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public List GetSignature(string md5 = "", string sha1 = "") @@ -44,6 +49,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public List GetByTosecName(string TosecName = "") diff --git a/gaseous-server/Controllers/SystemController.cs b/gaseous-server/Controllers/V1.0/SystemController.cs similarity index 80% rename from gaseous-server/Controllers/SystemController.cs rename to gaseous-server/Controllers/V1.0/SystemController.cs index 768827d..cba567b 100644 --- a/gaseous-server/Controllers/SystemController.cs +++ b/gaseous-server/Controllers/V1.0/SystemController.cs @@ -4,8 +4,11 @@ using System.Data; using System.Linq; using System.Reflection; using System.Text; +using System.Text.Json; using System.Threading.Tasks; using gaseous_server.Classes; +using gaseous_server.Classes.Metadata; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace gaseous_server.Controllers @@ -13,9 +16,12 @@ namespace gaseous_server.Controllers [ApiController] [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] + [ApiVersion("1.1")] + [Authorize] public class SystemController : Controller { [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public SystemInfo GetSystemStatus() @@ -56,6 +62,7 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("Version")] [ProducesResponseType(StatusCodes.Status200OK)] @@ -64,13 +71,30 @@ namespace gaseous_server.Controllers } [MapToApiVersion("1.0")] + [MapToApiVersion("1.1")] [HttpGet] [Route("VersionFile")] + [AllowAnonymous] [ProducesResponseType(StatusCodes.Status200OK)] public FileContentResult GetSystemVersionAsFile() { Database db = new Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); + + // get age ratings dictionary + Dictionary AgeRatingsStrings = new Dictionary(); + foreach(IGDB.Models.AgeRatingTitle ageRatingTitle in Enum.GetValues(typeof(IGDB.Models.AgeRatingTitle)) ) + { + AgeRatingsStrings.Add((int)ageRatingTitle, ageRatingTitle.ToString()); + } + string ver = "var AppVersion = \"" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + "\";" + Environment.NewLine + - "var DBSchemaVersion = \"" + db.GetDatabaseSchemaVersion() + "\";"; + "var DBSchemaVersion = \"" + db.GetDatabaseSchemaVersion() + "\";" + Environment.NewLine + + "var FirstRunStatus = " + Config.ReadSetting("FirstRunStatus", "0") + ";" + Environment.NewLine + + "var AgeRatingStrings = " + JsonSerializer.Serialize(AgeRatingsStrings, new JsonSerializerOptions{ + WriteIndented = true + }) + ";" + Environment.NewLine + + "var AgeRatingGroups = " + JsonSerializer.Serialize(AgeRatings.AgeGroups.AgeGroupingsFlat, new JsonSerializerOptions{ + WriteIndented = true + }) + ";"; byte[] bytes = Encoding.UTF8.GetBytes(ver); return File(bytes, "text/javascript"); } diff --git a/gaseous-server/Controllers/V1.1/FirstSetupController.cs b/gaseous-server/Controllers/V1.1/FirstSetupController.cs new file mode 100644 index 0000000..fa5f67b --- /dev/null +++ b/gaseous-server/Controllers/V1.1/FirstSetupController.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Text.Json; +using System.Threading.Tasks; +using Authentication; +using gaseous_server.Classes; +using gaseous_server.Classes.Metadata; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; + +namespace gaseous_server.Controllers +{ + [ApiController] + [Route("api/v{version:apiVersion}/[controller]")] + [ApiVersion("1.1")] + [Authorize] + public class FirstSetupController : Controller + { + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + + public FirstSetupController( + UserManager userManager, + SignInManager signInManager) + { + _userManager = userManager; + _signInManager = signInManager; + } + + [MapToApiVersion("1.1")] + [HttpPost] + [Route("0")] + [AllowAnonymous] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + public async Task CreateAdminAccount(Authentication.RegisterViewModel model) + { + if (Config.ReadSetting("FirstRunStatus", "0") == "0") + { + if (ModelState.IsValid) + { + ApplicationUser user = new ApplicationUser + { + UserName = model.UserName, + NormalizedUserName = model.UserName.ToUpper(), + Email = model.Email, + NormalizedEmail = model.Email.ToUpper(), + SecurityProfile = new SecurityProfileViewModel() + }; + var result = await _userManager.CreateAsync(user, model.Password); + if (result.Succeeded) + { + await _userManager.AddToRoleAsync(user, "Player"); + await _userManager.AddToRoleAsync(user, "Gamer"); + await _userManager.AddToRoleAsync(user, "Admin"); + + await _signInManager.SignInAsync(user, isPersistent: true); + + Config.SetSetting("FirstRunStatus", "1"); + + return Ok(); + } + } + + return NotFound(); + } + else + { + return NotFound(); + } + } + } +} \ No newline at end of file diff --git a/gaseous-server/Controllers/V1.1/GamesController.cs b/gaseous-server/Controllers/V1.1/GamesController.cs new file mode 100644 index 0000000..73e61df --- /dev/null +++ b/gaseous-server/Controllers/V1.1/GamesController.cs @@ -0,0 +1,413 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using Authentication; +using gaseous_server.Classes; +using gaseous_server.Classes.Metadata; +using IGDB.Models; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Scripting; +using static gaseous_server.Classes.Metadata.AgeRatings; + +namespace gaseous_server.Controllers.v1_1 +{ + [Route("api/v{version:apiVersion}/[controller]")] + [ApiVersion("1.1")] + [ApiController] + [Authorize] + public class GamesController: ControllerBase + { + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + + public GamesController( + UserManager userManager, + SignInManager signInManager) + { + _userManager = userManager; + _signInManager = signInManager; + } + + [MapToApiVersion("1.1")] + [HttpPost] + [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] + public async Task Game_v1_1(GameSearchModel model) + { + var user = await _userManager.GetUserAsync(User); + + if (user != null) + { + // apply security profile filtering + List RemoveAgeGroups = new List(); + switch (user.SecurityProfile.AgeRestrictionPolicy.MaximumAgeRestriction.ToLower()) + { + case "adult": + break; + case "mature": + RemoveAgeGroups.Add("Adult"); + break; + case "teen": + RemoveAgeGroups.Add("Adult"); + RemoveAgeGroups.Add("Mature"); + break; + case "child": + RemoveAgeGroups.Add("Adult"); + RemoveAgeGroups.Add("Mature"); + RemoveAgeGroups.Add("Teen"); + break; + } + foreach (string RemoveAgeGroup in RemoveAgeGroups) + { + if (model.GameAgeRating.AgeGroupings.Contains(RemoveAgeGroup)) + { + model.GameAgeRating.AgeGroupings.Remove(RemoveAgeGroup); + } + } + if (user.SecurityProfile.AgeRestrictionPolicy.IncludeUnrated == false) + { + model.GameAgeRating.IncludeUnrated = false; + } + + return Ok(GetGames(model)); + } + else + { + return Unauthorized(); + } + } + + public class GameSearchModel + { + public string Name { get; set; } + public List Platform { get; set; } + public List Genre { get; set; } + public List GameMode { get; set; } + public List PlayerPerspective { get; set; } + public List Theme { get; set; } + public GameRatingItem GameRating { get; set; } = new GameRatingItem(); + public GameAgeRatingItem GameAgeRating { get; set; } = new GameAgeRatingItem(); + public GameSortingItem Sorting { get; set; } = new GameSortingItem(); + + + public class GameRatingItem + { + public int MinimumRating { get; set; } = -1; + public int MinimumRatingCount { get; set; } = -1; + public int MaximumRating { get; set; } = -1; + public int MaximumRatingCount { get; set; } = -1; + public bool IncludeUnrated { get; set; } = false; + } + + public class GameAgeRatingItem + { + public List AgeGroupings { get; set; } = new List{ "Child", "Teen", "Mature", "Adult" }; + public bool IncludeUnrated { get; set; } = true; + } + + public class GameSortingItem + { + public SortField SortBy { get; set; } = SortField.NameThe; + public bool SortAscending { get; set; } = true; + + public enum SortField + { + Name, + NameThe, + Rating, + RatingCount + } + } + } + + public static List GetGames(GameSearchModel model) + { + string whereClause = ""; + string havingClause = ""; + Dictionary whereParams = new Dictionary(); + + List whereClauses = new List(); + List havingClauses = new List(); + + string tempVal = ""; + + if (model.Name.Length > 0) + { + tempVal = "`Name` LIKE @Name"; + whereParams.Add("@Name", "%" + model.Name + "%"); + havingClauses.Add(tempVal); + } + + if (model.GameRating != null) + { + List ratingClauses = new List(); + if (model.GameRating.MinimumRating != -1) + { + string ratingTempMinVal = "totalRating >= @totalMinRating"; + whereParams.Add("@totalMinRating", model.GameRating.MinimumRating); + ratingClauses.Add(ratingTempMinVal); + } + + if (model.GameRating.MaximumRating != -1) + { + string ratingTempMaxVal = "totalRating <= @totalMaxRating"; + whereParams.Add("@totalMaxRating", model.GameRating.MaximumRating); + ratingClauses.Add(ratingTempMaxVal); + } + + if (model.GameRating.MinimumRatingCount != -1) + { + string ratingTempMinCountVal = "totalRatingCount >= @totalMinRatingCount"; + whereParams.Add("@totalMinRatingCount", model.GameRating.MinimumRatingCount); + ratingClauses.Add(ratingTempMinCountVal); + } + + if (model.GameRating.MaximumRatingCount != -1) + { + string ratingTempMaxCountVal = "totalRatingCount <= @totalMaxRatingCount"; + whereParams.Add("@totalMaxRatingCount", model.GameRating.MaximumRatingCount); + ratingClauses.Add(ratingTempMaxCountVal); + } + + // generate rating sub clause + string ratingClauseValue = ""; + if (ratingClauses.Count > 0) + { + foreach (string ratingClause in ratingClauses) + { + if (ratingClauseValue.Length > 0) + { + ratingClauseValue += " AND "; + } + ratingClauseValue += ratingClause; + } + } + + string unratedClause = "totalRating IS NOT NULL"; + if (model.GameRating.IncludeUnrated == true) + { + unratedClause = "totalRating IS NULL"; + } + + if (ratingClauseValue.Length > 0) + { + havingClauses.Add("((" + ratingClauseValue + ") OR " + unratedClause + ")"); + } + } + + if (model.Platform.Count > 0) + { + tempVal = "Games_Roms.PlatformId IN ("; + for (int i = 0; i < model.Platform.Count; i++) + { + if (i > 0) + { + tempVal += ", "; + } + string platformLabel = "@Platform" + i; + tempVal += platformLabel; + whereParams.Add(platformLabel, model.Platform[i]); + } + tempVal += ")"; + whereClauses.Add(tempVal); + } + + if (model.Genre.Count > 0) + { + tempVal = "Relation_Game_Genres.GenresId IN ("; + for (int i = 0; i < model.Genre.Count; i++) + { + if (i > 0) + { + tempVal += " AND "; + } + string genreLabel = "@Genre" + i; + tempVal += genreLabel; + whereParams.Add(genreLabel, model.Genre[i]); + } + tempVal += ")"; + whereClauses.Add(tempVal); + } + + if (model.GameMode.Count > 0) + { + tempVal = "Relation_Game_GameModes.GameModesId IN ("; + for (int i = 0; i < model.GameMode.Count; i++) + { + if (i > 0) + { + tempVal += " AND "; + } + string gameModeLabel = "@GameMode" + i; + tempVal += gameModeLabel; + whereParams.Add(gameModeLabel, model.GameMode[i]); + } + tempVal += ")"; + whereClauses.Add(tempVal); + } + + if (model.PlayerPerspective.Count > 0) + { + tempVal = "Relation_Game_PlayerPerspectives.PlayerPerspectivesId IN ("; + for (int i = 0; i < model.PlayerPerspective.Count; i++) + { + if (i > 0) + { + tempVal += " AND "; + } + string playerPerspectiveLabel = "@PlayerPerspective" + i; + tempVal += playerPerspectiveLabel; + whereParams.Add(playerPerspectiveLabel, model.PlayerPerspective[i]); + } + tempVal += ")"; + whereClauses.Add(tempVal); + } + + if (model.Theme.Count > 0) + { + tempVal = "Relation_Game_Themes.ThemesId IN ("; + for (int i = 0; i < model.Theme.Count; i++) + { + if (i > 0) + { + tempVal += " AND "; + } + string themeLabel = "@Theme" + i; + tempVal += themeLabel; + whereParams.Add(themeLabel, model.Theme[i]); + } + tempVal += ")"; + whereClauses.Add(tempVal); + } + + if (model.GameAgeRating != null) + { + if (model.GameAgeRating.AgeGroupings.Count > 0) + { + List AgeClassificationsList = new List(); + foreach (string ratingGroup in model.GameAgeRating.AgeGroupings) + { + if (AgeGroups.AgeGroupings.ContainsKey(ratingGroup)) + { + List ageGroups = AgeGroups.AgeGroupings[ratingGroup]; + foreach (AgeGroups.AgeGroupItem ageGroup in ageGroups) + { + AgeClassificationsList.AddRange(ageGroup.AgeGroupItemValues); + } + } + } + + if (AgeClassificationsList.Count > 0) + { + AgeClassificationsList = new HashSet(AgeClassificationsList).ToList(); + tempVal = "(view_AgeRatings.Rating IN ("; + for (int i = 0; i < AgeClassificationsList.Count; i++) + { + if (i > 0) + { + tempVal += ", "; + } + string themeLabel = "@Rating" + i; + tempVal += themeLabel; + whereParams.Add(themeLabel, AgeClassificationsList[i]); + } + tempVal += ")"; + + if (model.GameAgeRating.IncludeUnrated == true) + { + tempVal += " OR view_AgeRatings.Rating IS NULL"; + } + tempVal += ")"; + + whereClauses.Add(tempVal); + } + } + } + + // build where clause + if (whereClauses.Count > 0) + { + whereClause = "WHERE "; + for (int i = 0; i < whereClauses.Count; i++) + { + if (i > 0) + { + whereClause += " AND "; + } + whereClause += whereClauses[i]; + } + } + + // build having clause + if (havingClauses.Count > 0) + { + havingClause = "HAVING "; + for (int i = 0; i < havingClauses.Count; i++) + { + if (i > 0) + { + havingClause += " AND "; + } + havingClause += havingClauses[i]; + } + } + + // order by clause + string orderByField = "NameThe"; + string orderByOrder = "ASC"; + if (model.Sorting != null) + { + switch(model.Sorting.SortBy) + { + case GameSearchModel.GameSortingItem.SortField.NameThe: + orderByField = "NameThe"; + break; + case GameSearchModel.GameSortingItem.SortField.Name: + orderByField = "Name"; + break; + case GameSearchModel.GameSortingItem.SortField.Rating: + orderByField = "TotalRating"; + break; + case GameSearchModel.GameSortingItem.SortField.RatingCount: + orderByField = "TotalRatingCount"; + break; + default: + orderByField = "NameThe"; + break; + } + + if (model.Sorting.SortAscending == true) + { + orderByOrder = "ASC"; + } + else + { + orderByOrder = "DESC"; + } + } + string orderByClause = "ORDER BY `" + orderByField + "` " + orderByOrder; + + Database db = new Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); + string sql = "SELECT DISTINCT Games_Roms.GameId AS ROMGameId, Game.*, case when Game.`Name` like 'The %' then CONCAT(trim(substr(Game.`Name` from 4)), ', The') else Game.`Name` end as NameThe FROM Games_Roms LEFT JOIN Game ON Game.Id = Games_Roms.GameId LEFT JOIN Relation_Game_Genres ON Game.Id = Relation_Game_Genres.GameId LEFT JOIN Relation_Game_GameModes ON Game.Id = Relation_Game_GameModes.GameId LEFT JOIN Relation_Game_PlayerPerspectives ON Game.Id = Relation_Game_PlayerPerspectives.GameId LEFT JOIN Relation_Game_Themes ON Game.Id = Relation_Game_Themes.GameId LEFT JOIN (SELECT Relation_Game_AgeRatings.GameId, AgeRating.* FROM Relation_Game_AgeRatings JOIN AgeRating ON Relation_Game_AgeRatings.AgeRatingsId = AgeRating.Id) view_AgeRatings ON Game.Id = view_AgeRatings.GameId " + whereClause + " " + havingClause + " " + orderByClause; + + List RetVal = new List(); + + DataTable dbResponse = db.ExecuteCMD(sql, whereParams); + foreach (DataRow dr in dbResponse.Rows) + { + //RetVal.Add(Classes.Metadata.Games.GetGame((long)dr["ROMGameId"], false, false)); + RetVal.Add(Classes.Metadata.Games.GetGame(dr)); + } + + return RetVal; + } + } +} \ No newline at end of file diff --git a/gaseous-server/Controllers/V1.1/RatingsController.cs b/gaseous-server/Controllers/V1.1/RatingsController.cs new file mode 100644 index 0000000..d02355d --- /dev/null +++ b/gaseous-server/Controllers/V1.1/RatingsController.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using gaseous_server.Classes; +using gaseous_server.Classes.Metadata; +using IGDB.Models; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.CodeAnalysis.Scripting; +using static gaseous_server.Classes.Metadata.AgeRatings; + +namespace gaseous_server.Controllers.v1_1 +{ + [Route("api/v{version:apiVersion}/[controller]")] + [ApiVersion("1.1")] + [ApiController] + public class RatingsController: ControllerBase + { + [MapToApiVersion("1.1")] + [HttpGet] + [Authorize] + [Route("Images/{RatingBoard}/{RatingId}/image.svg")] + [ProducesResponseType(typeof(FileContentResult), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + public ActionResult RatingsImageById(string RatingBoard, int RatingId) + { + IGDB.Models.AgeRatingTitle RatingTitle = (AgeRatingTitle)RatingId; + + string resourceName = "gaseous_server.Assets.Ratings." + RatingBoard + "." + RatingTitle.ToString() + ".svg"; + + var assembly = Assembly.GetExecutingAssembly(); + string[] resources = assembly.GetManifestResourceNames(); + if (resources.Contains(resourceName)) + { + using (Stream stream = assembly.GetManifestResourceStream(resourceName)) + using (StreamReader reader = new StreamReader(stream)) + { + byte[] filedata = new byte[stream.Length]; + stream.Read(filedata, 0, filedata.Length); + + string filename = RatingBoard + "-" + RatingTitle.ToString() + ".svg"; + string contentType = "image/svg+xml"; + + var cd = new System.Net.Mime.ContentDisposition + { + FileName = filename, + Inline = true, + }; + + Response.Headers.Add("Content-Disposition", cd.ToString()); + Response.Headers.Add("Cache-Control", "public, max-age=604800"); + + return File(filedata, contentType); + } + } + return NotFound(); + } + } +} \ No newline at end of file diff --git a/gaseous-server/Program.cs b/gaseous-server/Program.cs index e1b7aa1..cd69181 100644 --- a/gaseous-server/Program.cs +++ b/gaseous-server/Program.cs @@ -7,8 +7,12 @@ using gaseous_server.SignatureIngestors.XML; using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Versioning; +using Microsoft.Extensions.DependencyInjection; using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.OpenApi.Models; +using Authentication; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.UI.Services; Logging.WriteToDiskOnly = true; Logging.Log(Logging.LogType.Information, "Startup", "Starting Gaseous Server " + Assembly.GetExecutingAssembly().GetName().Version); @@ -117,11 +121,14 @@ builder.Services.AddApiVersioning(config => config.DefaultApiVersion = new ApiVersion(1, 0); config.AssumeDefaultVersionWhenUnspecified = true; config.ReportApiVersions = true; + config.ApiVersionReader = ApiVersionReader.Combine(new UrlSegmentApiVersionReader(), + new HeaderApiVersionReader("x-api-version"), + new MediaTypeApiVersionReader("x-api-version")); }); -builder.Services.AddApiVersioning(setup => -{ - setup.ApiVersionReader = new UrlSegmentApiVersionReader(); -}); +// builder.Services.AddApiVersioning(setup => +// { +// setup.ApiVersionReader = new UrlSegmentApiVersionReader(); +// }); builder.Services.AddVersionedApiExplorer(setup => { setup.GroupNameFormat = "'v'VVV"; @@ -166,6 +173,24 @@ builder.Services.AddSwaggerGen(options => } }); + options.SwaggerDoc("v1.1", new OpenApiInfo + { + Version = "v1.1", + Title = "Gaseous Server API", + Description = "An API for managing the Gaseous Server", + TermsOfService = new Uri("https://github.com/gaseous-project/gaseous-server"), + Contact = new OpenApiContact + { + Name = "GitHub Repository", + Url = new Uri("https://github.com/gaseous-project/gaseous-server") + }, + License = new OpenApiLicense + { + Name = "Gaseous Server License", + Url = new Uri("https://github.com/gaseous-project/gaseous-server/blob/main/LICENSE") + } + }); + // using System.Reflection; var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename)); @@ -173,19 +198,115 @@ builder.Services.AddSwaggerGen(options => ); builder.Services.AddHostedService(); +// identity +builder.Services.AddIdentity(options => + { + options.Password.RequireDigit = true; + options.Password.RequireLowercase = true; + options.Password.RequireNonAlphanumeric = false; + options.Password.RequireUppercase = true; + options.Password.RequiredLength = 10; + options.User.AllowedUserNameCharacters = null; + options.User.RequireUniqueEmail = true; + options.SignIn.RequireConfirmedPhoneNumber = false; + options.SignIn.RequireConfirmedEmail = false; + options.SignIn.RequireConfirmedAccount = false; + }) + .AddUserStore() + .AddRoleStore() + .AddDefaultTokenProviders() + .AddDefaultUI() + ; +builder.Services.ConfigureApplicationCookie(options => + { + options.Cookie.Name = "Gaseous.Identity"; + options.ExpireTimeSpan = TimeSpan.FromDays(90); + options.SlidingExpiration = true; + }); +// builder.Services.AddIdentityCore(options => { +// options.SignIn.RequireConfirmedAccount = false; +// options.User.RequireUniqueEmail = true; +// options.Password.RequireDigit = false; +// options.Password.RequiredLength = 10; +// options.Password.RequireNonAlphanumeric = false; +// options.Password.RequireUppercase = false; +// options.Password.RequireLowercase = false; +// }); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + +builder.Services.AddTransient, UserStore>(); +builder.Services.AddTransient, RoleStore>(); + +builder.Services.AddAuthorization(options => +{ + options.AddPolicy("Admin", policy => policy.RequireRole("Admin")); + options.AddPolicy("Gamer", policy => policy.RequireRole("Gamer")); + options.AddPolicy("Player", policy => policy.RequireRole("Player")); +}); + +// builder.Services.AddControllersWithViews(options => +// { +// options.Filters.Add(new Microsoft.AspNetCore.Mvc.ValidateAntiForgeryTokenAttribute()); +// }); + var app = builder.Build(); // Configure the HTTP request pipeline. //if (app.Environment.IsDevelopment()) //{ app.UseSwagger(); -app.UseSwaggerUI(); +app.UseSwaggerUI(options => + { + options.SwaggerEndpoint($"/swagger/v1/swagger.json", "v1.0"); + options.SwaggerEndpoint($"/swagger/v1.1/swagger.json", "v1.1"); + } +); //} //app.UseHttpsRedirection(); app.UseResponseCaching(); +// set up system roles +using (var scope = app.Services.CreateScope()) +{ + var roleManager = scope.ServiceProvider.GetRequiredService(); + var roles = new[] { "Admin", "Gamer", "Player" }; + + foreach (var role in roles) + { + if (await roleManager.FindByNameAsync(role, CancellationToken.None) == null) + { + ApplicationRole applicationRole = new ApplicationRole(); + applicationRole.Name = role; + applicationRole.NormalizedName = role.ToUpper(); + await roleManager.CreateAsync(applicationRole, CancellationToken.None); + } + } + + // set up administrator account + var userManager = scope.ServiceProvider.GetRequiredService(); + if (await userManager.FindByNameAsync("admin@localhost", CancellationToken.None) == null) + { + ApplicationUser adminUser = new ApplicationUser{ + Id = Guid.NewGuid().ToString(), + Email = "admin@localhost", + NormalizedEmail = "ADMIN@LOCALHOST", + EmailConfirmed = true, + UserName = "administrator", + NormalizedUserName = "ADMINISTRATOR" + }; + + //set user password + PasswordHasher ph = new PasswordHasher(); + adminUser.PasswordHash = ph.HashPassword(adminUser, "letmein"); + + await userManager.CreateAsync(adminUser, CancellationToken.None); + await userManager.AddToRoleAsync(adminUser, "Admin", CancellationToken.None); + } +} + app.UseAuthorization(); app.UseDefaultFiles(); @@ -197,6 +318,72 @@ app.UseStaticFiles(new StaticFileOptions app.MapControllers(); +// emergency password recovery if environment variable is set +// process: +// - set the environment variable "recoveraccount" to the email address of the account to be recovered +// - when the server starts the password will be reset to a random string and saved in the library +// directory with the name RecoverAccount.txt +// - user should copy this password and remove the "recoveraccount" environment variable and the +// RecoverAccount.txt file +// - the server will not start while the RecoverAccount.txt file exists +string PasswordRecoveryFile = Path.Combine(Config.LibraryConfiguration.LibraryRootDirectory, "RecoverAccount.txt"); +if (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("recoveraccount"))) +{ + if (File.Exists(PasswordRecoveryFile)) + { + // password has already been set - do nothing and just exit + Logging.Log(Logging.LogType.Critical, "Server Startup", "Unable to start while recoveraccount environment varibale is set and RecoverAccount.txt file exists.", null, true); + Environment.Exit(0); + } + else + { + // generate and save the password to disk + int length = 10; + string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+"; + var random = new Random(); + string password = new string(Enumerable.Repeat(chars, length).Select(s => s[random.Next(s.Length)]).ToArray()); + + File.WriteAllText(PasswordRecoveryFile, password); + + // reset the password + using (var scope = app.Services.CreateScope()) + { + var userManager = scope.ServiceProvider.GetRequiredService(); + if (await userManager.FindByNameAsync(Environment.GetEnvironmentVariable("recoveraccount"), CancellationToken.None) != null) + { + ApplicationUser User = await userManager.FindByEmailAsync(Environment.GetEnvironmentVariable("recoveraccount"), CancellationToken.None); + + //set user password + PasswordHasher ph = new PasswordHasher(); + User.PasswordHash = ph.HashPassword(User, password); + + await userManager.SetPasswordHashAsync(User, User.PasswordHash, CancellationToken.None); + + Logging.Log(Logging.LogType.Information, "Server Startup", "Password reset complete, remove the recoveraccount environment variable and RecoverAccount.text file to allow server start.", null, true); + + Environment.Exit(0); + } + else + { + Logging.Log(Logging.LogType.Critical, "Server Startup", "Account to recover not found.", null, true); + + Environment.Exit(0); + } + } + + } +} +else +{ + // check if RecoverAccount.text file is present + if (File.Exists(PasswordRecoveryFile)) + { + // cannot start while password recovery file exists + Logging.Log(Logging.LogType.Critical, "Server Startup", "Unable to start while RecoverAccount.txt file exists. Remove the file and try again.", null, true); + Environment.Exit(0); + } +} + // setup library directories Config.LibraryConfiguration.InitLibrary(); diff --git a/gaseous-server/Reference/OldAccountController.cs.bak b/gaseous-server/Reference/OldAccountController.cs.bak new file mode 100644 index 0000000..3bad3c1 --- /dev/null +++ b/gaseous-server/Reference/OldAccountController.cs.bak @@ -0,0 +1,585 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Security.Claims; +using Authentication; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.UI.Services; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Rendering; + +namespace gaseous_server.Controllers +{ + [ApiController] + [Route("Account")] + [Authorize] + public class OldAccountController : Controller + { + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + private readonly IEmailSender _emailSender; + private readonly ILogger _logger; + + public OldAccountController( + UserManager userManager, + SignInManager signInManager, + IEmailSender emailSender, + ILoggerFactory loggerFactory) + { + _userManager = userManager; + _signInManager = signInManager; + _emailSender = emailSender; + _logger = loggerFactory.CreateLogger(); + } + + // + // GET: /Account/Login + [HttpGet] + [AllowAnonymous] + [Route("Login")] + public IActionResult Login(string returnUrl = null) + { + ViewData["ReturnUrl"] = returnUrl; + return View(); + } + + // + // POST: /Account/Login + [HttpPost] + [AllowAnonymous] + [Route("Login")] + public async Task Login(LoginViewModel model, string returnUrl = null) + { + ViewData["ReturnUrl"] = returnUrl; + if (ModelState.IsValid) + { + // This doesn't count login failures towards account lockout + // To enable password failures to trigger account lockout, set lockoutOnFailure: true + var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false); + if (result.Succeeded) + { + _logger.LogInformation(1, "User logged in."); + return RedirectToLocal(returnUrl); + } + if (result.RequiresTwoFactor) + { + return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); + } + if (result.IsLockedOut) + { + _logger.LogWarning(2, "User account locked out."); + return View("Lockout"); + } + else + { + ModelState.AddModelError(string.Empty, "Invalid login attempt."); + return View(model); + } + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // GET: /Account/Register + [HttpGet] + [AllowAnonymous] + [Route("Register")] + public IActionResult Register(string returnUrl = null) + { + ViewData["ReturnUrl"] = returnUrl; + return View(); + } + + // + // POST: /Account/Register + [HttpPost] + [AllowAnonymous] + [Route("Register")] + public async Task Register(RegisterViewModel model, string returnUrl = null) + { + // ViewData["ReturnUrl"] = returnUrl; + if (ModelState.IsValid) + { + ApplicationUser user = new ApplicationUser + { + UserName = model.UserName, + NormalizedUserName = model.UserName.ToUpper(), + Email = model.Email, + NormalizedEmail = model.Email.ToUpper() + }; + var result = await _userManager.CreateAsync(user, model.Password); + if (result.Succeeded) + { + // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713 + // Send an email with this link + //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); + //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); + //await _emailSender.SendEmailAsync(model.Email, "Confirm your account", + // "Please confirm your account by clicking this link: link"); + + // add all users to the member role + await _userManager.AddToRoleAsync(user, "Player"); + + await _signInManager.SignInAsync(user, isPersistent: false); + _logger.LogInformation(3, "User created a new account with password."); + return RedirectToLocal(returnUrl); + } + AddErrors(result); + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // POST: /Account/LogOff + [HttpPost] + [Route("LogOff")] + public async Task LogOff() + { + await _signInManager.SignOutAsync(); + _logger.LogInformation(4, "User logged out."); + //return RedirectToAction(nameof(HomeController.Index), "Home"); + return Ok(); + } + + // + // POST: /Account/ExternalLogin + [HttpPost] + [AllowAnonymous] + [Route("ExternalLogin")] + public IActionResult ExternalLogin(string provider, string returnUrl = null) + { + // Request a redirect to the external login provider. + var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }); + var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl); + return Challenge(properties, provider); + } + + // + // GET: /Account/ExternalLoginCallback + [HttpGet] + [AllowAnonymous] + [Route("ExternalLoginCallback")] + public async Task ExternalLoginCallback(string returnUrl = null, string remoteError = null) + { + if (remoteError != null) + { + ModelState.AddModelError(string.Empty, $"Error from external provider: {remoteError}"); + return View(nameof(Login)); + } + var info = await _signInManager.GetExternalLoginInfoAsync(); + if (info == null) + { + return RedirectToAction(nameof(Login)); + } + + // Sign in the user with this external login provider if the user already has a login. + var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false); + if (result.Succeeded) + { + // Update any authentication tokens if login succeeded + await _signInManager.UpdateExternalAuthenticationTokensAsync(info); + + _logger.LogInformation(5, "User logged in with {Name} provider.", info.LoginProvider); + return RedirectToLocal(returnUrl); + } + if (result.RequiresTwoFactor) + { + return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl }); + } + if (result.IsLockedOut) + { + return View("Lockout"); + } + else + { + // If the user does not have an account, then ask the user to create an account. + ViewData["ReturnUrl"] = returnUrl; + ViewData["ProviderDisplayName"] = info.ProviderDisplayName; + var email = info.Principal.FindFirstValue(ClaimTypes.Email); + return View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { Email = email }); + } + } + + // + // POST: /Account/ExternalLoginConfirmation + [HttpPost] + [AllowAnonymous] + [Route("ExternalLoginConfirmation")] + public async Task ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl = null) + { + if (ModelState.IsValid) + { + // Get the information about the user from the external login provider + var info = await _signInManager.GetExternalLoginInfoAsync(); + if (info == null) + { + return View("ExternalLoginFailure"); + } + var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; + var result = await _userManager.CreateAsync(user); + if (result.Succeeded) + { + result = await _userManager.AddLoginAsync(user, info); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + _logger.LogInformation(6, "User created an account using {Name} provider.", info.LoginProvider); + + // Update any authentication tokens as well + await _signInManager.UpdateExternalAuthenticationTokensAsync(info); + + return RedirectToLocal(returnUrl); + } + } + AddErrors(result); + } + + ViewData["ReturnUrl"] = returnUrl; + return View(model); + } + + // GET: /Account/ConfirmEmail + [HttpGet] + [AllowAnonymous] + [Route("ConfirmEmail")] + public async Task ConfirmEmail(string userId, string code) + { + if (userId == null || code == null) + { + return View("Error"); + } + var user = await _userManager.FindByIdAsync(userId); + if (user == null) + { + return View("Error"); + } + var result = await _userManager.ConfirmEmailAsync(user, code); + return View(result.Succeeded ? "ConfirmEmail" : "Error"); + } + + // + // GET: /Account/ForgotPassword + [HttpGet] + [AllowAnonymous] + [Route("ForgotPassword")] + public IActionResult ForgotPassword() + { + return View(); + } + + // + // POST: /Account/ForgotPassword + [HttpPost] + [AllowAnonymous] + [Route("ForgotPassword")] + public async Task ForgotPassword(ForgotPasswordViewModel model) + { + if (ModelState.IsValid) + { + var user = await _userManager.FindByEmailAsync(model.Email); + if (user == null || !(await _userManager.IsEmailConfirmedAsync(user))) + { + // Don't reveal that the user does not exist or is not confirmed + return View("ForgotPasswordConfirmation"); + } + + // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713 + // Send an email with this link + //var code = await _userManager.GeneratePasswordResetTokenAsync(user); + //var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); + //await _emailSender.SendEmailAsync(model.Email, "Reset Password", + // "Please reset your password by clicking here: link"); + //return View("ForgotPasswordConfirmation"); + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // GET: /Account/ForgotPasswordConfirmation + [HttpGet] + [AllowAnonymous] + [Route("ForgotPasswordConfirmation")] + public IActionResult ForgotPasswordConfirmation() + { + return View(); + } + + // + // GET: /Account/ResetPassword + [HttpGet] + [AllowAnonymous] + [Route("ResetPassword")] + public IActionResult ResetPassword(string code = null) + { + return code == null ? View("Error") : View(); + } + + // + // POST: /Account/ResetPassword + [HttpPost] + [AllowAnonymous] + [Route("ResetPassword")] + public async Task ResetPassword(ResetPasswordViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + var user = await _userManager.FindByEmailAsync(model.Email); + if (user == null) + { + // Don't reveal that the user does not exist + return RedirectToAction(nameof(OldAccountController.ResetPasswordConfirmation), "Account"); + } + var result = await _userManager.ResetPasswordAsync(user, model.Code, model.Password); + if (result.Succeeded) + { + return RedirectToAction(nameof(OldAccountController.ResetPasswordConfirmation), "Account"); + } + AddErrors(result); + return View(); + } + + // + // GET: /Account/ResetPasswordConfirmation + [HttpGet] + [AllowAnonymous] + [Route("ResetPasswordConfirmation")] + public IActionResult ResetPasswordConfirmation() + { + return View(); + } + + // + // GET: /Account/SendCode + [HttpGet] + [AllowAnonymous] + [Route("SendCode")] + public async Task SendCode(string returnUrl = null, bool rememberMe = false) + { + var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); + if (user == null) + { + return View("Error"); + } + var userFactors = await _userManager.GetValidTwoFactorProvidersAsync(user); + var factorOptions = userFactors.Select(purpose => new SelectListItem { Text = purpose, Value = purpose }).ToList(); + return View(new SendCodeViewModel { Providers = factorOptions, ReturnUrl = returnUrl, RememberMe = rememberMe }); + } + + // + // POST: /Account/SendCode + [HttpPost] + [AllowAnonymous] + [Route("SendCode")] + public async Task SendCode(SendCodeViewModel model) + { + if (!ModelState.IsValid) + { + return View(); + } + + var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); + if (user == null) + { + return View("Error"); + } + + if (model.SelectedProvider == "Authenticator") + { + return RedirectToAction(nameof(VerifyAuthenticatorCode), new { ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe }); + } + + // Generate the token and send it + var code = await _userManager.GenerateTwoFactorTokenAsync(user, model.SelectedProvider); + if (string.IsNullOrWhiteSpace(code)) + { + return View("Error"); + } + + var message = "Your security code is: " + code; + if (model.SelectedProvider == "Email") + { + await _emailSender.SendEmailAsync(await _userManager.GetEmailAsync(user), "Security Code", message); + } + // else if (model.SelectedProvider == "Phone") + // { + // await _smsSender.SendSmsAsync(await _userManager.GetPhoneNumberAsync(user), message); + // } + + return RedirectToAction(nameof(VerifyCode), new { Provider = model.SelectedProvider, ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe }); + } + + // + // GET: /Account/VerifyCode + [HttpGet] + [AllowAnonymous] + [Route("VerifyCode")] + public async Task VerifyCode(string provider, bool rememberMe, string returnUrl = null) + { + // Require that the user has already logged in via username/password or external login + var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); + if (user == null) + { + return View("Error"); + } + return View(new VerifyCodeViewModel { Provider = provider, ReturnUrl = returnUrl, RememberMe = rememberMe }); + } + + // + // POST: /Account/VerifyCode + [HttpPost] + [AllowAnonymous] + [Route("VerifyCode")] + public async Task VerifyCode(VerifyCodeViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + + // The following code protects for brute force attacks against the two factor codes. + // If a user enters incorrect codes for a specified amount of time then the user account + // will be locked out for a specified amount of time. + var result = await _signInManager.TwoFactorSignInAsync(model.Provider, model.Code, model.RememberMe, model.RememberBrowser); + if (result.Succeeded) + { + return RedirectToLocal(model.ReturnUrl); + } + if (result.IsLockedOut) + { + _logger.LogWarning(7, "User account locked out."); + return View("Lockout"); + } + else + { + ModelState.AddModelError(string.Empty, "Invalid code."); + return View(model); + } + } + + // + // GET: /Account/VerifyAuthenticatorCode + [HttpGet] + [AllowAnonymous] + [Route("VerifyAuthenticatorCode")] + public async Task VerifyAuthenticatorCode(bool rememberMe, string returnUrl = null) + { + // Require that the user has already logged in via username/password or external login + var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); + if (user == null) + { + return View("Error"); + } + return View(new VerifyAuthenticatorCodeViewModel { ReturnUrl = returnUrl, RememberMe = rememberMe }); + } + + // + // POST: /Account/VerifyAuthenticatorCode + [HttpPost] + [AllowAnonymous] + [Route("VerifyAuthenticatorCode")] + public async Task VerifyAuthenticatorCode(VerifyAuthenticatorCodeViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + + // The following code protects for brute force attacks against the two factor codes. + // If a user enters incorrect codes for a specified amount of time then the user account + // will be locked out for a specified amount of time. + var result = await _signInManager.TwoFactorAuthenticatorSignInAsync(model.Code, model.RememberMe, model.RememberBrowser); + if (result.Succeeded) + { + return RedirectToLocal(model.ReturnUrl); + } + if (result.IsLockedOut) + { + _logger.LogWarning(7, "User account locked out."); + return View("Lockout"); + } + else + { + ModelState.AddModelError(string.Empty, "Invalid code."); + return View(model); + } + } + + // + // GET: /Account/UseRecoveryCode + [HttpGet] + [AllowAnonymous] + [Route("UseRecoveryCode")] + public async Task UseRecoveryCode(string returnUrl = null) + { + // Require that the user has already logged in via username/password or external login + var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); + if (user == null) + { + return View("Error"); + } + return View(new UseRecoveryCodeViewModel { ReturnUrl = returnUrl }); + } + + // + // POST: /Account/UseRecoveryCode + [HttpPost] + [AllowAnonymous] + [Route("UseRecoveryCode")] + public async Task UseRecoveryCode(UseRecoveryCodeViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + + var result = await _signInManager.TwoFactorRecoveryCodeSignInAsync(model.Code); + if (result.Succeeded) + { + return RedirectToLocal(model.ReturnUrl); + } + else + { + ModelState.AddModelError(string.Empty, "Invalid code."); + return View(model); + } + } + + #region Helpers + + private void AddErrors(IdentityResult result) + { + foreach (var error in result.Errors) + { + ModelState.AddModelError(string.Empty, error.Description); + } + } + + private Task GetCurrentUserAsync() + { + return _userManager.GetUserAsync(HttpContext.User); + } + + private IActionResult RedirectToLocal(string returnUrl) + { + if (Url.IsLocalUrl(returnUrl)) + { + return Redirect(returnUrl); + } + else + { + return Redirect("/"); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/gaseous-server/Reference/OldManageController.cs.bak b/gaseous-server/Reference/OldManageController.cs.bak new file mode 100644 index 0000000..2a2afbd --- /dev/null +++ b/gaseous-server/Reference/OldManageController.cs.bak @@ -0,0 +1,383 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Authentication; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.UI.Services; +using Microsoft.AspNetCore.Mvc; + +namespace gaseous_server.Controllers; + +[ApiController] +[Route("Manage")] +[Authorize] +public class OldManageController : Controller +{ + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + private readonly IEmailSender _emailSender; + private readonly ILogger _logger; + + public OldManageController( + UserManager userManager, + SignInManager signInManager, + IEmailSender emailSender, + ILoggerFactory loggerFactory) + { + _userManager = userManager; + _signInManager = signInManager; + _emailSender = emailSender; + _logger = loggerFactory.CreateLogger(); + } + + // + // GET: /Manage/Index + [HttpGet] + [Route("Index")] + public async Task Index(ManageMessageId? message = null) + { + ViewData["StatusMessage"] = + message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed." + : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set." + : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set." + : message == ManageMessageId.Error ? "An error has occurred." + : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added." + : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed." + : ""; + + var user = await GetCurrentUserAsync(); + var model = new IndexViewModel + { + HasPassword = await _userManager.HasPasswordAsync(user), + PhoneNumber = await _userManager.GetPhoneNumberAsync(user), + TwoFactor = await _userManager.GetTwoFactorEnabledAsync(user), + Logins = await _userManager.GetLoginsAsync(user), + BrowserRemembered = await _signInManager.IsTwoFactorClientRememberedAsync(user), + AuthenticatorKey = await _userManager.GetAuthenticatorKeyAsync(user) + }; + return View(model); + } + + // + // POST: /Manage/RemoveLogin + [HttpPost] + [Route("RemoveLogin")] + public async Task RemoveLogin(RemoveLoginViewModel account) + { + ManageMessageId? message = ManageMessageId.Error; + var user = await GetCurrentUserAsync(); + if (user != null) + { + var result = await _userManager.RemoveLoginAsync(user, account.LoginProvider, account.ProviderKey); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + message = ManageMessageId.RemoveLoginSuccess; + } + } + return RedirectToAction(nameof(ManageLogins), new { Message = message }); + } + + // + // GET: /Manage/AddPhoneNumber + [HttpGet] + [Route("AddPhoneNumber")] + public IActionResult AddPhoneNumber() + { + return View(); + } + + // + // POST: /Manage/AddPhoneNumber + [HttpPost] + [Route("AddPhoneNumber")] + public async Task AddPhoneNumber(AddPhoneNumberViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + // Generate the token and send it + var user = await GetCurrentUserAsync(); + var code = await _userManager.GenerateChangePhoneNumberTokenAsync(user, model.PhoneNumber); + //await _smsSender.SendSmsAsync(model.PhoneNumber, "Your security code is: " + code); + return RedirectToAction(nameof(VerifyPhoneNumber), new { PhoneNumber = model.PhoneNumber }); + } + + // + // POST: /Manage/ResetAuthenticatorKey + [HttpPost] + [Route("ResetAuthenticatorKey")] + public async Task ResetAuthenticatorKey() + { + var user = await GetCurrentUserAsync(); + if (user != null) + { + await _userManager.ResetAuthenticatorKeyAsync(user); + _logger.LogInformation(1, "User reset authenticator key."); + } + return RedirectToAction(nameof(Index), "Manage"); + } + + // + // POST: /Manage/GenerateRecoveryCode + [HttpPost] + [Route("GenerateRecoveryCode")] + public async Task GenerateRecoveryCode() + { + var user = await GetCurrentUserAsync(); + if (user != null) + { + var codes = await _userManager.GenerateNewTwoFactorRecoveryCodesAsync(user, 5); + _logger.LogInformation(1, "User generated new recovery code."); + return View("DisplayRecoveryCodes", new DisplayRecoveryCodesViewModel { Codes = codes }); + } + return View("Error"); + } + + // + // POST: /Manage/EnableTwoFactorAuthentication + [HttpPost] + [Route("EnableTwoFactorAuthentication")] + public async Task EnableTwoFactorAuthentication() + { + var user = await GetCurrentUserAsync(); + if (user != null) + { + await _userManager.SetTwoFactorEnabledAsync(user, true); + await _signInManager.SignInAsync(user, isPersistent: false); + _logger.LogInformation(1, "User enabled two-factor authentication."); + } + return RedirectToAction(nameof(Index), "Manage"); + } + + // + // POST: /Manage/DisableTwoFactorAuthentication + [HttpPost] + [Route("DisableTwoFactorAuthentication")] + public async Task DisableTwoFactorAuthentication() + { + var user = await GetCurrentUserAsync(); + if (user != null) + { + await _userManager.SetTwoFactorEnabledAsync(user, false); + await _signInManager.SignInAsync(user, isPersistent: false); + _logger.LogInformation(2, "User disabled two-factor authentication."); + } + return RedirectToAction(nameof(Index), "Manage"); + } + + // + // GET: /Manage/VerifyPhoneNumber + [HttpGet] + [Route("VerifyPhoneNumber")] + public async Task VerifyPhoneNumber(string phoneNumber) + { + var code = await _userManager.GenerateChangePhoneNumberTokenAsync(await GetCurrentUserAsync(), phoneNumber); + // Send an SMS to verify the phone number + return phoneNumber == null ? View("Error") : View(new VerifyPhoneNumberViewModel { PhoneNumber = phoneNumber }); + } + + // + // POST: /Manage/VerifyPhoneNumber + [HttpPost] + [Route("VerifyPhoneNumber")] + public async Task VerifyPhoneNumber(VerifyPhoneNumberViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + var user = await GetCurrentUserAsync(); + if (user != null) + { + var result = await _userManager.ChangePhoneNumberAsync(user, model.PhoneNumber, model.Code); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.AddPhoneSuccess }); + } + } + // If we got this far, something failed, redisplay the form + ModelState.AddModelError(string.Empty, "Failed to verify phone number"); + return View(model); + } + + // + // GET: /Manage/RemovePhoneNumber + [HttpPost] + [Route("RemovePhoneNumber")] + public async Task RemovePhoneNumber() + { + var user = await GetCurrentUserAsync(); + if (user != null) + { + var result = await _userManager.SetPhoneNumberAsync(user, null); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.RemovePhoneSuccess }); + } + } + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.Error }); + } + + // + // GET: /Manage/ChangePassword + [HttpGet] + [Route("ChangePassword")] + public IActionResult ChangePassword() + { + return View(); + } + + // + // POST: /Manage/ChangePassword + [HttpPost] + [Route("ChangePassword")] + public async Task ChangePassword(ChangePasswordViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + var user = await GetCurrentUserAsync(); + if (user != null) + { + var result = await _userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + _logger.LogInformation(3, "User changed their password successfully."); + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.ChangePasswordSuccess }); + } + AddErrors(result); + return View(model); + } + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.Error }); + } + + // + // GET: /Manage/SetPassword + [HttpGet] + [Route("SetPassword")] + public IActionResult SetPassword() + { + return View(); + } + + // + // POST: /Manage/SetPassword + [HttpPost] + [Route("SetPassword")] + public async Task SetPassword(SetPasswordViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + + var user = await GetCurrentUserAsync(); + if (user != null) + { + var result = await _userManager.AddPasswordAsync(user, model.NewPassword); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.SetPasswordSuccess }); + } + AddErrors(result); + return View(model); + } + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.Error }); + } + + //GET: /Manage/ManageLogins + [HttpGet] + [Route("ManageLogins")] + public async Task ManageLogins(ManageMessageId? message = null) + { + ViewData["StatusMessage"] = + message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed." + : message == ManageMessageId.AddLoginSuccess ? "The external login was added." + : message == ManageMessageId.Error ? "An error has occurred." + : ""; + var user = await GetCurrentUserAsync(); + if (user == null) + { + return View("Error"); + } + var userLogins = await _userManager.GetLoginsAsync(user); + var schemes = await _signInManager.GetExternalAuthenticationSchemesAsync(); + var otherLogins = schemes.Where(auth => userLogins.All(ul => auth.Name != ul.LoginProvider)).ToList(); + ViewData["ShowRemoveButton"] = user.PasswordHash != null || userLogins.Count > 1; + return View(new ManageLoginsViewModel + { + CurrentLogins = userLogins, + OtherLogins = otherLogins + }); + } + + // + // POST: /Manage/LinkLogin + [HttpPost] + [Route("LinkLogin")] + public IActionResult LinkLogin(string provider) + { + // Request a redirect to the external login provider to link a login for the current user + var redirectUrl = Url.Action("LinkLoginCallback", "Manage"); + var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl, _userManager.GetUserId(User)); + return Challenge(properties, provider); + } + + // + // GET: /Manage/LinkLoginCallback + [HttpGet] + [Route("LinkLoginCallback")] + public async Task LinkLoginCallback() + { + var user = await GetCurrentUserAsync(); + if (user == null) + { + return View("Error"); + } + var info = await _signInManager.GetExternalLoginInfoAsync(await _userManager.GetUserIdAsync(user)); + if (info == null) + { + return RedirectToAction(nameof(ManageLogins), new { Message = ManageMessageId.Error }); + } + var result = await _userManager.AddLoginAsync(user, info); + var message = result.Succeeded ? ManageMessageId.AddLoginSuccess : ManageMessageId.Error; + return RedirectToAction(nameof(ManageLogins), new { Message = message }); + } + + #region Helpers + + private void AddErrors(IdentityResult result) + { + foreach (var error in result.Errors) + { + ModelState.AddModelError(string.Empty, error.Description); + } + } + + public enum ManageMessageId + { + AddPhoneSuccess, + AddLoginSuccess, + ChangePasswordSuccess, + SetTwoFactorSuccess, + SetPasswordSuccess, + RemoveLoginSuccess, + RemovePhoneSuccess, + Error + } + + private Task GetCurrentUserAsync() + { + return _userManager.GetUserAsync(HttpContext.User); + } + + #endregion +} \ No newline at end of file diff --git a/gaseous-server/Support/Database/MySQL/gaseous-1005.sql b/gaseous-server/Support/Database/MySQL/gaseous-1005.sql new file mode 100644 index 0000000..ddcd3b2 --- /dev/null +++ b/gaseous-server/Support/Database/MySQL/gaseous-1005.sql @@ -0,0 +1,54 @@ +CREATE TABLE `roles` ( + `Id` varchar(128) NOT NULL, + `Name` varchar(256) NOT NULL, + PRIMARY KEY (`Id`) +); + +CREATE TABLE `users` ( + `Id` varchar(128) NOT NULL, + `Email` varchar(256) DEFAULT NULL, + `EmailConfirmed` tinyint(1) NOT NULL, + `NormalizedEmail` varchar(256) DEFAULT NULL, + `PasswordHash` longtext, + `SecurityStamp` longtext, + `ConcurrencyStamp` longtext, + `PhoneNumber` longtext, + `PhoneNumberConfirmed` tinyint(1) NOT NULL, + `TwoFactorEnabled` tinyint(1) NOT NULL, + `LockoutEnd` datetime DEFAULT NULL, + `LockoutEnabled` tinyint(1) NOT NULL, + `AccessFailedCount` int(11) NOT NULL, + `UserName` varchar(256) NOT NULL, + `NormalizedUserName` varchar(256) NOT NULL, + `SecurityProfile` longtext, + PRIMARY KEY (`Id`) +); + +CREATE TABLE `userclaims` ( + `Id` int(11) NOT NULL AUTO_INCREMENT, + `UserId` varchar(128) NOT NULL, + `ClaimType` longtext, + `ClaimValue` longtext, + PRIMARY KEY (`Id`), + UNIQUE KEY `Id` (`Id`), + KEY `UserId` (`UserId`), + CONSTRAINT `ApplicationUser_Claims` FOREIGN KEY (`UserId`) REFERENCES `users` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION +); + +CREATE TABLE `userlogins` ( + `LoginProvider` varchar(128) NOT NULL, + `ProviderKey` varchar(128) NOT NULL, + `UserId` varchar(128) NOT NULL, + PRIMARY KEY (`LoginProvider`,`ProviderKey`,`UserId`), + KEY `ApplicationUser_Logins` (`UserId`), + CONSTRAINT `ApplicationUser_Logins` FOREIGN KEY (`UserId`) REFERENCES `users` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION +); + +CREATE TABLE `userroles` ( + `UserId` varchar(128) NOT NULL, + `RoleId` varchar(128) NOT NULL, + PRIMARY KEY (`UserId`,`RoleId`), + KEY `IdentityRole_Users` (`RoleId`), + CONSTRAINT `ApplicationUser_Roles` FOREIGN KEY (`UserId`) REFERENCES `users` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION, + CONSTRAINT `IdentityRole_Users` FOREIGN KEY (`RoleId`) REFERENCES `roles` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION +) ; diff --git a/gaseous-server/gaseous-server.csproj b/gaseous-server/gaseous-server.csproj index 4e197ed..aeadbcd 100644 --- a/gaseous-server/gaseous-server.csproj +++ b/gaseous-server/gaseous-server.csproj @@ -20,9 +20,11 @@ + + @@ -43,6 +45,7 @@ + @@ -114,6 +117,7 @@ + @@ -169,5 +173,6 @@ + diff --git a/gaseous-server/wwwroot/.DS_Store b/gaseous-server/wwwroot/.DS_Store index 43dca08b89bda50bac67f3f246ecd2f7745c660f..44dbb97c13c786ad52da8b2f0a3fbde2edaf9dc4 100644 GIT binary patch literal 8196 zcmeHM&x_MQ6n@hmn}$W`L7|5gB6}^^?dn1iB-V;Y#fS?#g1joDeBYYBO04UwQfKn=P;p#!1YpJVGAS^=$qRzNGD70?R&4+`Kno3+e> z@4m3=Q7fPoIFJgk_k)FQO786_{6m)$S%Vpanhf)%rbb zyFPW%`rd8(Uf3-ZzLG>Tm0mFn(^xfbIybv9XntR1-^sCv! zXKB!_c|oJY9lUx2DL1ZqL7n!?v=`Jv?&}DHX=co7Ha8e-7K?eSxK$YDtwE_+$Xh2i zw}wMAb7cMasY}&6ek-64MKVOb5a7^Ea*yIO^P3yaHf^;TJ9+Q(%Xn6cRw^?8%=cVj z{deipnMKU{UozV}%9Hn=;B;}y?>e2pr$G~~EVDG+#uJqQ&s9P-a)1l<;3*3(%FD^mO9z_AxUn#waWOjwhafY^I-rZVfrKl_RT~Sx ZGf(E1@dUY%feGSXkQW#>$Mei#1^_G^D#HK( diff --git a/gaseous-server/wwwroot/images/LoginWallpaper.jpg b/gaseous-server/wwwroot/images/LoginWallpaper.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3a9fc3bba808f332301c2f4e6050d2cab86812ab GIT binary patch literal 606346 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 w*As} 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ⅈQI$vzvfw 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�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�`X6!Bo8Yml#*Q;n~FJeUH5D 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�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�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 \ No newline at end of file diff --git a/gaseous-server/wwwroot/pages/dialogs/settingsuseredit.html b/gaseous-server/wwwroot/pages/dialogs/settingsuseredit.html new file mode 100644 index 0000000..db936ab --- /dev/null +++ b/gaseous-server/wwwroot/pages/dialogs/settingsuseredit.html @@ -0,0 +1,375 @@ +
+
Password
+
Role
+
Content Restrictions
+ +
+ +
+ + + + + +
+
+ +
+ + \ No newline at end of file diff --git a/gaseous-server/wwwroot/pages/dialogs/settingsusernew.html b/gaseous-server/wwwroot/pages/dialogs/settingsusernew.html new file mode 100644 index 0000000..ccacd4a --- /dev/null +++ b/gaseous-server/wwwroot/pages/dialogs/settingsusernew.html @@ -0,0 +1,88 @@ +

New User

+ + + + + + + + + + + + + + + + + + + + +
+ Email + + +
+ Password + + +
+ Confirm password + + +
+ +
+ + \ No newline at end of file diff --git a/gaseous-server/wwwroot/pages/dialogs/upload.html b/gaseous-server/wwwroot/pages/dialogs/upload.html index 00d97f3..3eef481 100644 --- a/gaseous-server/wwwroot/pages/dialogs/upload.html +++ b/gaseous-server/wwwroot/pages/dialogs/upload.html @@ -28,7 +28,7 @@ document.getElementById('upload_platformoverride').innerHTML = ""; var myDropzone = new Dropzone("div#upload_target", { - url: "/api/v1.0/Roms", + url: "/api/v1.1/Roms", autoProcessQueue: true, uploadMultiple: true, paramName: myParamName, @@ -84,7 +84,7 @@ $('#upload_platformoverride').select2({ minimumInputLength: 3, ajax: { - url: '/api/v1.0/Search/Platform', + url: '/api/v1.1/Search/Platform', data: function (params) { var query = { SearchString: params.term @@ -125,6 +125,6 @@ } console.log(queryString); - myDropzone.options.url = "/api/v1.0/Roms" + queryString; + myDropzone.options.url = "/api/v1.1/Roms" + queryString; }); \ No newline at end of file diff --git a/gaseous-server/wwwroot/pages/dialogs/userprofile.html b/gaseous-server/wwwroot/pages/dialogs/userprofile.html new file mode 100644 index 0000000..56655a9 --- /dev/null +++ b/gaseous-server/wwwroot/pages/dialogs/userprofile.html @@ -0,0 +1,122 @@ +
+
Account
+
+
+ +
+ + diff --git a/gaseous-server/wwwroot/pages/emulator.html b/gaseous-server/wwwroot/pages/emulator.html index cd37b98..266bef8 100644 --- a/gaseous-server/wwwroot/pages/emulator.html +++ b/gaseous-server/wwwroot/pages/emulator.html @@ -15,7 +15,7 @@ var emuBios = ''; var emuBackground = ''; - ajaxCall('/api/v1.0/Games/' + gameId, 'GET', function (result) { + ajaxCall('/api/v1.1/Games/' + gameId, 'GET', function (result) { gameData = result; // load artwork @@ -27,22 +27,22 @@ } else { if (result.cover) { var bg = document.getElementById('bgImage'); - bg.setAttribute('style', 'background-image: url("/api/v1.0/Games/' + gameId + '/cover/image"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);'); + bg.setAttribute('style', 'background-image: url("/api/v1.1/Games/' + gameId + '/cover/image"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);'); } } if (result.cover) { - emuBackground = '/api/v1.0/Games/' + gameId + '/cover/image'; + emuBackground = '/api/v1.1/Games/' + gameId + '/cover/image'; } emuGameTitle = gameData.name; }); - ajaxCall('/api/v1.0/Bios/' + platformId, 'GET', function (result) { + ajaxCall('/api/v1.1/Bios/' + platformId, 'GET', function (result) { if (result.length == 0) { emuBios = ''; } else { - emuBios = '/api/v1.0/Bios/zip/' + platformId; + emuBios = '/api/v1.1/Bios/zip/' + platformId; } switch (getQueryString('engine', 'string')) { @@ -59,7 +59,7 @@ artworksPosition = 0; } var bg = document.getElementById('bgImage'); - bg.setAttribute('style', 'background-image: url("/api/v1.0/Games/' + gameId + '/artwork/' + artworks[artworksPosition] + '/image"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);'); + bg.setAttribute('style', 'background-image: url("/api/v1.1/Games/' + gameId + '/artwork/' + artworks[artworksPosition] + '/image"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);'); } } diff --git a/gaseous-server/wwwroot/pages/first.html b/gaseous-server/wwwroot/pages/first.html new file mode 100644 index 0000000..17813d1 --- /dev/null +++ b/gaseous-server/wwwroot/pages/first.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + Gaseous Games + + + + +
+
+
+ +
+
+
+ + +
Gaseous Games
+ + +
+
+ +
+ +
+ Wallpaper by Joey Kwok / Unsplash +
+ + + \ No newline at end of file diff --git a/gaseous-server/wwwroot/pages/game.html b/gaseous-server/wwwroot/pages/game.html index d8e26b5..04ed58f 100644 --- a/gaseous-server/wwwroot/pages/game.html +++ b/gaseous-server/wwwroot/pages/game.html @@ -94,7 +94,7 @@ var artworksTimer = null; var selectedScreenshot = 0; - ajaxCall('/api/v1.0/Games/' + gameId, 'GET', function (result) { + ajaxCall('/api/v1.1/Games/' + gameId, 'GET', function (result) { // populate games page gameData = result; @@ -116,7 +116,7 @@ // get alt name var gameTitleAltLabel = document.getElementById('gametitle_alts'); if (result.alternativeNames) { - ajaxCall('/api/v1.0/Games/' + gameId + '/alternativename', 'GET', function (result) { + ajaxCall('/api/v1.1/Games/' + gameId + '/alternativename', 'GET', function (result) { var altNames = ''; for (var i = 0; i < result.length; i++) { if (altNames.length > 0) { @@ -161,7 +161,7 @@ } else { var bg = document.getElementById('bgImage'); if (result.cover) { - bg.setAttribute('style', 'background-image: url("/api/v1.0/Games/' + gameId + '/cover/image"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);'); + bg.setAttribute('style', 'background-image: url("/api/v1.1/Games/' + gameId + '/cover/image"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);'); } else { var randomInt = randomIntFromInterval(1, 3); bg.setAttribute('style', 'background-image: url("/images/gamebg' + randomInt + '.jpg"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);'); @@ -175,7 +175,7 @@ var gameDeveloperLoaded = false; var gamePublisherLoaded = false; if (result.involvedCompanies) { - ajaxCall('/api/v1.0/games/' + gameId + '/companies', 'GET', function (result) { + ajaxCall('/api/v1.1/games/' + gameId + '/companies', 'GET', function (result) { var lstDevelopers = []; var lstPublishers = []; @@ -227,7 +227,7 @@ var gameImage = document.createElement('img'); gameImage.className = 'game_cover_image'; if (result.cover) { - gameImage.src = '/api/v1.0/Games/' + result.id + '/cover/image'; + gameImage.src = '/api/v1.1/Games/' + result.id + '/cover/image'; } else { gameImage.src = '/images/unknowngame.png'; gameImage.className = 'game_cover_image unknown'; @@ -240,7 +240,7 @@ var gameRatings = document.createElement('div'); for (var i = 0; i < result.ageRatings.ids.length; i++) { var ratingImage = document.createElement('img'); - ratingImage.src = '/api/v1.0/Games/' + result.id + '/agerating/' + result.ageRatings.ids[i] + '/image'; + ratingImage.src = '/api/v1.1/Games/' + result.id + '/agerating/' + result.ageRatings.ids[i] + '/image'; ratingImage.className = 'rating_image'; gameRatings.appendChild(ratingImage); } @@ -252,7 +252,7 @@ // load genres var gameSummaryGenres = document.getElementById('gamesumarry_genres'); if (result.genres) { - ajaxCall('/api/v1.0/Games/' + gameId + '/genre', 'GET', function (result) { + ajaxCall('/api/v1.1/Games/' + gameId + '/genre', 'GET', function (result) { for (var i = 0; i < result.length; i++) { var genreLabel = document.createElement('span'); genreLabel.className = 'gamegenrelabel'; @@ -281,7 +281,7 @@ var screenshotItem = document.createElement('div'); screenshotItem.id = 'gamescreenshots_gallery_' + imageIndex; screenshotItem.setAttribute('name', 'gamescreenshots_gallery_item'); - screenshotItem.setAttribute('style', 'background-image: url("/api/v1.0/Games/' + gameId + '/screenshots/' + result.screenshots.ids[i] + '/image"); background-position: center; background-repeat: no-repeat; background-size: contain;)'); + screenshotItem.setAttribute('style', 'background-image: url("/api/v1.1/Games/' + gameId + '/screenshots/' + result.screenshots.ids[i] + '/image"); background-position: center; background-repeat: no-repeat; background-size: contain;)'); screenshotItem.setAttribute('imageid', imageIndex); screenshotItem.setAttribute('imagetype', 0); screenshotItem.className = 'gamescreenshots_gallery_item'; @@ -293,7 +293,7 @@ // load videos if (result.videos) { - ajaxCall('/api/v1.0/Games/' + gameId + '/videos', 'GET', function (result) { + ajaxCall('/api/v1.1/Games/' + gameId + '/videos', 'GET', function (result) { var gameScreenshots_vGallery = document.getElementById('gamescreenshots_gallery_panel'); for (var i = 0; i < result.length; i++) { var vScreenshotItem = document.createElement('div'); @@ -360,7 +360,7 @@ } var gameRoms = document.getElementById('gamesummaryroms'); - ajaxCall('/api/v1.0/Games/' + gameId + '/roms', 'GET', function (result) { + ajaxCall('/api/v1.1/Games/' + gameId + '/roms', 'GET', function (result) { if (result.gameRomItems) { var gameRomItems = result.gameRomItems; var mediaGroups = result.mediaGroups; @@ -391,14 +391,14 @@ if (result.gameRomItems[i].emulator) { if (gameRomItems[i].emulator.type) { if (gameRomItems[i].emulator.type.length > 0) { - launchButton = 'Launch'; + launchButton = 'Launch'; } } } var newRow = [ ['', 'rom_checkbox_box_hidden', 'rom_edit_checkbox'], - '' + gameRomItems[i].name + '', + '' + gameRomItems[i].name + '', formatBytes(gameRomItems[i].size, 2), gameRomItems[i].romTypeMedia, gameRomItems[i].mediaLabel, @@ -436,7 +436,7 @@ if (gameRomItem.platformId == mediaGroup.platformId) { if (gameRomItem.emulator) { if (gameRomItem.emulator.type.length > 0) { - launchButton = 'Launch'; + launchButton = 'Launch'; break; } } @@ -459,7 +459,7 @@ break; case "Completed": statusText = 'Available'; - downloadLink = ''; + downloadLink = ''; packageSize = formatBytes(mediaGroup.size); launchButtonContent = launchButton; break; @@ -525,7 +525,7 @@ artworksPosition = 0; } var bg = document.getElementById('bgImage'); - bg.setAttribute('style', 'background-image: url("/api/v1.0/Games/' + gameId + '/artwork/' + artworks[artworksPosition] + '/image"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);'); + bg.setAttribute('style', 'background-image: url("/api/v1.1/Games/' + gameId + '/artwork/' + artworks[artworksPosition] + '/image"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);'); artworksTimer = setTimeout(rotateBackground, 60000); } } @@ -677,7 +677,7 @@ minimumInputLength: 3, placeholder: "Platform", ajax: { - url: '/api/v1.0/Search/Platform', + url: '/api/v1.1/Search/Platform', data: function (params) { var query = { SearchString: params.term @@ -709,7 +709,7 @@ templateResult: DropDownRenderGameOption, placeholder: "Game", ajax: { - url: '/api/v1.0/Search/Game', + url: '/api/v1.1/Search/Game', data: function (params) { fixplatform = $('#rom_edit_fixplatform').select2('data'); @@ -762,7 +762,7 @@ if (rom_checks[i].checked == true) { var romId = rom_checks[i].getAttribute('data-romid'); remapCallCounter += 1; - ajaxCall('/api/v1.0/Games/' + gameId + '/roms/' + romId + '?NewPlatformId=' + fixplatform[0].id + '&NewGameId=' + fixgame[0].id, 'PATCH', function (result) { + ajaxCall('/api/v1.1/Games/' + gameId + '/roms/' + romId + '?NewPlatformId=' + fixplatform[0].id + '&NewGameId=' + fixgame[0].id, 'PATCH', function (result) { remapTitlesCallback(); }, function (result) { remapTitlesCallback(); @@ -804,7 +804,7 @@ if (rom_checks[i].checked == true) { var romId = rom_checks[i].getAttribute('data-romid'); remapCallCounter += 1; - ajaxCall('/api/v1.0/Games/' + gameId + '/roms/' + romId, 'DELETE', function (result) { + ajaxCall('/api/v1.1/Games/' + gameId + '/roms/' + romId, 'DELETE', function (result) { remapTitlesCallback(); }); } @@ -846,7 +846,7 @@ } ajaxCall( - '/api/v1.0/Games/' + gameId + '/romgroup?PlatformId=' + platformId, + '/api/v1.1/Games/' + gameId + '/romgroup?PlatformId=' + platformId, 'POST', function (result) { DisplayROMCheckboxes(false); diff --git a/gaseous-server/wwwroot/pages/home.html b/gaseous-server/wwwroot/pages/home.html index 0a241cf..3059352 100644 --- a/gaseous-server/wwwroot/pages/home.html +++ b/gaseous-server/wwwroot/pages/home.html @@ -8,10 +8,10 @@ \ No newline at end of file diff --git a/gaseous-server/wwwroot/pages/login.html b/gaseous-server/wwwroot/pages/login.html new file mode 100644 index 0000000..99d35de --- /dev/null +++ b/gaseous-server/wwwroot/pages/login.html @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + Gaseous Games + + + + +
+
+
+ +
+
+
+ + +
Gaseous Games
+ + + + + + + + + + + + + + + + +
Email
Password
+ +
+ +
+
+
+
+ +
+ Wallpaper by Joey Kwok / Unsplash +
+ + + \ No newline at end of file diff --git a/gaseous-server/wwwroot/pages/settings.html b/gaseous-server/wwwroot/pages/settings.html index eef90ff..0eb93a5 100644 --- a/gaseous-server/wwwroot/pages/settings.html +++ b/gaseous-server/wwwroot/pages/settings.html @@ -6,10 +6,11 @@
Settings
System
-
Settings
-
Platform Mapping
+ + +
Firmware
-
Logs
+
About
@@ -23,6 +24,16 @@
\ No newline at end of file diff --git a/gaseous-server/wwwroot/scripts/filterformating.js b/gaseous-server/wwwroot/scripts/filterformating.js index 0e5336a..b4e497d 100644 --- a/gaseous-server/wwwroot/scripts/filterformating.js +++ b/gaseous-server/wwwroot/scripts/filterformating.js @@ -171,7 +171,7 @@ function buildFilterPanelItem(filterType, itemString, friendlyItemString, tags) filterPanelItemCheckBoxItem.className = 'filter_panel_item_checkbox'; filterPanelItemCheckBoxItem.name = 'filter_' + filterType; filterPanelItemCheckBoxItem.setAttribute('filter_id', itemString); - filterPanelItemCheckBoxItem.setAttribute('oninput' , 'executeFilter();'); + filterPanelItemCheckBoxItem.setAttribute('oninput' , 'executeFilter1_1();'); if (checkState == true) { filterPanelItemCheckBoxItem.checked = true; } @@ -198,7 +198,7 @@ function executeFilterDelayed() { filterExecutor = null; } - filterExecutor = setTimeout(executeFilter, 1000); + filterExecutor = setTimeout(executeFilter1_1, 1000); } function executeFilter() { @@ -299,4 +299,82 @@ function buildFilterTag(tags) { } return boundingDiv; +} + +function executeFilter1_1() { + console.log("Execute filter 1.1"); + var minUserRating = -1; + var minUserRatingInput = document.getElementById('filter_panel_userrating_min'); + if (minUserRatingInput.value) { + minUserRating = minUserRatingInput.value; + } + setCookie(minUserRatingInput.id, minUserRatingInput.value); + + var maxUserRating = -1; + var maxUserRatingInput = document.getElementById('filter_panel_userrating_max'); + if (maxUserRatingInput.value) { + maxUserRating = maxUserRatingInput.value; + } + setCookie(maxUserRatingInput.id, maxUserRatingInput.value); + + // build filter model + var model = { + "Name": document.getElementById('filter_panel_search').value, + "Platform": GetFilterQuery1_1('platform'), + "Genre": GetFilterQuery1_1('genre'), + "GameMode": GetFilterQuery1_1('gamemmode'), + "PlayerPerspective": GetFilterQuery1_1('playerperspective'), + "Theme": GetFilterQuery1_1('theme'), + "GameRating": { + "MinimumRating": minUserRating, + "MinimumRatingCount": -1, + "MaximumRating": maxUserRating, + "MaximumRatingCount": -1, + "IncludeUnrated": true + }, + "GameAgeRating": { + "AgeGroupings": [ + "Child", + "Teen", + "Mature", + "Adult" + ], + "IncludeUnrated": true + }, + "Sorting": { + "SortBy": "NameThe", + "SortAscenting": true + } + }; + + console.log('Search model = ' + JSON.stringify(model)); + + ajaxCall( + '/api/v1.1/Games', + 'POST', + function (result) { + var gameElement = document.getElementById('games_library'); + formatGamesPanel(gameElement, result); + }, + function (error) { + console.log('An error occurred: ' + JSON.stringify(error)); + }, + JSON.stringify(model) + ); +} + +function GetFilterQuery1_1(filterName) { + var Filters = document.getElementsByName('filter_' + filterName); + var selections = []; + + for (var i = 0; i < Filters.length; i++) { + if (Filters[i].checked) { + setCookie(Filters[i].id, true); + selections.push(Filters[i].getAttribute('filter_id')); + } else { + setCookie(Filters[i].id, false); + } + } + + return selections; } \ No newline at end of file diff --git a/gaseous-server/wwwroot/scripts/gamesformating.js b/gaseous-server/wwwroot/scripts/gamesformating.js index 49a4a0c..09b2929 100644 --- a/gaseous-server/wwwroot/scripts/gamesformating.js +++ b/gaseous-server/wwwroot/scripts/gamesformating.js @@ -20,7 +20,7 @@ function renderGameIcon(gameObject, showTitle, showRatings) { var gameImage = document.createElement('img'); gameImage.className = 'game_tile_image lazy'; if (gameObject.cover) { - gameImage.setAttribute('data-src', '/api/v1.0/Games/' + gameObject.id + '/cover/image'); + gameImage.setAttribute('data-src', '/api/v1.1/Games/' + gameObject.id + '/cover/image'); } else { gameImage.src = '/images/unknowngame.png'; gameImage.className = 'game_tile_image unknown'; @@ -40,7 +40,7 @@ function renderGameIcon(gameObject, showTitle, showRatings) { ratingsSection.id = 'ratings_section'; for (var i = 0; i < gameObject.ageRatings.ids.length; i++) { var ratingImage = document.createElement('img'); - ratingImage.src = '/api/v1.0/Games/' + gameObject.id + '/agerating/' + gameObject.ageRatings.ids[i] + '/image'; + ratingImage.src = '/api/v1.1/Games/' + gameObject.id + '/agerating/' + gameObject.ageRatings.ids[i] + '/image'; ratingImage.className = 'rating_image_mini'; ratingsSection.appendChild(ratingImage); } diff --git a/gaseous-server/wwwroot/scripts/main.js b/gaseous-server/wwwroot/scripts/main.js index 9d84989..86ab2a0 100644 --- a/gaseous-server/wwwroot/scripts/main.js +++ b/gaseous-server/wwwroot/scripts/main.js @@ -373,4 +373,19 @@ function LoadEditableTableData(TableName, Headers, Values) { eTable.appendChild(row); } +} + +function CreateBadge(BadgeText, ColourOverride) { + var badgeItem = document.createElement('div'); + badgeItem.className = 'dropdownroleitem'; + badgeItem.innerHTML = BadgeText.toUpperCase(); + var colorVal = intToRGB(hashCode(BadgeText)); + if (!ColourOverride) { + badgeItem.style.backgroundColor = '#' + colorVal; + badgeItem.style.borderColor = '#' + colorVal; + } else { + badgeItem.style.backgroundColor = ColourOverride; + badgeItem.style.borderColor = ColourOverride; + } + return badgeItem; } \ No newline at end of file diff --git a/gaseous-server/wwwroot/styles/style.css b/gaseous-server/wwwroot/styles/style.css index 082b900..ca8dbba 100644 --- a/gaseous-server/wwwroot/styles/style.css +++ b/gaseous-server/wwwroot/styles/style.css @@ -30,12 +30,12 @@ h3 { .modal { display: none; /* Hidden by default */ position: fixed; /* Stay in place */ - z-index: 1; /* Sit on top */ + z-index: 100; /* Sit on top */ left: 0; top: 0; width: 100%; /* Full width */ height: 100%; /* Full height */ - overflow: auto; /* Enable scroll if needed */ + overflow: none; /* Enable scroll if needed */ background-color: rgb(0,0,0); /* Fallback color */ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ backdrop-filter: blur(8px); @@ -47,9 +47,10 @@ h3 { /* Modal Content/Box */ .modal-content { background-color: #383838; - margin: 15% auto; /* 15% from the top and centered */ + margin: 10% auto; /* 15% from the top and centered */ padding: 10px; border: 1px solid #888; + border-radius: 10px; width: 700px; /* Could be more or less, depending on screen size */ min-height: 358px; } @@ -58,6 +59,7 @@ h3 { margin: 20% auto; /* 20% from the top and centered */ padding: 10px; border: 1px solid #888; + border-radius: 10px; width: 300px; /* Could be more or less, depending on screen size */ min-height: 110px; } @@ -205,7 +207,7 @@ h3 { z-index: 1; } -input[type='text'], input[type='number'] { +input[type='text'], input[type='number'], input[type="email"], input[type="password"] { background-color: #2b2b2b; color: white; padding: 5px; @@ -409,7 +411,7 @@ input[id='filter_panel_userrating_max'] { display: inline-block; max-width: 32px; max-height: 32px; - margin-right: 2px; + margin-right: 10px; } #gamescreenshots { @@ -621,14 +623,14 @@ th { height: 100%; } -div[name="properties_toc_item"] { +div[name="properties_toc_item"],div[name="properties_user_toc_item"],div[name="properties_profile_toc_item"] { padding: 10px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #2b2b2b; } -div[name="properties_toc_item"]:hover { +div[name="properties_toc_item"]:hover,div[name="properties_user_toc_item"]:hover,div[name="properties_profile_toc_item"]:hover { background-color: #2b2b2b; cursor: pointer; } @@ -965,4 +967,98 @@ button:disabled { .romGroupTitles { padding-left: 20px; +} + +.loginwindow { + position: fixed; /* Stay in place */ + left: 0; + top: 0; + width: 100%; /* Full width */ + height: 100%; /* Full height */ + overflow: auto; /* Enable scroll if needed */ + /*background-color: rgb(0,0,0); /* Fallback color */ + /*background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ + /*backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px);*/ + filter: drop-shadow(5px 5px 10px #000); + -webkit-filter: drop-shadow(5px 5px 10px #000); +} + +/* Modal Content/Box */ +.loginwindow-content { + position: relative; + background-color: #383838; + margin: 15% auto; /* 15% from the top and centered */ + padding: 10px; + border: 1px solid #888; + border-radius: 10px; + width: 350px; /* Could be more or less, depending on screen size */ + min-height: 250px; +} + +#loginwindow_header_label { + font-family: Commodore64; + display: inline-block; + padding: 10px; + font-size: 24pt; + vertical-align: top; + /*color: #edeffa;*/ + color: #7c70da; +} + +/* The container
- needed to position the dropdown content */ +.dropdown { + position: relative; + display: inline-block; + float: right; +} + +/* Dropdown Content (Hidden by Default) */ +.dropdown-content { + display: none; + position: absolute; + background-color: #f1f1f1; + min-width: 160px; + /* box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); */ + z-index: 1; + right: 0; + top: 40px; + filter: drop-shadow(5px 5px 10px #000); + -webkit-filter: drop-shadow(5px 5px 10px #000); +} + +/* Links inside the dropdown */ +.dropdown-content a, .dropdown-content span { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} + +.dropdown-content span { + cursor: auto; +} + +/* Change color of dropdown links on hover */ +.dropdown-content a:hover {background-color: #ddd;} + +/* Show the dropdown menu (use JS to add this class to the .dropdown-content container when the user clicks on the dropdown button) */ +.show {display:block;} + +.dropdownroleitem { + text-transform: capitalize; + font-size: 12px; + font-weight: bold; + color: white; + background-color: red; + border-color: red; + border-style: solid; + border-width: 1px; + border-radius: 5px; + padding: 3px 6px; + display: inline-block; + margin-top: 5px; + margin-bottom: 5px; + margin-left: 5px; + margin-right: 5px; } \ No newline at end of file

o-OOgxh&L3>8yLBg{{W0C=BijSsl&@q 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≪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 ZhBJ)><&Lh5A)^gOoN6aJ9Sz-o|JiCkbX))c literal 0 HcmV?d00001 diff --git a/gaseous-server/wwwroot/images/tick.svg b/gaseous-server/wwwroot/images/tick.svg new file mode 100644 index 0000000..930e337 --- /dev/null +++ b/gaseous-server/wwwroot/images/tick.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/gaseous-server/wwwroot/images/user.svg b/gaseous-server/wwwroot/images/user.svg new file mode 100644 index 0000000..13efef2 --- /dev/null +++ b/gaseous-server/wwwroot/images/user.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/gaseous-server/wwwroot/index.html b/gaseous-server/wwwroot/index.html index 42f2b99..a9e0189 100644 --- a/gaseous-server/wwwroot/index.html +++ b/gaseous-server/wwwroot/index.html @@ -2,7 +2,7 @@ - + @@ -38,6 +38,8 @@ head.appendChild(newLink); } } + + var userProfile; @@ -45,24 +47,35 @@