71 lines
1.9 KiB
C#
71 lines
1.9 KiB
C#
using back.DataModels;
|
|
using back.persistance.data.repositories.Abstracts;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Transactional.Implementations.EntityFramework;
|
|
|
|
namespace back.persistance.data.repositories;
|
|
|
|
public class UserRepository(DataContext context) : ReadWriteRepository<User>(context), IUserRepository
|
|
{
|
|
public async Task<User?> GetByEmail(string email)
|
|
{
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(email)) return null;
|
|
return await Entities.FirstOrDefaultAsync(u => u.Email == email);
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public async Task<string?> GetUserSaltByEmail(string email)
|
|
{
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(email)) return string.Empty;
|
|
var user = await Entities.FirstOrDefaultAsync(u => u.Email == email);
|
|
return user?.Salt ?? string.Empty;
|
|
}
|
|
catch
|
|
{
|
|
return string.Empty;
|
|
}
|
|
}
|
|
|
|
public async Task<User?> Login(string email, string password)
|
|
{
|
|
if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password)) return null;
|
|
try
|
|
{
|
|
return await Entities.FirstOrDefaultAsync(u => u.Email == email && u.Password == password);
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public async Task<bool> ExistsByEmail(string email)
|
|
{
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(email)) return false;
|
|
return await Entities.AnyAsync(u => u.Email == email);
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//public async Task<bool> IsContentManager(string userId)
|
|
//{
|
|
// var user = await GetById(userId);
|
|
// if (user == null)
|
|
// return false;
|
|
// return user.Roles.Any(role => role.IsContentManager() || role.IsAdmin());
|
|
//}
|
|
}
|