I'm working on a Asp.Net Core project right now. I need to get UserId in a class named "CheckPermissions" which located inside a ClassLibrary named "Core", but I can't reach FindeFirestValue method! I've read some sulotions about how to do it but I didn't get any answers.
My CheckPermissions class is:
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using Toplearn.Core.Services.Interfaces.CheckPermissions;
using Toplearn.DataLayer.Entities.Context;
namespace Toplearn.Core.Services.Services.CheckPermissions
{
    public class CheckPermissionServices : ICheckPermissionServices
    {
        private ToplearnContext _context;
        private IHttpContextAccessor _accessor;
        private IAccessorServices _accessorHttpContext;
        public CheckPermissionServices(ToplearnContext context, IHttpContextAccessor accessor)
        {
            _context = context;
            _accessor = accessor;
        }
        public bool CheckIsAllowedUser(int userId ,int givenPermissionId)
        {
            
            int userId = (int)_accessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifire);
            if (!_accessor.HttpContext.User.Identity.IsAuthenticated)
                return false;
            bool isExistUser = _context.Users.Any(u => u.UserId == userId);
            if (!isExistUser)
                return false;
            bool isExistAnyRole = _context.User_Roles.Any(ur => ur.UserId == userId);
            if (!isExistAnyRole)
                return false;
            List<int> RoleIds = _context.User_Roles.Where(ur => ur.UserId == userId)
                .Select(r => r.RoleId).ToList();
            bool isContainThisPermission = false;
            foreach (var item in RoleIds)
            {
                bool isExist = _context.RolePermissions.Any(rp => rp.RoleId == item && rp.PermissionId == givenPermissionId);
                if (isExist)
                {
                    isContainThisPermission = true;
                    break;
                }
             
            }
            if (!isContainThisPermission)
                return false;
            return true;
        }
    }
}
I've injected IHttpContextAccessor too, but I can't reach this method!
I tried to reach this method like bellow:
int userId = (int)_accessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifire);
So Does anyone have any sulotions for it?
 
    