29 lines
972 B
C#
29 lines
972 B
C#
using System.Security.Claims;
|
|
|
|
public class CurrentUserService : ICurrentUserService
|
|
{
|
|
private readonly IHttpContextAccessor _http;
|
|
|
|
public CurrentUserService(IHttpContextAccessor http) => _http = http;
|
|
|
|
public Guid? UserId =>
|
|
Guid.TryParse(_http.HttpContext?.User.FindFirstValue(ClaimTypes.NameIdentifier), out var id)
|
|
? id : null;
|
|
|
|
public string? Username => _http.HttpContext?.User.FindFirstValue(ClaimTypes.Name);
|
|
|
|
public string? DisplayName => _http.HttpContext?.User.FindFirstValue("display_name");
|
|
|
|
public ClinicalRole? Role
|
|
{
|
|
get
|
|
{
|
|
var role = _http.HttpContext?.User.FindFirstValue("clinical_role");
|
|
return role is null ? null : ClinicalRoleExtensions.FromDbString(role);
|
|
}
|
|
}
|
|
|
|
public bool IsAuthenticated => _http.HttpContext?.User.Identity?.IsAuthenticated == true;
|
|
|
|
public string? IpAddress => _http.HttpContext?.Connection.RemoteIpAddress?.ToString();
|
|
} |