80 lines
2.6 KiB
C#
80 lines
2.6 KiB
C#
using Microsoft.AspNetCore.Identity;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using WebVentaCoche.DataBase;
|
|
using WebVentaCoche.Models;
|
|
using WebVentaCoche.ViewModels;
|
|
|
|
namespace WebVentaCoche.Helpers
|
|
{
|
|
public class UserHelper : IUserHelper
|
|
{
|
|
private readonly ApplicationDbContext _context;
|
|
private readonly UserManager<User> _userManager;
|
|
private readonly RoleManager<IdentityRole> _roleManager;
|
|
private readonly SignInManager<User> _signInManager;
|
|
|
|
public UserHelper(ApplicationDbContext context, UserManager<User> userManager, RoleManager<IdentityRole> roleManager, SignInManager<User> signInManager)
|
|
{
|
|
_context = context;
|
|
_userManager = userManager;
|
|
_roleManager = roleManager;
|
|
_signInManager = signInManager;
|
|
}
|
|
|
|
public async Task<IdentityResult> AddUserAsync(User user, string password)
|
|
{
|
|
return await _userManager.CreateAsync(user, password);
|
|
}
|
|
public async Task AddUserRoleAsync(User user, string role)
|
|
{
|
|
await _userManager.AddToRoleAsync(user, role);
|
|
}
|
|
public async Task<User> GetUserAsync(string email)
|
|
{
|
|
return await _context.Users.FirstOrDefaultAsync(x => x.Email == email);
|
|
}
|
|
|
|
public async Task<bool> IsUserInroleAsync(User user, string role)
|
|
{
|
|
return await _userManager.IsInRoleAsync(user, role);
|
|
}
|
|
|
|
public async Task<SignInResult> LoginAsync(LoginViewModel model)
|
|
{
|
|
return await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false);
|
|
}
|
|
|
|
public async Task LogoutAsync()
|
|
{
|
|
await _signInManager.SignOutAsync();
|
|
}
|
|
|
|
public async Task ValidateRoleAsync(string role)
|
|
{
|
|
bool existRole = await _roleManager.RoleExistsAsync(role);
|
|
if (!existRole)
|
|
{
|
|
await _roleManager.CreateAsync(new IdentityRole
|
|
{
|
|
Name = role
|
|
});
|
|
}
|
|
}
|
|
|
|
public async Task<string> GenerateEmailConfirmationTokenAsync(User user)
|
|
{
|
|
return await _userManager.GenerateEmailConfirmationTokenAsync(user);
|
|
}
|
|
|
|
public async Task<IdentityResult> ConfirmEmailAsync(User user, string token)
|
|
{
|
|
return await _userManager.ConfirmEmailAsync(user, token);
|
|
}
|
|
|
|
public async Task<bool> IsEmailConfirmedAsync(User user)
|
|
{
|
|
return await _userManager.IsEmailConfirmedAsync(user);
|
|
}
|
|
}
|
|
}
|