Limit player name lengths and fix vote UI defaults

This commit is contained in:
2026-02-02 19:39:32 +01:00
parent 1dc67879e5
commit f33545b184
11 changed files with 334 additions and 26 deletions

View File

@@ -17,13 +17,13 @@ public static class AuthEndpoints
group.MapPost("/register", async ([FromBody] RegisterRequest request, HttpContext ctx, AppDbContext db, IConfiguration config) =>
{
var username = request.Username?.Trim();
if (string.IsNullOrWhiteSpace(username) || username.Length > 64)
return Results.BadRequest(new { error = "Username is required and must be <= 64 characters." });
if (string.IsNullOrWhiteSpace(username) || username.Length > 24)
return Results.BadRequest(new { error = "Username is required and must be <= 24 characters." });
if (string.IsNullOrWhiteSpace(request.Password))
return Results.BadRequest(new { error = "Password is required." });
var displayName = EndpointHelpers.TrimTo(request.DisplayName, 64);
var displayName = EndpointHelpers.TrimTo(request.DisplayName, 16);
if (string.IsNullOrWhiteSpace(displayName))
return Results.BadRequest(new { error = "Display name is required." });
var normalized = username.ToLowerInvariant();
@@ -69,6 +69,8 @@ public static class AuthEndpoints
var username = request.Username?.Trim();
if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(request.Password))
return Results.BadRequest(new { error = "Username and password are required." });
if (username.Length > 24)
return Results.BadRequest(new { error = "Username must be <= 24 characters." });
var normalized = username.ToLowerInvariant();
var player = await db.Players.FirstOrDefaultAsync(p => p.NormalizedUsername == normalized);
@@ -77,7 +79,7 @@ public static class AuthEndpoints
if (string.IsNullOrWhiteSpace(player.DisplayName))
{
player.DisplayName = player.Username;
player.DisplayName = EndpointHelpers.TrimTo(player.Username, 16);
}
player.LastLoginAt = DateTimeOffset.UtcNow;
await db.SaveChangesAsync();

View File

@@ -32,15 +32,16 @@ public static class StateEndpoints
app.MapPost("/api/me/name", async ([FromBody] SetNameRequest request, HttpContext ctx, AppDbContext db) =>
{
if (string.IsNullOrWhiteSpace(request.Name) || request.Name.Length > 64)
var name = EndpointHelpers.TrimTo(request.Name, 16);
if (string.IsNullOrWhiteSpace(name))
{
return Results.BadRequest(new { error = "Name is required and must be <= 64 characters." });
return Results.BadRequest(new { error = "Name is required and must be <= 16 characters." });
}
var player = await EndpointHelpers.GetAuthenticatedPlayer(ctx, db);
if (player is null) return Results.Unauthorized();
player.DisplayName = request.Name.Trim();
player.DisplayName = name;
await db.SaveChangesAsync();
return Results.Ok(new { player.Id, player.DisplayName });
});