using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace WorkFlow.API.Controllers { public static class ControllerExtensions { public static bool TryGetUserId(this ControllerBase controller, out int? id) { var value = controller.User.FindFirstValue(ClaimTypes.NameIdentifier); if (value is null) { id = default; return false; } if(int.TryParse(value, out int id_int)) { id = id_int; return true; } else { id = null; return false; } } public static bool TryGetUsername(this ControllerBase controller, out string username) { var value = controller.User.FindFirstValue(ClaimTypes.Name); if (value is null) { username = string.Empty; return false; } else { username = value; return true; } } public static bool TryGetName(this ControllerBase controller, out string name) { var value = controller.User.FindFirstValue(ClaimTypes.Surname); if (value is null) { name = string.Empty; return false; } else { name = value; return true; } } public static bool TryGetPrename(this ControllerBase controller, out string prename) { var value = controller.User.FindFirstValue(ClaimTypes.GivenName); if (value is null) { prename = string.Empty; return false; } else { prename = value; return true; } } public static bool TryGetEmail(this ControllerBase controller, out string email) { var value = controller.User.FindFirstValue(ClaimTypes.Email); if (value is null) { email = string.Empty; return false; } else { email = value; return true; } } } }