From 2a81f33340ebf6f651b8133bebff84167d59144e Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 24 Oct 2024 22:10:02 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Erweiterungsmethoden=20zum=20Extrahiere?= =?UTF-8?q?n=20von=20Benutzerdetails=20in=20ControllerExtensions=20hinzuge?= =?UTF-8?q?f=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Methoden implementiert, um Benutzer-ID, Benutzernamen, Nachnamen, Vornamen und E-Mail aus den Claims zu extrahieren - Null-Überprüfungen und Parsing-Logik bereitgestellt, um eine gültige Extraktion sicherzustellen --- .../Controllers/ControllerExtensions.cs | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 WorkFlow.API/Controllers/ControllerExtensions.cs diff --git a/WorkFlow.API/Controllers/ControllerExtensions.cs b/WorkFlow.API/Controllers/ControllerExtensions.cs new file mode 100644 index 0000000..342f51a --- /dev/null +++ b/WorkFlow.API/Controllers/ControllerExtensions.cs @@ -0,0 +1,94 @@ +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 = default; + 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; + } + } + } +} \ No newline at end of file