diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-05-06 21:52:47 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-05-06 21:52:47 +0300 |
| commit | 57cc5682a0efe2b790015f77fe9d2e2a0bb6ed87 (patch) | |
| tree | f11fbf515f431db7961bf012d3d2d6a0ac050fbe /ExamTemplate/Data | |
| parent | 92c4a9a5bcfa543740d2a3e2a9682205fed7ab0b (diff) | |
| download | it-kariera-exam-template-57cc5682a0efe2b790015f77fe9d2e2a0bb6ed87.tar it-kariera-exam-template-57cc5682a0efe2b790015f77fe9d2e2a0bb6ed87.tar.gz it-kariera-exam-template-57cc5682a0efe2b790015f77fe9d2e2a0bb6ed87.zip | |
Added automapper; Implemented user register; Improved some database configurations
Diffstat (limited to 'ExamTemplate/Data')
| -rw-r--r-- | ExamTemplate/Data/Models/Role.cs | 3 | ||||
| -rw-r--r-- | ExamTemplate/Data/Models/User.cs | 2 | ||||
| -rw-r--r-- | ExamTemplate/Data/Repositories/UserRepository.cs | 40 |
3 files changed, 44 insertions, 1 deletions
diff --git a/ExamTemplate/Data/Models/Role.cs b/ExamTemplate/Data/Models/Role.cs index 94e5c48..9a23f13 100644 --- a/ExamTemplate/Data/Models/Role.cs +++ b/ExamTemplate/Data/Models/Role.cs @@ -8,6 +8,9 @@ namespace ExamTemplate.Data.Models [Table("Roles")] public class Role : IdentityRole<Guid> { + public static string UserRole = "User"; + public static string AdminRole = "Administrator"; + public List<User> Users { get; set; } = new List<User>(); } } diff --git a/ExamTemplate/Data/Models/User.cs b/ExamTemplate/Data/Models/User.cs index 0c3f4c7..cb96942 100644 --- a/ExamTemplate/Data/Models/User.cs +++ b/ExamTemplate/Data/Models/User.cs @@ -10,6 +10,6 @@ namespace ExamTemplate.Data.Models { public string FirstName { get; set; } public string LastName { get; set; } - public List<Role> Roles { get; set; } + public List<Role> Roles { get; set; } = new List<Role>(); } } diff --git a/ExamTemplate/Data/Repositories/UserRepository.cs b/ExamTemplate/Data/Repositories/UserRepository.cs new file mode 100644 index 0000000..97eb21b --- /dev/null +++ b/ExamTemplate/Data/Repositories/UserRepository.cs @@ -0,0 +1,40 @@ +using System.Threading.Tasks; +using ExamTemplate.Data.Models; +using Microsoft.AspNetCore.Identity; + +namespace ExamTemplate.Data.Repositories +{ + public class UserRepository + { + private readonly TemplateContext _context; + private readonly UserManager<User> _userManager; + private readonly RoleManager<Role> _roleManager; + + public UserRepository(TemplateContext templateContext, UserManager<User> userManager, RoleManager<Role> roleManager) + { + this._context = templateContext; + this._userManager = userManager; + this._roleManager = roleManager; + } + + public async Task<bool> AddAsync(User user, string password) + { + user.PasswordHash = this._userManager.PasswordHasher.HashPassword(user, password); + IdentityResult result = await this._userManager.CreateAsync(user); + + return result.Succeeded; + } + + public async Task<bool> AddRoleToUserAsync(User user, string roleName) + { + bool succeeded = (await this._userManager.AddToRoleAsync(user, roleName)).Succeeded; + if (succeeded) + { + user.Roles.Add(await this._roleManager.FindByNameAsync(roleName)); + succeeded = await this._context.SaveChangesAsync() >= 1; + } + + return succeeded; + } + } +} |
