示例#1
0
        public async Task <Response <UserIdentityDto> > ManageUserClaimAsync(ManageUserClaimDto manageUserClaimDto)
        {
            var userById = await _userManager.GetUserByIdAsync(manageUserClaimDto.UserId);

            var userByName = await _userManager.GetUserByNameAsync(manageUserClaimDto.UserName);

            if (userById != userByName)
            {
                return(Response <UserIdentityDto> .Fail("Forbidden"));
            }
            var allClaims = await _userManager.GetClaimsAsync(userById);

            var claimExists =
                allClaims.Where(x => x.Type == manageUserClaimDto.Type && x.Value == manageUserClaimDto.Value).ToList();

            switch (manageUserClaimDto.Checked)
            {
            case true when claimExists.Count == 0:
            {
                await _userManager.AddClaimAsync(userById,
                                                 new Claim(manageUserClaimDto.Type, manageUserClaimDto.Value));

                break;
            }

            case false when claimExists.Count > 0:
            {
                await _userManager.RemoveClaimsAsync(userById, claimExists);

                break;
            }
            }
            return(Response <UserIdentityDto> .Success(new UserIdentityDto { Id = manageUserClaimDto.UserId },
                                                       "Succeeded"));;
        }
示例#2
0
        public async Task <IActionResult> ManageUserClaims(ManageUserClaimDto manageUserClaimDto)
        {
            if (!ModelState.IsValid)
            {
                return(Json(Response <UserIdentityDto> .Fail("Failed")));
            }
            var rs = await _userService.ManageUserClaimAsync(manageUserClaimDto);

            return(Json(rs));
        }