Merge pull request #225 from LD-Reborn/223-user-profile---image-and-empty-page

Added user image and navbar elements
This commit is contained in:
LD50
2025-11-01 22:22:57 +01:00
committed by GitHub
5 changed files with 67 additions and 10 deletions

View File

@@ -95,6 +95,7 @@ public class HomeController : Controller
[Authorize(Roles = "CanManageUsers")] [Authorize(Roles = "CanManageUsers")]
[HttpGet("UserPhoto")] [HttpGet("UserPhoto")]
[ResponseCache(Duration = 3600, Location = ResponseCacheLocation.Any, VaryByQueryKeys = new[] { "uid", "size" })]
public async Task<IActionResult> UserPhotoAsync(string uid, int? size) public async Task<IActionResult> UserPhotoAsync(string uid, int? size)
{ {
UserModel? user = await _ldap.GetUserByUidAsync(uid, _ldap.UsersAttributes); UserModel? user = await _ldap.GetUserByUidAsync(uid, _ldap.UsersAttributes);

View File

@@ -0,0 +1,36 @@
using Berufsschule_HAM.Services;
using Microsoft.AspNetCore.Mvc;
using Novell.Directory.Ldap;
using Berufsschule_HAM.Models;
using Berufsschule_HAM.Helpers;
using System.Security.Cryptography;
using System.Text;
using Microsoft.AspNetCore.Authorization;
using System.Text.Json;
using System.Buffers.Text;
[Authorize]
[Route("[controller]")]
public class SettingsController : Controller
{
private readonly LdapService _ldap;
private readonly ILogger<UsersController> _logger;
public SettingsController(LdapService ldap, ILogger<UsersController> logger)
{
_ldap = ldap;
_logger = logger;
}
[HttpGet("User")]
public new IActionResult User(UsersIndexRequestModel requestModel)
{
return View();
}
[HttpGet("Admin")]
public IActionResult Admin(UsersIndexRequestModel requestModel)
{
return View();
}
}

View File

@@ -0,0 +1 @@
<h3>Empty view lol</h3>

View File

@@ -0,0 +1 @@
<h3>Empty view lol</h3>

View File

@@ -1,6 +1,9 @@
@using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.AspNetCore.Mvc.Localization
@using System.Security.Claims @using System.Security.Claims
@inject IViewLocalizer T @inject IViewLocalizer T
@{
bool IsAuthenticated = User.Identity?.IsAuthenticated ?? false;
}
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@@ -42,7 +45,7 @@
</button> </button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between"> <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1"> <ul class="navbar-nav flex-grow-1">
@if (User.Identity?.IsAuthenticated ?? false) @if (IsAuthenticated)
{ {
@if (User.HasClaim(ClaimTypes.Role, "CanInventorize")) @if (User.HasClaim(ClaimTypes.Role, "CanInventorize"))
{ {
@@ -75,17 +78,32 @@
</li> </li>
} }
} }
<li class="nav-item"> @if (!IsAuthenticated)
@if (User.Identity.IsAuthenticated) {
{ <li class="nav-item">
<a class="nav-link text" asp-area="" asp-controller="Home" asp-action="Logout">@T["Log out"]</a>
}
else
{
<a class="nav-link text" asp-area="" asp-controller="Home" asp-action="Login">@T["Login"]</a> <a class="nav-link text" asp-area="" asp-controller="Home" asp-action="Login">@T["Login"]</a>
} </li>
</li> }
</ul> </ul>
@if (IsAuthenticated && User.Identity is not null)
{
<ul class="navbar-nav ms-auto">
<li class="nav-item dropdown">
<div class="nav-link dropdown-toggle d-flex align-items-center" href="#" id="userDropdown" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
<img src="/Home/UserPhoto?uid=@User.Identity.Name&size=256" alt="Profile"
class="rounded-circle me-2" width="30" height="30" />
<span>@User.Identity.Name</span>
</div>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">
<li><a class="dropdown-item" asp-controller="Settings" asp-action="User">@T["User settings"]</a></li>
<li><a class="dropdown-item" asp-controller="Settings" asp-action="Admin">@T["Admin settings"]</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" asp-controller="Home" asp-action="Logout">@T["Log out"]</a></li>
</ul>
</li>
</ul>
}
</div> </div>
</div> </div>
</nav> </nav>