Compare commits

..

2 Commits

Author SHA1 Message Date
LittleSheep
d555fcaf17 🐛 Fix org publisher creation missing validation as well 2025-08-19 21:34:27 +08:00
LittleSheep
2fdefae718 🐛 Fix publiser has no validate 2025-08-19 21:24:30 +08:00

View File

@@ -240,7 +240,14 @@ public class PublisherController(
public class PublisherRequest public class PublisherRequest
{ {
[MaxLength(256)] public string? Name { get; set; } [RegularExpression(
@"^[a-zA-Z0-9](?:[a-zA-Z0-9\-_\.]*[a-zA-Z0-9])?$",
ErrorMessage =
"Name must be URL-safe (alphanumeric, hyphens, underscores, or periods) and cannot start/end with special characters."
)]
[MaxLength(256)]
public string? Name { get; set; }
[MaxLength(256)] public string? Nick { get; set; } [MaxLength(256)] public string? Nick { get; set; }
[MaxLength(4096)] public string? Bio { get; set; } [MaxLength(4096)] public string? Bio { get; set; }
@@ -253,6 +260,8 @@ public class PublisherController(
[RequiredPermission("global", "publishers.create")] [RequiredPermission("global", "publishers.create")]
public async Task<ActionResult<Publisher>> CreatePublisherIndividual([FromBody] PublisherRequest request) public async Task<ActionResult<Publisher>> CreatePublisherIndividual([FromBody] PublisherRequest request)
{ {
if (string.IsNullOrEmpty(request.Name) || string.IsNullOrEmpty(request.Nick))
return BadRequest("Name and Nick are required.");
if (HttpContext.Items["CurrentUser"] is not Account currentUser) return Unauthorized(); if (HttpContext.Items["CurrentUser"] is not Account currentUser) return Unauthorized();
var takenName = request.Name ?? currentUser.Name; var takenName = request.Name ?? currentUser.Name;
@@ -320,6 +329,8 @@ public class PublisherController(
public async Task<ActionResult<Publisher>> CreatePublisherOrganization(string realmSlug, public async Task<ActionResult<Publisher>> CreatePublisherOrganization(string realmSlug,
[FromBody] PublisherRequest request) [FromBody] PublisherRequest request)
{ {
if (string.IsNullOrEmpty(request.Name) || string.IsNullOrEmpty(request.Nick))
return BadRequest("Name and Nick are required.");
if (HttpContext.Items["CurrentUser"] is not Account currentUser) return Unauthorized(); if (HttpContext.Items["CurrentUser"] is not Account currentUser) return Unauthorized();
var realm = await db.Realms.FirstOrDefaultAsync(r => r.Slug == realmSlug); var realm = await db.Realms.FirstOrDefaultAsync(r => r.Slug == realmSlug);