Files
nexus/backend/Controllers/SecurityController.cs
T
AzuTear f5552218bc
CI - Build & Test / Backend (.NET) (push) Successful in 42s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 2m46s
CI - Build & Test / Security Check (push) Successful in 3s
CI - Build & Test / Deploy Nexus (push) Successful in 56s
feat: ship agent-first mission control v0.2.57
2026-07-31 22:39:47 +02:00

39 lines
1.3 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Nexus.Api.Models;
namespace Nexus.Api.Controllers;
[ApiController]
[Authorize]
[Route("api/v1/security")]
public class SecurityController(IConfiguration config) : ControllerBase
{
[HttpGet("status")]
[ProducesResponseType(typeof(SecurityStatusDto), StatusCodes.Status200OK)]
public IResult GetStatus()
{
var jwtIssuer = config["Jwt:Issuer"] ?? "nexus";
var jwtAudience = config["Jwt:Audience"] ?? "nexus-web";
var refreshDays = config.GetValue<int>("Jwt:RefreshTokenExpirationDays", 7);
var accessTokenMinutes = config.GetValue<int>("Jwt:AccessTokenExpirationMinutes", 30);
return Results.Ok(new SecurityStatusDto(
"JWT + PBKDF2",
new SecurityTokenConfigDto(
jwtIssuer,
jwtAudience,
refreshDays,
accessTokenMinutes),
"5 login attempts per minute per IP",
"Minimum 10 characters",
new SecurityCookieConfigDto(
HttpOnly: true,
Secure: true,
SameSite: "Strict"),
TwoFactorEnabled: false,
PasskeyEnabled: false,
DateTimeOffset.UtcNow));
}
}