feat: ship agent-first mission control v0.2.57
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

This commit is contained in:
AzuTear
2026-07-31 22:39:47 +02:00
parent 3bc7622977
commit f5552218bc
535 changed files with 95242 additions and 8791 deletions
+20 -11
View File
@@ -1,12 +1,16 @@
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";
@@ -14,16 +18,21 @@ public class SecurityController(IConfiguration config) : ControllerBase
var refreshDays = config.GetValue<int>("Jwt:RefreshTokenExpirationDays", 7);
var accessTokenMinutes = config.GetValue<int>("Jwt:AccessTokenExpirationMinutes", 30);
return Results.Ok(new
{
authMethod = "JWT + PBKDF2",
tokenConfig = new { refreshTokenDays = refreshDays, accessTokenMinutes },
rateLimit = "5 login attempts per minute per IP",
passwordPolicy = "Minimum 10 characters",
cookieConfig = new { httpOnly = true, secure = true, sameSite = "Strict" },
twoFactorEnabled = false,
passkeyEnabled = false,
checkedAt = DateTimeOffset.UtcNow
});
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));
}
}