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);
    }
}
