61 lines
1.7 KiB
C#
61 lines
1.7 KiB
C#
using API.Authentication.Interfaces;
|
|
using API.DTO.Base;
|
|
using API.DTO.Login;
|
|
using DAL.Contexts;
|
|
using DAL.Models;
|
|
using DAL.Models.Audits;
|
|
|
|
namespace API.Services
|
|
{
|
|
public class UserService : ServiceBase<UserService, UserDTO, User, AuditUser, IUserAuthentication>
|
|
{
|
|
private readonly ulong _defaultUserPermission;
|
|
private readonly PermissionService _permissionService;
|
|
public UserService(ILogger<UserService> logger, SASGContext context, IUserAuthentication auth, PermissionService permissionService, ulong defaultUserPermission) : base(logger, context, auth)
|
|
{
|
|
_permissionService = permissionService;
|
|
_defaultUserPermission = defaultUserPermission;
|
|
}
|
|
|
|
public User? add(UserRegisterDTO registerDTO, string hashedPassword, byte[] salt, User? user = null, ulong? permissionId = null)
|
|
{
|
|
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,
|
|
|
|
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;
|
|
}
|
|
|
|
Context.Add(model);
|
|
Context.SaveChanges();
|
|
|
|
return model;
|
|
}
|
|
}
|
|
}
|