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)); }
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))); }