| using ContactManagementAPI.Data; | |
| using ContactManagementAPI.Models; | |
| using Microsoft.AspNetCore.Http; | |
| using Microsoft.EntityFrameworkCore; | |
| namespace ContactManagementAPI.Services | |
| { | |
| public class UserContextService | |
| { | |
| private readonly ApplicationDbContext _context; | |
| private readonly IHttpContextAccessor _httpContextAccessor; | |
| private readonly AuthorizationService _authorizationService; | |
| public UserContextService(ApplicationDbContext context, IHttpContextAccessor httpContextAccessor, AuthorizationService authorizationService) | |
| { | |
| _context = context; | |
| _httpContextAccessor = httpContextAccessor; | |
| _authorizationService = authorizationService; | |
| } | |
| public int? UserId => _httpContextAccessor.HttpContext?.Session.GetInt32(SessionKeys.UserId); | |
| public bool IsAuthenticated => UserId.HasValue; | |
| public AppUser? CurrentUser | |
| { | |
| get | |
| { | |
| if (!UserId.HasValue) | |
| return null; | |
| return _context.AppUsers | |
| .AsNoTracking() | |
| .Include(u => u.Group) | |
| .FirstOrDefault(u => u.Id == UserId.Value); | |
| } | |
| } | |
| public bool HasRight(string rightKey) | |
| { | |
| if (!UserId.HasValue) | |
| return false; | |
| return _authorizationService.HasRight(UserId.Value, rightKey); | |
| } | |
| public bool IsAdmin => UserId.HasValue && _authorizationService.IsAdmin(UserId.Value); | |
| } | |
| } | |