64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
using Marco.Pms.Model.Dtos.Employees;
|
|
using Marco.Pms.Model.Entitlements;
|
|
using Microsoft.AspNetCore.Identity;
|
|
using System.Security.Claims;
|
|
|
|
namespace MarcoBMS.Services.Helpers
|
|
{
|
|
public class UserHelper
|
|
{
|
|
private readonly UserManager<IdentityUser> _userManager;
|
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
|
|
public UserHelper(UserManager<IdentityUser> userManager, IHttpContextAccessor httpContextAccessor)
|
|
{
|
|
_userManager = userManager;
|
|
_httpContextAccessor = httpContextAccessor;
|
|
}
|
|
|
|
public int GetTenantId()
|
|
{
|
|
var tenant = _httpContextAccessor.HttpContext?.User.FindFirst("TenantId")?.Value;
|
|
return (tenant != null ? Convert.ToInt32(tenant) : 1);
|
|
}
|
|
|
|
public async Task<IdentityUser?> GetCurrentUserAsync()
|
|
{
|
|
var userId = _httpContextAccessor.HttpContext?.User.FindFirstValue(ClaimTypes.NameIdentifier);
|
|
|
|
if (string.IsNullOrEmpty(userId))
|
|
return null;
|
|
var user = await _userManager.FindByEmailAsync(userId);
|
|
return user; //await _userManager.FindByIdAsync(userId);
|
|
}
|
|
|
|
public async Task<object?> GetCurrentUserProfileAsync()
|
|
{
|
|
|
|
var user = await GetCurrentUserAsync();
|
|
return user == null ? null : new
|
|
{
|
|
user.Id,
|
|
user.UserName,
|
|
user.Email,
|
|
user.PhoneNumber
|
|
};
|
|
}
|
|
|
|
public async Task<IdentityUser?> GetRegisteredUser(string email)
|
|
{
|
|
//IdentityUser? user = await _userManager.Users
|
|
// .FirstOrDefaultAsync(u => u.Email == model.Email || u.PhoneNumber == model.PhoneNumber);
|
|
|
|
|
|
IdentityUser? user = await _userManager.FindByEmailAsync(email);
|
|
//if (user == null)
|
|
//{
|
|
// user = await _userManager.Find(model.Email);
|
|
|
|
//}
|
|
return user;
|
|
}
|
|
}
|
|
}
|