Added User Page

This commit is contained in:
Samuele Lorefice
2025-09-09 18:49:20 +02:00
parent 021e186611
commit f2db2e5204
2 changed files with 72 additions and 5 deletions

View File

@@ -49,17 +49,18 @@
</div>
<div class="mx-2">@LoginService.LoggedUser?.Username</div>
<div class="btn-group">
<button class="btn btn-lg btn-outline-light" type="button">
<button class="btn btn-outline-light" type="button">
<i class="bi bi-person-circle"></i>
</button>
<button class="btn btn-lg btn-outline-light dropdown-toggle dropdown-toggle-split"
<button class="btn btn-outline-light dropdown-toggle dropdown-toggle-split"
data-bs-toggle="dropdown"></button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="#"><i class="bi bi-person-lines-fill"></i> Profile</a>
</li>
<li><a class="dropdown-item" @onclick="OnProfileClick"><i class="bi bi-person-lines-fill"></i> Profile</a></li>
@if (Admin) {
<li><a class="dropdown-item" @onclick="OnSettingsClick"><i
class="bi bi-gear-wide-connected"></i> Settings</a></li>
<li><a class="dropdown-item" @onclick="OnSettings1Click"><i
class="bi bi-gear-wide-connected"></i> Settings 1</a></li>
<li><a class="dropdown-item" @onclick="OnJobsClick"><i class="bi bi-kanban-fill"></i>
Jobs</a></li>
}
@@ -80,8 +81,8 @@
bool needsUpdate;
protected async override Task OnInitializedAsync() {
await base.OnInitializedAsync();
LoginService.LoggedUserChanged += (_, _) => needsUpdate = true;
await base.OnInitializedAsync();
//await LoadStateAsync();
}
@@ -121,4 +122,8 @@
Navigation.NavigateTo("/", true);
}
void OnSettings1Click() => Navigation.NavigateTo("/Settings1");
void OnProfileClick() => Navigation.NavigateTo($"/User/{LoginService.AuthInfo?.UserId}", true);
}

View File

@@ -0,0 +1,62 @@
@page "/User/{UserId:guid}"
@using Butter.Dtos.User
@using Butter.Types
@using MilkStream.Services
@inject LoginService LoginService
@inject UserService UserService
<h3>@(user?.Username ?? "Username")</h3>
<div class="row">
@if (isSelf || adminAccess) {
<div class="col-2"><i class="bi bi-envelope-at"></i> EMail:</div>
<div class="col-2">@user?.Email</div>
}
</div>
<div class="row">
<div class="col-2"><i class="bi bi-person-fill-lock"></i> Role:</div>
<div class="col-2">@user?.AccessLevel.ToString()</div>
</div>
<div class="row">
<div class="col-2"><i class="bi bi-calendar-date"></i> Creation Date:</div>
<div class="col-2">@user?.CreatedAt</div>
</div>
<div class="row">
<div class="col-2"><i class="bi bi-door-open"></i> Last Login:</div>
<div class="col-2">@(user?.LastLogin.ToString() ?? "Never")</div>
</div>
<div class="row">
<div class="col-2"><i class="bi bi-ban"></i>Banned:</div>
<div class="col-2">@(user is {IsBanned: true} ? $"Yes ({user.BannedAt.ToString()})" : "No")</div>
</div>
<div class="row">
@if (adminAccess) {
<div class="col-2"><i class="bi bi-trash3"></i>Deleted:</div>
<div class="col-2">@(user is not {DeletedAt: null} ? user!.DeletedAt.ToString() : "No")</div>
}
</div>
@code {
[Parameter]
public Guid UserId { get; set; }
bool isSelf;
bool adminAccess => LoginService.LoggedUser?.AccessLevel == EAccessLevel.Admin;
UserInfoDto? user;
protected async override Task OnInitializedAsync() {
await base.OnInitializedAsync();
if (LoginService.IsLoggedIn) await LoadUser();
LoginService.AuthInfoChanged += (sender, info) => LoadUser();
}
async Task LoadUser() {
if (UserId == LoginService.AuthInfo?.UserId) isSelf = true;
user = await UserService.GetUserAsync();
StateHasChanged();
}
}