mirror of
https://github.com/Sea-Haven-Industries/proposal-system.git
synced 2026-09-30 08:53:15 +00:00
Validate dev-login input: reject empty email and invalid role
Empty-string email passed model binding but created a ghost user with no identity. Invalid role strings (e.g. "SuperHero") silently defaulted to Admin, granting unintended elevated access. Now returns 400 for both cases. Default role changed from Admin to Dispatcher (least privilege).
This commit is contained in:
parent
d00c552497
commit
866601025d
1 changed files with 7 additions and 1 deletions
|
|
@ -99,7 +99,13 @@ public class AuthController : ControllerBase
|
|||
if (string.IsNullOrEmpty(signingKey))
|
||||
return StatusCode(500, new { message = "Dev signing key not configured" });
|
||||
|
||||
var role = Enum.TryParse<UserRole>(request.Role, true, out var parsed) ? parsed : UserRole.Admin;
|
||||
if (string.IsNullOrWhiteSpace(request.Email))
|
||||
return BadRequest(new { message = "Email is required" });
|
||||
|
||||
if (!string.IsNullOrEmpty(request.Role) && !Enum.TryParse<UserRole>(request.Role, true, out _))
|
||||
return BadRequest(new { message = $"Invalid role: '{request.Role}'. Valid roles are: Dispatcher, Admin, SysAdmin" });
|
||||
|
||||
var role = Enum.TryParse<UserRole>(request.Role, true, out var parsed) ? parsed : UserRole.Dispatcher;
|
||||
|
||||
var user = await _db.Users.FirstOrDefaultAsync(u => u.Email == request.Email, ct);
|
||||
if (user == null)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue