24 lines
882 B
C#
24 lines
882 B
C#
|
|
using System.Security.Claims;
|
||
|
|
using JobsMedical.Web.Models;
|
||
|
|
using Microsoft.AspNetCore.Authentication.Cookies;
|
||
|
|
|
||
|
|
namespace JobsMedical.Web.Services;
|
||
|
|
|
||
|
|
/// <summary>Builds the cookie principal for a user. Shared by login and by role changes
|
||
|
|
/// (e.g. when a user registers a facility and becomes a FacilityAdmin mid-session).</summary>
|
||
|
|
public static class AuthHelper
|
||
|
|
{
|
||
|
|
public static ClaimsPrincipal BuildPrincipal(User user)
|
||
|
|
{
|
||
|
|
var claims = new List<Claim>
|
||
|
|
{
|
||
|
|
new(ClaimTypes.NameIdentifier, user.Id.ToString()),
|
||
|
|
new(ClaimTypes.MobilePhone, user.Phone),
|
||
|
|
new(ClaimTypes.Name, user.FullName ?? user.Phone),
|
||
|
|
new(ClaimTypes.Role, user.Role.ToString()),
|
||
|
|
};
|
||
|
|
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
|
||
|
|
return new ClaimsPrincipal(identity);
|
||
|
|
}
|
||
|
|
}
|