Refactor AuthController for interface and policy checks
Refactored AuthController to implement IAuthController and expose AuthService. Removed the protected IsUserInPolicyAsync method in favor of using an extension method for policy checks. Updated the Logout logic to use the new approach. Consolidated using directives into a single line.
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
using EnvelopeGenerator.API.Controllers.Interfaces;
|
||||||
using EnvelopeGenerator.API.Models;
|
using EnvelopeGenerator.API.Models;
|
||||||
using EnvelopeGenerator.Domain.Constants;
|
using EnvelopeGenerator.Domain.Constants;
|
||||||
using Microsoft.AspNetCore.Authentication;
|
using Microsoft.AspNetCore.Authentication;
|
||||||
@@ -13,20 +14,14 @@ namespace EnvelopeGenerator.API.Controllers;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[Route("api/[controller]")]
|
[Route("api/[controller]")]
|
||||||
[ApiController]
|
[ApiController]
|
||||||
public partial class AuthController(IOptions<AuthTokenKeys> authTokenKeyOptions, IAuthorizationService authService) : ControllerBase
|
public partial class AuthController(IOptions<AuthTokenKeys> authTokenKeyOptions, IAuthorizationService authService) : ControllerBase, IAuthController
|
||||||
{
|
{
|
||||||
private readonly AuthTokenKeys authTokenKeys = authTokenKeyOptions.Value;
|
private readonly AuthTokenKeys authTokenKeys = authTokenKeyOptions.Value;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Überprüft, ob der Benutzer über die angegebene Berechtigung verfügt.
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="policyName"></param>
|
public IAuthorizationService AuthService { get; } = authService;
|
||||||
/// <returns></returns>
|
|
||||||
protected async Task<bool> IsUserInPolicyAsync(string policyName)
|
|
||||||
{
|
|
||||||
var result = await authService.AuthorizeAsync(User, policyName);
|
|
||||||
return result.Succeeded;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Entfernt das Authentifizierungs-Cookie des Benutzers (AuthCookie)
|
/// Entfernt das Authentifizierungs-Cookie des Benutzers (AuthCookie)
|
||||||
@@ -48,9 +43,9 @@ public partial class AuthController(IOptions<AuthTokenKeys> authTokenKeyOptions,
|
|||||||
[HttpPost("logout")]
|
[HttpPost("logout")]
|
||||||
public async Task<IActionResult> Logout()
|
public async Task<IActionResult> Logout()
|
||||||
{
|
{
|
||||||
if (await IsUserInPolicyAsync(AuthPolicy.Sender))
|
if (await this.IsUserInPolicyAsync(AuthPolicy.Sender))
|
||||||
Response.Cookies.Delete(authTokenKeys.Cookie);
|
Response.Cookies.Delete(authTokenKeys.Cookie);
|
||||||
else if (await IsUserInPolicyAsync(AuthPolicy.ReceiverOrReceiverTFA))
|
else if (await this.IsUserInPolicyAsync(AuthPolicy.ReceiverOrReceiverTFA))
|
||||||
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
|
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
|
||||||
else
|
else
|
||||||
return Unauthorized();
|
return Unauthorized();
|
||||||
|
|||||||
Reference in New Issue
Block a user