using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; using EnvelopeGenerator.API.Models; namespace EnvelopeGenerator.API.Controllers; /// /// Controller verantwortlich für die Benutzer-Authentifizierung, einschließlich Anmelden, Abmelden und Überprüfung des Authentifizierungsstatus. /// /// [Route("api/[controller]")] [ApiController] public partial class AuthController(ILogger logger) : ControllerBase { /// /// Entfernt das Authentifizierungs-Cookie des Benutzers (AuthCookie) /// /// /// Gibt eine HTTP 200 oder 401. /// /// /// Sample request: /// /// POST /api/auth/logout /// /// /// 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.Status401Unauthorized)] [Authorize] [HttpPost("logout")] public async Task Logout() { await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); return Ok(); } /// /// Prüft, ob der Benutzer ein autorisiertes Token hat. /// /// Wenn ein autorisiertes Token vorhanden ist HTTP 200 asynchron 401 /// /// Sample request: /// /// GET /api/auth /// /// /// Wenn es einen autorisierten Cookie gibt. /// Wenn kein Cookie vorhanden ist oder nicht autorisierte. [ProducesResponseType(typeof(string), StatusCodes.Status200OK, "text/javascript")] [ProducesResponseType(typeof(void), StatusCodes.Status401Unauthorized)] [Authorize] [HttpGet] public IActionResult IsAuthenticated() => Ok(); }