2024-12-17 14:57:49 +01:00

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);
}
}
}