Skip to content

Commit f7db720

Browse files
committed
fix(admin): richiedi autenticazione su logout (CodeQL access-control)
L'endpoint POST /api/admin/auth/logout era [AllowAnonymous]: CodeQL lo segnala come cs/web/missing-function-level-access-control (high) perche' manca un controllo di autorizzazione a livello di funzione in un controller che altrimenti richiede Admin JWT. Ora logout richiede [Authorize]: solo login/refresh restano anonimi, come da security model admin. L'admin-web invia gia' il Bearer token via interceptor axios e gestisce il 401 in catch, quindi nessun impatto client. Build OK, 254/254 test verdi.
1 parent 6b21c40 commit f7db720

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

backend/src/Accanto.Admin.Api/Controllers/AdminAuthController.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,13 @@ public async Task<ActionResult<AdminAuthResponse>> Login([FromBody] AdminLoginRe
3131
public async Task<ActionResult<AdminAuthResponse>> Refresh([FromBody] AdminRefreshRequest request, CancellationToken ct)
3232
=> Ok(await _auth.RefreshAsync(request, BuildClientInfo(), ct));
3333

34+
// Logout richiede un Admin JWT valido ([Authorize] ereditato dal controller
35+
// non e' presente qui, quindi lo dichiariamo esplicito): l'admin deve essere
36+
// autenticato per terminare la propria sessione. Solo login/refresh restano
37+
// anonimi. Soddisfa anche il controllo CodeQL di access-control a livello di
38+
// funzione (nessun endpoint autenticato marcato AllowAnonymous per errore).
3439
[HttpPost("logout")]
35-
[AllowAnonymous]
40+
[Authorize]
3641
public async Task<IActionResult> Logout([FromBody] AdminLogoutRequest request, CancellationToken ct)
3742
{
3843
await _auth.LogoutAsync(request, ct);

0 commit comments

Comments
 (0)