Beispiel #1
0
        public override async Task <IEnumerable <Claim> > GetUserClaimsAsync(AuthSignInModel model)
        {
            AppRole userRole = _context.AppUsers.Include(u => u.Role)
                               .Where(x => x.Email == model.Email)
                               .FirstOrDefault()?.Role;

            if (userRole == null || !userRole.IsActive)
            {
                return(new List <Claim>());
            }

            List <AppFeature> features = _context.AppRoleFeatures
                                         .Include(f => f.AppFeature)
                                         .Where(f => f.AppRoleId == userRole.Id)
                                         .Select(f => f.AppFeature)
                                         .ToList();

            if (features.Select(f => f.Name).Contains(EnumsExtensions.GetDescription(AppFeatures.FullAccess)))
            {
                features = _context.AppFeatures.ToList();
            }

            return(_policyService.TransformFeaturesToClaims(features));
        }