UserSystemUpdate

This commit is contained in:
Friend2868
2023-06-13 21:22:13 +02:00
parent 5b8915d7b4
commit a36b4eafa7
5 changed files with 88 additions and 53 deletions
@@ -3,8 +3,13 @@
@using Elektrifikatsiya.Models;
@using System.Net
@using Elektrifikatsiya.Services;
@using Elektrifikatsiya.Services.Implementations;
@using FluentResults;
@inject IDeviceManagmentService DeviceManagmentService
@inject IMessageService MessageService
@inject IAuthenticationService AuthenthicationService;
@inject NavigationManager NavigationManager;
<Div>
<Row Style="width: 100%; height: 100%" Margin="Margin.Is3.FromTop.OnMobile" Padding="Padding.Is4.FromStart.OnMobile">
@@ -59,7 +64,7 @@
</Column>
<Column ColumnSize="ColumnSize.Is4.OnDesktop.Is7.OnMobile">
<Button Clicked="@ShowModalDelete" class="btn1" Position="Position.Absolute.Top.Is50.Start.Is50.Translate.Middle" Color="Color.Dark" Outline>
<Button @onclick="() => Delete(context.Item)" class="btn1" Position="Position.Absolute.Top.Is50.Start.Is50.Translate.Middle" Color="Color.Dark" Outline>
<BarIcon IconName="IconName.Delete" />
</Button>
<style>
@@ -77,39 +82,20 @@
<ModalBody>
<Field>
<FieldLabel>User Name</FieldLabel>
<TextEdit Placeholder="Enter user name..." />
<TextEdit @ref="modalAddUserName" Placeholder="Enter user name..." />
</Field>
<Field>
<FieldLabel>User E-Mail</FieldLabel>
<TextEdit Placeholder="Enter user E-mail..." />
<TextEdit @ref="modalAddUserEmail" Placeholder="Enter user E-mail..." />
</Field>
<Field>
<FieldLabel>User Password</FieldLabel>
<TextEdit Placeholder="Enter user password..." />
<TextEdit @ref="modalAddUserPW" Placeholder="Enter user password..." />
</Field>
</ModalBody>
<ModalFooter>
<Button Color="Color.Secondary" style="border-bottom-left-radius: 3px; border-bottom-right-radius: 3px" Clicked="@HideModalAddUser">Close</Button>
<Button Color="Color.Primary" style="border-bottom-left-radius: 0px; border-bottom-right-radius: 0" Clicked="@HideModalAddUser">Add</Button>
</ModalFooter>
</ModalContent>
</Modal>
<Modal @ref="modalRefDelete">
<ModalContent Centered>
<ModalHeader>
<ModalTitle>Delete User</ModalTitle>
<CloseButton />
</ModalHeader>
<ModalBody>
<Field>
<FieldLabel>Admin Password</FieldLabel>
<TextEdit Placeholder="Enter admin password..." />
</Field>
</ModalBody>
<ModalFooter>
<Button Color="Color.Secondary" style="border-bottom-left-radius: 3px; border-bottom-right-radius: 3px" Clicked="@HideModalDelete">Close</Button>
<Button Color="Color.Primary" style="border-bottom-left-radius: 0px; border-bottom-right-radius: 0px" Clicked="@HideModalDelete">Delete</Button>
<Button Color="Color.Primary" style="border-bottom-left-radius: 0px; border-bottom-right-radius: 0" Clicked="@AddButtonPressed">Add</Button>
</ModalFooter>
</ModalContent>
</Modal>
@@ -207,7 +193,7 @@
</Div>
@code {
List<User> users = new List<User>() { new User("Silas", "aldjlfasd", "[email protected]", Role.Admin), new User("Joe", "qiowruioewjfopa", "[email protected]", Role.Admin), new User("Stefan", "adfadsdf", "[email protected]" , Role.Admin), new User("Manu", "öhöfldaösldf", "[email protected]", Role.User) };
List<User> users = new List<User>();
User? SelectedUser = null;
User? UserCopy = null;
@@ -215,10 +201,19 @@
bool hideButtonSettings = true;
bool newpage = true;
private Modal? modalRefDelete;
private Modal? modalRefAddUser;
private TextEdit? modalAddUserName;
private TextEdit? modalAddUserEmail;
private TextEdit? modalAddUserPW;
public Admin()
protected override async void OnInitialized()
{
Result<List<User>> getUsersResult = await AuthenthicationService.GetUsers();
if (getUsersResult.IsSuccess)
{
users = getUsersResult.Value;
}
}
private void Toggle(User user)
@@ -238,28 +233,53 @@
newpage = false;
}
private Task ShowModalDelete()
{
return modalRefDelete!.Show();
}
private Task HideModalDelete() => modalRefDelete!.Hide();
private Modal? modalRefAddUser;
private Task ShowModalAddUser()
{
return modalRefAddUser!.Show();
}
private Task HideModalAddUser() => modalRefAddUser!.Hide();
private async Task AddModalAddUser(string name, string passwort)
private async void AddButtonPressed()
{
await AuthenthicationService.RegisterUserAsync(name, passwort, Role.User);
await HideModalAddUser();
await RegisterUser();
}
private async Task RegisterUser()
{
Result<Device> result = await AuthenthicationService.RegisterUserAsync(modalAddUserName.Text.ToString(), modalAddUserEmail.Text.ToString(), modalAddUserPW.Text.ToString(), Role.User);
if (result.IsSuccess)
{
await MessageService.Success("User added!");
}
else
{
await MessageService.Error(string.Join(',', result.Errors.Select(e => e.Message)), "Adding User failed!");
}
Result<List<User>> getUsersResult = await AuthenthicationService.GetUsers();
if (getUsersResult.IsSuccess)
{
users = getUsersResult.Value;
}
StateHasChanged();
}
private async Task Delete(User contextItem)
{
bool succ = await MessageService.Confirm($"Do you really want to delete the User \"{contextItem.Name}\"?");
if (!succ)
{
return;
}
await AuthenthicationService.DeleteUser(contextItem);
NavigationManager.NavigateTo(NavigationManager.Uri, true);
}
}
@@ -52,8 +52,8 @@
</Column>
<Column ColumnSize="ColumnSize.Is4.OnDesktop.Is7.OnMobile">
<Button class="btn1" Position="Position.Absolute.Top.Is50.Start.Is50.Translate.Middle" Color="Color.Dark" Outline>
<BarIcon @onclick="() => Delete(context.Item)" IconName="IconName.Delete" />
<Button @onclick="() => Delete(context.Item)" class="btn1" Position="Position.Absolute.Top.Is50.Start.Is50.Translate.Middle" Color="Color.Dark" Outline>
<BarIcon IconName="IconName.Delete" />
</Button>
<style>
.btn1:hover {
@@ -92,7 +92,7 @@ IAuthenticationService authenticationService = serviceScope.ServiceProvider.GetR
if (!mainDatabase.Users.Any())
{
_ = authenticationService.RegisterUserAsync("admin", "admin", Role.Admin);
_ = authenticationService.RegisterUserAsync("admin", "admin", "", Role.Admin);
}
app.Run();
@@ -12,6 +12,8 @@ public interface IAuthenticationService
/// <returns> <see cref="Task"/> to <see langword="await"/> and the currently authenticated user.</returns>
Task<Result<User>> GetUserAsync();
Task<Result<List<User>>> GetUsers();
/// <summary>
/// Registers a new user.
/// </summary>
@@ -20,7 +22,7 @@ public interface IAuthenticationService
/// <param name="role">The default role of the user.</param>
/// <returns>A <see cref="Task"/> to <see langword="await"/>.</returns>
Task<Result> RegisterUserAsync(string name, string password, Role role);
Task<Result> RegisterUserAsync(string name, string password, string email, Role role);
/// <summary>
/// Logs a user in.
@@ -42,12 +44,14 @@ public interface IAuthenticationService
/// <returns>A <see cref="Task"/> to <see langword="await"/>.</returns>
Task<Result> DeleteUserAsync();
/// <summary>
/// Checks if a user exists.
/// </summary>
/// <param name="name">The name address of the user.</param>
/// <returns>A <see cref="Task"/> to <see langword="await"/> and a <see cref="bool"/> that indicates if the user exists.</returns>
Task<Result<bool>> UserExistsAsync(string name);
Task<Result> DeleteUser(User user);
/// <summary>
/// Checks if a user exists.
/// </summary>
/// <param name="name">The name address of the user.</param>
/// <returns>A <see cref="Task"/> to <see langword="await"/> and a <see cref="bool"/> that indicates if the user exists.</returns>
Task<Result<bool>> UserExistsAsync(string name);
/// <summary>
/// Check if the current user is authenticated.
@@ -36,7 +36,13 @@ public class AuthenticationService : IAuthenticationService
return (await Result.Try(() => mainDatabaseContext.SaveChangesAsync())).ToResult();
}
public async Task<Result<User>> GetUserAsync()
public async Task<Result> DeleteUser(User user)
{
_ = mainDatabaseContext.Users.Remove(user);
return (await Result.Try(() => mainDatabaseContext.SaveChangesAsync())).ToResult();
}
public async Task<Result<User>> GetUserAsync()
{
string? token = httpContextAccessor.HttpContext?.Request.Cookies["token"]?.ToString();
@@ -55,7 +61,12 @@ public class AuthenticationService : IAuthenticationService
return user;
}
public async Task<Result<bool>> IsAuthenticated()
public async Task<Result<List<User>>> GetUsers()
{
return await mainDatabaseContext.Users.ToListAsync();
}
public async Task<Result<bool>> IsAuthenticated()
{
return (await GetUserAsync()).IsSuccess;
}
@@ -111,7 +122,7 @@ public class AuthenticationService : IAuthenticationService
return Result.Ok();
}
public async Task<Result> RegisterUserAsync(string name, string password, Role role)
public async Task<Result> RegisterUserAsync(string name, string password, string email, Role role)
{
Result<bool> userExistsResult = await UserExistsAsync(name);
@@ -120,7 +131,7 @@ public class AuthenticationService : IAuthenticationService
return Result.Fail("User name already exists!");
}
User user = new User(name, BC.HashPassword(password), "", role);
User user = new User(name, BC.HashPassword(password), email, role);
_ = mainDatabaseContext.Users.Add(user);
return (await Result.Try(() => mainDatabaseContext.SaveChangesAsync())).ToResult();