diff --git a/EnvelopeGenerator.API/Controllers/AuthController.cs b/EnvelopeGenerator.API/Controllers/AuthController.cs index cec9b1bd..2d39a880 100644 --- a/EnvelopeGenerator.API/Controllers/AuthController.cs +++ b/EnvelopeGenerator.API/Controllers/AuthController.cs @@ -1,4 +1,3 @@ -using EnvelopeGenerator.API.Extensions; using EnvelopeGenerator.API.Models; using EnvelopeGenerator.Domain.Constants; using Microsoft.AspNetCore.Authentication; @@ -18,6 +17,17 @@ public partial class AuthController(IOptions authTokenKeyOptions, { private readonly AuthTokenKeys authTokenKeys = authTokenKeyOptions.Value; + /// + /// Überprüft, ob der Benutzer über die angegebene Berechtigung verfügt. + /// + /// + /// + protected async Task IsUserInPolicyAsync(string policyName) + { + var result = await authService.AuthorizeAsync(User, policyName); + return result.Succeeded; + } + /// /// Entfernt das Authentifizierungs-Cookie des Benutzers (AuthCookie) /// @@ -32,15 +42,15 @@ public partial class AuthController(IOptions authTokenKeyOptions, /// /// Erfolgreich gelöscht, wenn der Benutzer ein berechtigtes Cookie hat. /// Wenn es kein zugelassenes Cookie gibt, wird „nicht zugelassen“ zurückgegeben. - [ProducesResponseType(typeof(string), StatusCodes.Status200OK, "text/javascript")] + [ProducesResponseType(typeof(void), StatusCodes.Status200OK)] [ProducesResponseType(typeof(void), StatusCodes.Status401Unauthorized)] [Authorize(Policy = AuthPolicy.SenderOrReceiver)] [HttpPost("logout")] public async Task Logout() { - if (await authService.AuthorizePolicyAsync(User, AuthPolicy.Sender)) + if (await IsUserInPolicyAsync(AuthPolicy.Sender)) Response.Cookies.Delete(authTokenKeys.Cookie); - else if (await authService.AuthorizePolicyAsync(User, AuthPolicy.ReceiverOrReceiverTFA)) + else if (await IsUserInPolicyAsync(AuthPolicy.ReceiverOrReceiverTFA)) await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); else return Unauthorized();