73 lines
2.0 KiB
C#
Raw Normal View History

using API.Authentication.Interfaces;
using API.DTO.Base;
2024-12-19 19:33:45 -06:00
using API.DTO.Base.Update;
2024-07-12 17:27:01 -05:00
using API.DTO.Login;
using DAL.Contexts;
using DAL.Models;
using DAL.Models.Audits;
namespace API.Services
{
2024-07-15 13:23:58 -05:00
public class UserService : ServiceBase<UserService, UserDTO, User, AuditUser, IUserAuthentication>
{
2024-07-12 17:27:01 -05:00
private readonly ulong _defaultUserPermission;
private readonly PermissionService _permissionService;
2024-07-15 13:23:58 -05:00
public UserService(ILogger<UserService> logger, SASGContext context, IUserAuthentication auth, PermissionService permissionService, ulong defaultUserPermission) : base(logger, context, auth)
2024-07-12 17:27:01 -05:00
{
_permissionService = permissionService;
_defaultUserPermission = defaultUserPermission;
}
public User? add(UserRegisterDTO registerDTO, string hashedPassword, byte[] salt, User? user = null, ulong? permissionId = null)
{
2024-07-12 17:27:01 -05:00
Permission? defaultPermission = _permissionService.getNoAuthentication(_defaultUserPermission);
if (defaultPermission == null)
throw new InvalidOperationException("defaultUserPermission doesn't exist.");
User model = new User
{
firstName = registerDTO.firstName,
lastName = registerDTO.lastName,
phoneNumber = registerDTO.phoneNumber,
password = hashedPassword,
salt = salt,
permissionId = permissionId ?? defaultPermission.id,
2024-07-12 17:27:01 -05:00
updated = DateTime.Now
};
if (permissionId != null && user != null)
{
model.permissionId = permissionId.Value;
model.updater = user.id;
UserDTO userDTO = new UserDTO();
userDTO.adaptFromModel(user);
if (!_auth.canAdd(userDTO, user))
return null;
Context.Add(model);
Context.SaveChanges();
return model;
}
2024-07-12 17:27:01 -05:00
Context.Add(model);
Context.SaveChanges();
return model;
}
2024-12-19 19:33:45 -06:00
public User? changePassword(User destUser, User changingUser, string hashedNewPassword, byte[] newSalt, bool oldPasswordMatchNew)
{
if (!_auth.canChangePassword(destUser, changingUser, oldPasswordMatchNew))
return null;
destUser.password = hashedNewPassword;
destUser.salt = newSalt;
return update(destUser, changingUser);
}
}
}