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 _userManager; private readonly RoleManager _roleManager; public UserRepository(TemplateContext templateContext, UserManager userManager, RoleManager roleManager) { this._context = templateContext; this._userManager = userManager; this._roleManager = roleManager; } public async Task 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 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; } } }