Esempio n. 1
0
        public async Task <List <ValidationResult> > UpdateUserPermissions(UserPermissionActionViewModel model)
        {
            if (model.UserId == Guid.Empty)
            {
                results.Add(new ValidationResult("Invalid User Id"));
                return(results);
            }

            var user = await _userManager.FindByIdAsync(model.UserId.ToString());

            if (user == null)
            {
                results.Add(new ValidationResult("User not found"));
                return(results);
            }

            var claims = await _userManager.GetClaimsAsync(user); // get user claims

            var claimsToAdd = new List <Claim>();

            foreach (var i in model.Permissions)
            {
                var perm = EnumHelper.Parse <Permission>(i);

                if (perm == 0)
                {
                    results.Add(new ValidationResult($"Permission {i} does not exist"));
                    return(results);
                }

                var claim = new Claim(perm.ToString(), Convert.ToInt32(perm).ToString());

                if (claims.Any(t => t.Type == claim.Type))
                {
                    continue;
                }

                claimsToAdd.Add(claim);
            }

            //var rmvClaims = await _userManager.RemoveClaimsAsync(user, claims);

            //if (!rmvClaims.Succeeded)
            //{
            //    results.Add(new ValidationResult(rmvClaims.Errors.FirstOrDefault().Description));
            //    return results;
            //}

            var addClaim = await _userManager.AddClaimsAsync(user, claimsToAdd);

            if (!addClaim.Succeeded)
            {
                results.Add(new ValidationResult(addClaim.Errors.FirstOrDefault().Description));
                return(results);
            }

            return(results);
        }
Esempio n. 2
0
        public async Task <List <ValidationResult> > RemovePermissionFromUser(UserPermissionActionViewModel model)
        {
            if (model.UserId == Guid.Empty)
            {
                results.Add(new ValidationResult("Invalid User Id"));
                return(results);
            }

            var user = await _userManager.FindByIdAsync(model.UserId.ToString());

            if (user == null)
            {
                results.Add(new ValidationResult("User not found"));
                return(results);
            }

            var claims = await _userManager.GetClaimsAsync(user);

            var claimsToRmv = new List <Claim>();

            foreach (var i in model.Permissions)
            {
                var perm = EnumHelper.Parse <Permission>(i);

                if (perm == 0)
                {
                    results.Add(new ValidationResult($"Permission {i} does not exist"));
                    return(results);
                }

                claimsToRmv.Add(new Claim(perm.ToString(), Convert.ToInt32(perm).ToString()));
            }

            var removesClaim = await _userManager.RemoveClaimsAsync(user, claimsToRmv);

            if (!removesClaim.Succeeded)
            {
                results.Add(new ValidationResult(removesClaim.Errors.FirstOrDefault().Description));
                return(results);
            }

            return(results);
        }