From 356ba94592cb38e620322e2abf1d55d59e881860 Mon Sep 17 00:00:00 2001 From: Marcel Baumgartner Date: Tue, 18 Jul 2023 01:57:48 +0200 Subject: [PATCH] Implemented new user editing including permission groups --- .../App/Models/Forms/UserEditDataModel.cs | 34 ++++++ Moonlight/Shared/Views/Admin/Users/Edit.razor | 102 +++++++++++------- Moonlight/Shared/Views/Admin/Users/View.razor | 4 +- 3 files changed, 99 insertions(+), 41 deletions(-) create mode 100644 Moonlight/App/Models/Forms/UserEditDataModel.cs diff --git a/Moonlight/App/Models/Forms/UserEditDataModel.cs b/Moonlight/App/Models/Forms/UserEditDataModel.cs new file mode 100644 index 00000000..1af0ccb0 --- /dev/null +++ b/Moonlight/App/Models/Forms/UserEditDataModel.cs @@ -0,0 +1,34 @@ +using System.ComponentModel.DataAnnotations; +using Moonlight.App.Database.Entities; +using Moonlight.App.Models.Misc; + +namespace Moonlight.App.Models.Forms; + +public class UserEditDataModel +{ + [Required] + public string FirstName { get; set; } = ""; + + [Required] + public string LastName { get; set; } = ""; + + [Required] + public string Email { get; set; } = ""; + + [Required] + public string Address { get; set; } = ""; + + [Required] + public string City { get; set; } = ""; + + [Required] + public string State { get; set; } = ""; + + [Required] + public string Country { get; set; } = ""; + + public bool Admin { get; set; } + public bool TotpEnabled { get; set; } + public ulong DiscordId { get; set; } + public PermissionGroup? PermissionGroup { get; set; } +} \ No newline at end of file diff --git a/Moonlight/Shared/Views/Admin/Users/Edit.razor b/Moonlight/Shared/Views/Admin/Users/Edit.razor index 2586705f..2c97aab5 100644 --- a/Moonlight/Shared/Views/Admin/Users/Edit.razor +++ b/Moonlight/Shared/Views/Admin/Users/Edit.razor @@ -1,12 +1,15 @@ @page "/admin/users/edit/{Id:int}" @using Moonlight.App.Repositories @using Moonlight.App.Database.Entities +@using Moonlight.App.Models.Forms @using Moonlight.App.Models.Misc @using Moonlight.App.Services @using Moonlight.App.Services.Interop @using Moonlight.App.Services.Sessions +@using Mappy.Net @inject Repository UserRepository +@inject Repository PermissionGroupRepository @inject UserService UserService @inject SessionServerService SessionServerService @inject ToastService ToastService @@ -15,24 +18,25 @@ @attribute [PermissionRequired(nameof(Permissions.AdminUserEdit))] - @if (User == null) - { -
- No user with this id found -
- } - else - { -
-
-

- - Manage user @(User.Email) - -

-
+ @if (User == null) + { +
+ No user with this id found +
+ } + else + { +
+
+

+ + Manage user @(User.Email) + +

+
+
@@ -40,19 +44,19 @@ - +
- +
- +
@@ -87,6 +91,16 @@
+
+
+ + +
+
@@ -110,34 +122,34 @@ - +
- +
- +
- +
- +
- + @@ -148,15 +160,17 @@ - + +
- } - - -
+ + } + + + @code { @@ -164,14 +178,25 @@ public int Id { get; set; } private User? User; + private UserEditDataModel Model { get; set; } = new(); private string NewPassword = ""; + private PermissionGroup[] PermissionGroups; + private PermissionEditor PermissionEditor; private Task Load(LazyLoader arg) { User = UserRepository.Get().FirstOrDefault(x => x.Id == Id); + if (User != null) + { + Model = Mapper.Map(User); + PermissionGroups = PermissionGroupRepository + .Get() + .ToArray(); + } + return Task.CompletedTask; } @@ -188,6 +213,7 @@ private async Task Update() { + User = Mapper.Map(User, Model); UserRepository.Update(User!); await ToastService.Success(SmartTranslateService.Translate("Successfully updated user")); @@ -197,9 +223,9 @@ { await UserService.ChangePassword(User!, NewPassword, true); NewPassword = ""; - + await SessionServerService.ReloadUserSessions(User!); - + await ToastService.Success(SmartTranslateService.Translate("Successfully updated password")); } @@ -213,7 +239,7 @@ { User!.Permissions = data; UserRepository.Update(User); - + await SessionServerService.ReloadUserSessions(User); await ToastService.Success(SmartTranslateService.Translate("Successfully updated user")); diff --git a/Moonlight/Shared/Views/Admin/Users/View.razor b/Moonlight/Shared/Views/Admin/Users/View.razor index 15bcccc1..9e6dc07c 100644 --- a/Moonlight/Shared/Views/Admin/Users/View.razor +++ b/Moonlight/Shared/Views/Admin/Users/View.razor @@ -101,9 +101,7 @@