Пример #1
0
        public async Task <IActionResult> GetClaims()
        {
            var model = new ClaimRoleModel();

            var claims = _claimProvider.GetClaims();
            var roles  = _roleManager.Roles;

            model.AvailableClaims = claims.ToList();

            foreach (var r in roles)
            {
                model.AvailableRoles.Add(new RoleModel
                {
                    Name = r.Name
                });
            }


            foreach (var r in roles)
            {
                var roleClaims = await _roleManager.GetClaimsAsync(r);

                foreach (var c in claims)
                {
                    var allowed = roleClaims.Any(rc => rc.Value == c.ClaimValue);
                    if (!model.Allowed.ContainsKey(c.ClaimValue))
                    {
                        model.Allowed[c.ClaimValue] = new Dictionary <string, bool>();
                    }
                    model.Allowed[c.ClaimValue][r.Name] = allowed;
                }
            }

            return(Ok(model));
        }
Пример #2
0
        private async Task <AuthResult> AuthActionAsync(LoginDto login)
        {
            var users = (await _userRepository.GetAllAsync(new UserByEmailSpec(login.Email))).ToArray();

            if (users.Length != 1)
            {
                return(AuthResult.Fail());
            }

            var targetUser = users[0];

            if (!_hashService.Compare(targetUser, login.Password))
            {
                return(AuthResult.Fail());
            }

            var claims = _claimProvider.GetClaims(targetUser);

            return(AuthResult.Success(claims, _tokenFactory.Create(claims)));
        }