- TryGetUserId wurde so geändert, dass es direkt die Methode expression-bodied mit int.TryParse verwendet. - Die Erweiterungsmethoden wurden aktualisiert, sodass sie nun statt auf ControllerBase auf ClaimsPrincipal abzielen, um eine bessere Abstraktion und Wiederverwendbarkeit zu erreichen. - Andere Methoden wurden aus Gründen der Konsistenz unverändert gelassen.
76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using System.Security.Claims;
|
|
using WorkFlow.API.Attributes;
|
|
|
|
namespace WorkFlow.API.Controllers
|
|
{
|
|
[APIKeyAuth]
|
|
public static class ControllerExtensions
|
|
{
|
|
public static bool TryGetUserId(this ClaimsPrincipal user, out int id) => int.TryParse(user.FindFirstValue(ClaimTypes.NameIdentifier), out id);
|
|
|
|
public static bool TryGetUsername(this ClaimsPrincipal user, out string username)
|
|
{
|
|
var value = user.FindFirstValue(ClaimTypes.Name);
|
|
|
|
if (value is null)
|
|
{
|
|
username = string.Empty;
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
username = value;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public static bool TryGetName(this ClaimsPrincipal user, out string name)
|
|
{
|
|
var value = user.FindFirstValue(ClaimTypes.Surname);
|
|
|
|
if (value is null)
|
|
{
|
|
name = string.Empty;
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
name = value;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public static bool TryGetPrename(this ClaimsPrincipal user, out string prename)
|
|
{
|
|
var value = user.FindFirstValue(ClaimTypes.GivenName);
|
|
|
|
if (value is null)
|
|
{
|
|
prename = string.Empty;
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
prename = value;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public static bool TryGetEmail(this ClaimsPrincipal user, out string email)
|
|
{
|
|
var value = user.FindFirstValue(ClaimTypes.Email);
|
|
|
|
if (value is null)
|
|
{
|
|
email = string.Empty;
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
email = value;
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
} |