aboutsummaryrefslogtreecommitdiff
path: root/ExamTemplate/Data
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2021-05-06 21:52:47 +0300
committerSyndamia <kamen.d.mladenov@protonmail.com>2021-05-06 21:52:47 +0300
commit57cc5682a0efe2b790015f77fe9d2e2a0bb6ed87 (patch)
treef11fbf515f431db7961bf012d3d2d6a0ac050fbe /ExamTemplate/Data
parent92c4a9a5bcfa543740d2a3e2a9682205fed7ab0b (diff)
downloadit-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.cs3
-rw-r--r--ExamTemplate/Data/Models/User.cs2
-rw-r--r--ExamTemplate/Data/Repositories/UserRepository.cs40
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;
+ }
+ }
+}