aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2021-05-13 10:48:19 +0300
committerSyndamia <kamen.d.mladenov@protonmail.com>2021-05-13 10:48:19 +0300
commit76f0df5506cebd8d4f25a3d6b284532b172d20d6 (patch)
tree1cbf93bda1017f0edbc23c5c27f02dab9b3fbba9
parent0594184e441b9963479d092b0c15be754faf8af3 (diff)
downloadit-kariera-exam-template-76f0df5506cebd8d4f25a3d6b284532b172d20d6.tar
it-kariera-exam-template-76f0df5506cebd8d4f25a3d6b284532b172d20d6.tar.gz
it-kariera-exam-template-76f0df5506cebd8d4f25a3d6b284532b172d20d6.zip
First registered user becomes an administrator and implemented proper handling of user creation failure inside service
-rw-r--r--ExamTemplate/Services/Services/UserService.cs16
1 files changed, 14 insertions, 2 deletions
diff --git a/ExamTemplate/Services/Services/UserService.cs b/ExamTemplate/Services/Services/UserService.cs
index e82859a..dab0801 100644
--- a/ExamTemplate/Services/Services/UserService.cs
+++ b/ExamTemplate/Services/Services/UserService.cs
@@ -8,6 +8,7 @@ using ExamTemplate.Services.Models.User;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using ExamTemplate.Services.Interfaces;
+using ExamTemplate.Common;
namespace ExamTemplate.Services.Services
{
@@ -34,9 +35,20 @@ namespace ExamTemplate.Services.Services
user.PasswordHash = this._userManager.PasswordHasher.HashPassword(user, registerUserServiceModel.Password);
IdentityResult userCreateResult = await this._userManager.CreateAsync(user);
- IdentityResult addRoleResult = await this._userManager.AddToRoleAsync(user, "User");
- return userCreateResult.Succeeded && addRoleResult.Succeeded;
+ if (!userCreateResult.Succeeded)
+ {
+ await this._userManager.DeleteAsync(user);
+ return false;
+ }
+
+ IdentityResult addRoleResult;
+ if (await this._userManager.Users.CountAsync() == 1) // 1, because we added the user in line 37
+ addRoleResult = await this._userManager.AddToRoleAsync(user, RoleConst.Admin);
+ else
+ addRoleResult = await this._userManager.AddToRoleAsync(user, RoleConst.User);
+
+ return addRoleResult.Succeeded;
}
public async Task<bool> LoginUserAsync(LoginUserServiceModel loginUserServiceModel)