2022-02-15 11:52:43 +00:00
|
|
|
namespace ASC.Core;
|
|
|
|
|
|
|
|
[Scope]
|
|
|
|
public class AuthManager
|
2020-10-19 15:53:15 +00:00
|
|
|
{
|
2022-02-15 11:52:43 +00:00
|
|
|
private readonly IUserService _userService;
|
|
|
|
private readonly UserManager _userManager;
|
|
|
|
private readonly UserFormatter _userFormatter;
|
|
|
|
private readonly TenantManager _tenantManager;
|
2020-09-15 13:11:05 +00:00
|
|
|
|
2022-02-15 11:52:43 +00:00
|
|
|
public AuthManager(IUserService service, UserManager userManager, UserFormatter userFormatter, TenantManager tenantManager)
|
|
|
|
{
|
|
|
|
_userService = service;
|
|
|
|
_userManager = userManager;
|
|
|
|
_userFormatter = userFormatter;
|
|
|
|
_tenantManager = tenantManager;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IUserAccount[] GetUserAccounts(Tenant tenant)
|
|
|
|
{
|
|
|
|
return _userManager.GetUsers(EmployeeStatus.Active).Select(u => ToAccount(tenant.Id, u)).ToArray();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SetUserPasswordHash(Guid userID, string passwordHash)
|
|
|
|
{
|
|
|
|
_userService.SetUserPasswordHash(_tenantManager.GetCurrentTenant().Id, userID, passwordHash);
|
|
|
|
}
|
|
|
|
|
|
|
|
public DateTime GetUserPasswordStamp(Guid userID)
|
|
|
|
{
|
|
|
|
return _userService.GetUserPasswordStamp(_tenantManager.GetCurrentTenant().Id, userID);
|
|
|
|
}
|
|
|
|
|
|
|
|
public IAccount GetAccountByID(int tenantId, Guid id)
|
|
|
|
{
|
|
|
|
var s = ASC.Core.Configuration.Constants.SystemAccounts.FirstOrDefault(a => a.ID == id);
|
|
|
|
if (s != null)
|
2020-09-15 13:11:05 +00:00
|
|
|
{
|
2022-02-15 11:52:43 +00:00
|
|
|
return s;
|
2020-09-15 13:11:05 +00:00
|
|
|
}
|
|
|
|
|
2022-02-15 11:52:43 +00:00
|
|
|
var u = _userManager.GetUsers(id);
|
2022-02-14 21:02:57 +00:00
|
|
|
|
2022-02-15 11:52:43 +00:00
|
|
|
return !Users.Constants.LostUser.Equals(u) && u.Status == EmployeeStatus.Active ? (IAccount)ToAccount(tenantId, u) : ASC.Core.Configuration.Constants.Guest;
|
|
|
|
}
|
|
|
|
|
|
|
|
private IUserAccount ToAccount(int tenantId, UserInfo u)
|
|
|
|
{
|
|
|
|
return new UserAccount(u, tenantId, _userFormatter);
|
|
|
|
}
|
|
|
|
}
|