From 078033d5a528d268f71fe90130732222d95db707 Mon Sep 17 00:00:00 2001 From: NhanNPSE184696 Date: Sun, 1 Feb 2026 18:43:59 +0700 Subject: [PATCH] feat: enhance role mapping logic in AuthService --- SnakeAid.Service/Implements/AuthService.cs | 30 ++++++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/SnakeAid.Service/Implements/AuthService.cs b/SnakeAid.Service/Implements/AuthService.cs index 023e66ef..160c2698 100644 --- a/SnakeAid.Service/Implements/AuthService.cs +++ b/SnakeAid.Service/Implements/AuthService.cs @@ -70,6 +70,18 @@ public async Task> RegisterAsync(RegisterRequest reque null, false, "Email is already in use.", HttpStatusCode.BadRequest, "EMAIL_IN_USE"); } + //Map role + if (targetRole == null) + { + targetRole = RegisterRole.Member; + } + + if (!RegisterRoleMap.TryGetValue(targetRole.Value, out var role)) + { + return ApiResponseBuilder.CreateResponse( + null, false, "Invalid role.", HttpStatusCode.BadRequest, "INVALID_ROLE"); + } + // Create new account var user = new Account { @@ -79,7 +91,7 @@ public async Task> RegisterAsync(RegisterRequest reque FullName = request.FullName ?? string.Empty, PhoneNumber = request.PhoneNumber, IsActive = false, - Role = AccountRole.User, + Role = role, CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow }; @@ -95,10 +107,7 @@ public async Task> RegisterAsync(RegisterRequest reque null, false, "Registration failed.", HttpStatusCode.UnprocessableEntity, "VALIDATION_ERROR", errors); } - if (targetRole == null) - { - targetRole = RegisterRole.Member; - } + switch (targetRole) { @@ -524,4 +533,15 @@ private async Task ValidateRefreshTokenAsync(Account user, string refreshT } #endregion + + #region Private Methods + private static readonly Dictionary RegisterRoleMap = + new() + { + { RegisterRole.Member, AccountRole.User }, + { RegisterRole.Rescuer, AccountRole.Rescuer }, + { RegisterRole.Expert, AccountRole.Expert } + }; + #endregion } +