mirror of
https://github.com/Stefan-5422/-T5-Elektrifikatsiya.git
synced 2026-09-04 00:45:58 +02:00
UserSystemUpdate
This commit is contained in:
@@ -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,6 +44,8 @@ public interface IAuthenticationService
|
||||
/// <returns>A <see cref="Task"/> to <see langword="await"/>.</returns>
|
||||
Task<Result> DeleteUserAsync();
|
||||
|
||||
Task<Result> DeleteUser(User user);
|
||||
|
||||
/// <summary>
|
||||
/// Checks if a user exists.
|
||||
/// </summary>
|
||||
|
||||
+13
-2
@@ -36,6 +36,12 @@ public class AuthenticationService : IAuthenticationService
|
||||
return (await Result.Try(() => mainDatabaseContext.SaveChangesAsync())).ToResult();
|
||||
}
|
||||
|
||||
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,6 +61,11 @@ public class AuthenticationService : IAuthenticationService
|
||||
return user;
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user