From 41151593fdaea35b18702e168bbf427d7997f884 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Fri, 25 Oct 2024 14:51:50 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20JWT-Service=20mit=20Unterst=C3=BCtzung?= =?UTF-8?q?=20f=C3=BCr=20UserReadDto-Anspr=C3=BCche=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ToClaimDictionary-Erweiterungsmethode hinzugefügt, um die Ansprüche von UserReadDto in ein Wörterbuch zu konvertieren. - JWT-Service konfiguriert, um Tokens mit Ansprüchen aus UserReadDto zu generieren. - JWT-Service in die Authentifizierungskonfiguration integriert. --- WorkFlow.API/Models/ModelExtensions.cs | 2 ++ WorkFlow.API/Program.cs | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/WorkFlow.API/Models/ModelExtensions.cs b/WorkFlow.API/Models/ModelExtensions.cs index cbc67f7..c7bc6e8 100644 --- a/WorkFlow.API/Models/ModelExtensions.cs +++ b/WorkFlow.API/Models/ModelExtensions.cs @@ -12,5 +12,7 @@ namespace WorkFlow.API.Models new (ClaimTypes.GivenName, user.Prename ?? ""), new (ClaimTypes.Email, user.Email ?? "") ]; + + public static Dictionary ToClaimDictionary(this UserReadDto user) => user.ToClaimList().ToDictionary(claim => claim.Type, claim => (object) claim.Value); } } \ No newline at end of file diff --git a/WorkFlow.API/Program.cs b/WorkFlow.API/Program.cs index 951cde6..3f4af42 100644 --- a/WorkFlow.API/Program.cs +++ b/WorkFlow.API/Program.cs @@ -5,6 +5,10 @@ using WorkFlow.Infrastructure; using Microsoft.AspNetCore.Authentication.Cookies; using DigitalData.Core.API; using DigitalData.Core.Application; +using DigitalData.UserManager.Application.DTOs.User; +using Microsoft.IdentityModel.Tokens; +using WorkFlow.API.Models; +using System.Security.Claims; var builder = WebApplication.CreateBuilder(args); var config = builder.Configuration; @@ -16,6 +20,10 @@ builder.Services.AddWorkFlow().AddUserManager(); builder.Services.AddCookieBasedLocalizer(); builder.ConfigureBySection(); builder.Services.AddDirectorySearchService(); +builder.Services.AddJWTService(user => new SecurityTokenDescriptor() +{ + Claims = user.ToClaimList().ToDictionary(claim => claim.Type, claim => claim.Value as object) +}); builder.Services.AddControllers();