@page "/Admin/PK/UsersManager"
@using System.Security.Claims
@using Microsoft.AspNetCore.Authorization
@using OrdersManagementDataModel.Dtos
@using Syncfusion.Blazor.Grids
@using Action = Syncfusion.Blazor.Grids.Action
@using UserService = OrdersManagement.Services.UserService
@using Syncfusion.Blazor.Cards
@using Syncfusion.Blazor.Popups
@using Syncfusion.Blazor.Buttons
@inject UserService UserService
@inject RoleService RoleService
@inject FunctionService FunctionService
@inject NavigationManager NavigationManager
@inject CustomAuthenticationStateProvider CustomAuthenticationStateProvider
Zarządzanie Użytkownikami i Rolami
Użytkownicy
@{
var user = (context as UserDto);
ResetPassword(user)">Zresetuj haslo
}
Role
Funkcje
Użytkownik @Login został dodany pomyślnie!
Hasło tymczasowe: @TempPassword
FA Krosno Manager © @(DateTime.Now.Year)
@code {
private List UserList { get; set; } = new();
private List Roles { get; set; } = new();
private List Functions { get; set; } = new();
private bool Visibility { get; set; }
private string Login { get; set; } = string.Empty;
private string TempPassword { get; set; } = string.Empty;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
Visibility = false;
// ClaimsPrincipal currentUser = CustomAuthenticationStateProvider.GetCurrentUser();
//
// if (currentUser.Identity?.IsAuthenticated == false || currentUser.Identity?.Name != "pkus")
// {
// NavigationManager.NavigateTo("/Unauthorized");
// }
// else
// {
await LoadUsers();
await LoadRoles();
//await LoadFunctions();
StateHasChanged();
// }
}
}
private async Task LoadUsers()
{
UserList = (await UserService.GetUsersAsync() ?? Array.Empty()).ToList();
}
private async Task LoadRoles()
{
Roles = (await RoleService.GetRolesAsync() ?? Array.Empty()).ToList();
}
private async Task LoadFunctions()
{
Functions = (await FunctionService.GetFunctionsAsync() ?? Array.Empty()).ToList();
}
public async Task ResetPassword(UserDto? user)
{
if(user == null) return;
TempPassword = Guid.NewGuid().ToString().Substring(0, 8);
Login = user.Login;
string passwordHash = BCrypt.Net.BCrypt.HashPassword(TempPassword);
user.PasswordHash = passwordHash;
user.IsTemporaryPassword = true;
await UserService.UpdateUserAsync(user);
await LoadUsers();
Visibility = true;
}
private async Task UserActionBegin(ActionEventArgs args)
{
switch (args.RequestType)
{
case Action.Delete:
await UserService.DeleteUserAsync(args.Data.RowPointer);
break;
case Action.Add:
args.Data.RowPointer = Guid.NewGuid();
args.Data.CreatedDate = DateTime.Now;
args.Data.IsActive = true;
break;
}
}
private async Task UserActionComplete(ActionEventArgs args)
{
switch (args.RequestType)
{
case Action.Delete:
await LoadUsers();
break;
case Action.Save when args.Data.Id == 0:
UserDto? user = args.Data;
TempPassword = Guid.NewGuid().ToString().Substring(0, 8);
Login = user.Login;
string? passwordHash = BCrypt.Net.BCrypt.HashPassword(TempPassword);
user.PasswordHash = passwordHash;
user.IsTemporaryPassword = true;
user.ActiveFrom = DateTime.Now;
user.CreatedDate = DateTime.Now;
await UserService.AddUserAsync(user);
await LoadUsers();
Visibility = true;
break;
case Action.Save when args.Data.Id != 0:
await UserService.UpdateUserAsync(args.Data);
await LoadUsers();
break;
}
}
private async Task RoleActionBegin(ActionEventArgs args)
{
if (args.RequestType.Equals(Action.Delete))
{
await RoleService.DeleteRoleAsync(args.Data.RowPointer);
}
else if (args.RequestType.Equals(Action.Add))
{
args.Data.RowPointer = Guid.NewGuid();
}
}
private async Task RoleActionComplete(ActionEventArgs args)
{
switch (args.RequestType)
{
case Action.Delete:
await LoadRoles();
break;
case Action.Save when args.Data.Id == 0:
await RoleService.AddRoleAsync(args.Data);
await LoadUsers();
break;
case Action.Save when args.Data.Id != 0:
await RoleService.UpdateRoleAsync(args.Data);
await LoadRoles();
break;
}
}
private async Task FunctionActionBegin(ActionEventArgs args)
{
if (args.RequestType.Equals(Action.Delete))
{
await FunctionService.DeleteFunctionAsync(args.Data.RowPointer);
}
else if (args.RequestType.Equals(Action.Add))
{
args.Data.RowPointer = Guid.NewGuid();
}
}
private async Task FunctionActionComplete(ActionEventArgs args)
{
switch (args.RequestType)
{
case Action.Delete:
await LoadFunctions();
break;
case Action.Save when args.Data.Id == 0:
await FunctionService.AddFunctionAsync(args.Data);
await LoadFunctions();
break;
case Action.Save when args.Data.Id != 0:
await FunctionService.UpdateFunctionAsync(args.Data);
await LoadFunctions();
break;
}
}
private void HideModal()
{
Visibility = false;
}
}