From a2890948bbc45afbaf5e5160104fd980acae7e4c Mon Sep 17 00:00:00 2001 From: sbwalker Date: Wed, 29 Nov 2023 13:01:54 -0500 Subject: [PATCH] add ClaimsPrincipal extension methods --- .../Extensions/ClaimsPrincipalExtensions.cs | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Oqtane.Server/Extensions/ClaimsPrincipalExtensions.cs diff --git a/Oqtane.Server/Extensions/ClaimsPrincipalExtensions.cs b/Oqtane.Server/Extensions/ClaimsPrincipalExtensions.cs new file mode 100644 index 00000000..9e664f0f --- /dev/null +++ b/Oqtane.Server/Extensions/ClaimsPrincipalExtensions.cs @@ -0,0 +1,54 @@ +using System.Linq; +using System.Security.Claims; + +namespace Oqtane.Extensions +{ + public static class ClaimsPrincipalExtensions + { + public static string Username(this ClaimsPrincipal claimsPrincipal) + { + if (claimsPrincipal.HasClaim(item => item.Type == ClaimTypes.Name)) + { + return claimsPrincipal.Claims.FirstOrDefault(item => item.Type == ClaimTypes.Name).Value; + } + else + { + return ""; + } + } + + public static int UserId(this ClaimsPrincipal claimsPrincipal) + { + if (claimsPrincipal.HasClaim(item => item.Type == ClaimTypes.NameIdentifier)) + { + return int.Parse(claimsPrincipal.Claims.First(item => item.Type == ClaimTypes.NameIdentifier).Value); + } + else + { + return -1; + } + } + + public static string Roles(this ClaimsPrincipal claimsPrincipal) + { + var roles = ""; + foreach (var claim in claimsPrincipal.Claims.Where(item => item.Type == ClaimTypes.Role)) + { + roles += ((roles == "") ? "" : ";") + claim.Value; + } + return roles; + } + + public static string SiteKey(this ClaimsPrincipal claimsPrincipal) + { + if (claimsPrincipal.HasClaim(item => item.Type == "sitekey")) + { + return claimsPrincipal.Claims.FirstOrDefault(item => item.Type == "sitekey").Value; + } + else + { + return ""; + } + } + } +}