diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-05-13 10:48:19 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-05-13 10:48:19 +0300 |
| commit | 76f0df5506cebd8d4f25a3d6b284532b172d20d6 (patch) | |
| tree | 1cbf93bda1017f0edbc23c5c27f02dab9b3fbba9 /ExamTemplate/Services | |
| parent | 0594184e441b9963479d092b0c15be754faf8af3 (diff) | |
| download | it-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
Diffstat (limited to 'ExamTemplate/Services')
| -rw-r--r-- | ExamTemplate/Services/Services/UserService.cs | 16 |
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)
|
