using Nuuru.Server.Auth; using System.Security.Claims; namespace Nuuru.Server.Extensions { public static class ClaimsPrincipalExtensions { public static bool HasPermission(this ClaimsPrincipal user, string permission) { if (user == null) return false; if (user.Identity?.IsAuthenticated == false) return false; return user.HasClaim(Permissions.ClaimType, permission); } /* public static bool CanDeletePosts(this ClaimsPrincipal user) => user.HasPermission(Permissions.ModerationDeletePost); public static bool CanDeleteComments(this ClaimsPrincipal user) => user.HasPermission(Permissions.ModerationDeleteComment); public static bool CanEditTags(this ClaimsPrincipal user) => user.HasPermission(Permissions.ModerationEditTags); public static bool CanBanUsers(this ClaimsPrincipal user) => user.HasPermission(Permissions.ModerationBanUser); public static bool CanViewReports(this ClaimsPrincipal user) => user.HasPermission(Permissions.ModerationViewReports); public static bool CanViewAuditLog(this ClaimsPrincipal user) => user.HasPermission(Permissions.ModerationViewAuditLog); public static bool IsAdmin(this ClaimsPrincipal user) => user.HasPermission(Permissions.AdminManageUsers) || user.HasPermission(Permissions.AdminManagePermissions) || user.HasPermission(Permissions.AdminSystemSettings); */ public static Guid? GetUserId(this ClaimsPrincipal user) { var userIdClaim = user.FindFirst(ClaimTypes.NameIdentifier)?.Value; return Guid.TryParse(userIdClaim, out var userId) ? userId : null; } public static string? GetUserName(this ClaimsPrincipal user) => user.FindFirst(ClaimTypes.Name)?.Value; public static string? GetEmail(this ClaimsPrincipal user) => user.FindFirst(ClaimTypes.Email)?.Value; } }