Exemplo n.º 1
0
        public Task AddClaimsAsync(IdentityUserViewModel viewModel, IEnumerable <System.Security.Claims.Claim> claims, CancellationToken cancellationToken)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("user");
            }
            if (claims == null)
            {
                throw new ArgumentNullException("claim");
            }

            var model = unitOfWork.UserRepository.FindById(viewModel.Id);

            if (model == null)
            {
                throw new ArgumentException("IdentityUserViewModel does not correspond to a User entity.", "user");
            }

            foreach (var claim in claims)
            {
                var claimEntityModel = new EntityModels.Identity.Claim
                {
                    ClaimType  = claim.Type,
                    ClaimValue = claim.Value,
                    User       = model
                };
                model.Claims.Add(claimEntityModel);
            }

            unitOfWork.UserRepository.Update(model);
            return(unitOfWork.CommitAsync());
        }
Exemplo n.º 2
0
        public Task ReplaceClaimAsync(IdentityUserViewModel viewModel, System.Security.Claims.Claim claim, System.Security.Claims.Claim newClaim, CancellationToken cancellationToken)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("user");
            }
            if (claim == null || newClaim == null)
            {
                throw new ArgumentNullException("claim");
            }

            var model = unitOfWork.UserRepository.FindById(viewModel.Id);

            if (model == null)
            {
                throw new ArgumentException("IdentityUserViewModel does not correspond to a User entity.", "user");
            }

            var claimEntityModel = new EntityModels.Identity.Claim
            {
                ClaimType  = newClaim.Type,
                ClaimValue = newClaim.Value,
                User       = model
            };

            var existingClaims = model.Claims.Where(o => o.ClaimType == claim.Type && o.ClaimValue == claim.Value).ToList();

            if (existingClaims != null && existingClaims.Count > 0)
            {
                foreach (var oldClaim in existingClaims)
                {
                    model.Claims.Remove(oldClaim);
                }
            }

            model.Claims.Add(claimEntityModel);

            unitOfWork.UserRepository.Update(model);
            return(unitOfWork.CommitAsync());
        }