示例#1
0
        public int Execute(ICopyClaimSetModel claimSet)
        {
            var newClaimSet = new Security.DataAccess.Models.ClaimSet
            {
                ClaimSetName = claimSet.Name,
                Application  = _context.Applications.Single()
            };

            var originalResourceClaims =
                _context.ClaimSetResourceClaims
                .Where(x => x.ClaimSet.ClaimSetId == claimSet.OriginalId)
                .Include(x => x.ResourceClaim)
                .Include(x => x.Action)
                .Include(x => x.AuthorizationStrategyOverride)
                .ToList();

            _context.ClaimSets.Add(newClaimSet);

            foreach (var resourceClaim in originalResourceClaims)
            {
                var copyResourceClaim = new ClaimSetResourceClaim
                {
                    ClaimSet = newClaimSet,
                    Action   = resourceClaim.Action,
                    AuthorizationStrategyOverride = resourceClaim.AuthorizationStrategyOverride,
                    ResourceClaim = resourceClaim.ResourceClaim
                };
                _context.ClaimSetResourceClaims.Add(copyResourceClaim);
            }
            _context.SaveChanges();

            return(newClaimSet.ClaimSetId);
        }
        public int Execute(IAddClaimSetModel claimSet)
        {
            var newClaimSet = new Security.DataAccess.Models.ClaimSet
            {
                ClaimSetName = claimSet.ClaimSetName,
                Application  = _context.Applications.Single()
            };

            _context.ClaimSets.Add(newClaimSet);
            _context.SaveChanges();

            return(newClaimSet.ClaimSetId);
        }
        private void AddEnabledActionsToClaimSet(ResourceClaim modelResourceClaim, IReadOnlyCollection <ClaimSetResourceClaim> claimSetResourceClaimsToEdit, Security.DataAccess.Models.ClaimSet claimSetToEdit)
        {
            var actionsFromDb = _context.Actions.ToList();

            var resourceClaimFromDb = _context.ResourceClaims.Single(x => x.ResourceClaimId == modelResourceClaim.Id);

            var recordsToAdd = new List <ClaimSetResourceClaim>();

            if (modelResourceClaim.Create && claimSetResourceClaimsToEdit.All(x => x.Action.ActionName != Action.Create.Value))
            {
                recordsToAdd.Add(new ClaimSetResourceClaim
                {
                    Action        = actionsFromDb.Single(x => x.ActionName == Action.Create.Value),
                    ClaimSet      = claimSetToEdit,
                    ResourceClaim = resourceClaimFromDb
                });
            }

            if (modelResourceClaim.Read && claimSetResourceClaimsToEdit.All(x => x.Action.ActionName != Action.Read.Value))
            {
                recordsToAdd.Add(new ClaimSetResourceClaim
                {
                    Action        = actionsFromDb.Single(x => x.ActionName == Action.Read.Value),
                    ClaimSet      = claimSetToEdit,
                    ResourceClaim = resourceClaimFromDb
                });
            }

            if (modelResourceClaim.Update && claimSetResourceClaimsToEdit.All(x => x.Action.ActionName != Action.Update.Value))
            {
                recordsToAdd.Add(new ClaimSetResourceClaim
                {
                    Action        = actionsFromDb.Single(x => x.ActionName == Action.Update.Value),
                    ClaimSet      = claimSetToEdit,
                    ResourceClaim = resourceClaimFromDb
                });
            }

            if (modelResourceClaim.Delete && claimSetResourceClaimsToEdit.All(x => x.Action.ActionName != Action.Delete.Value))
            {
                recordsToAdd.Add(new ClaimSetResourceClaim
                {
                    Action        = actionsFromDb.Single(x => x.ActionName == Action.Delete.Value),
                    ClaimSet      = claimSetToEdit,
                    ResourceClaim = resourceClaimFromDb
                });
            }

            if (recordsToAdd.Any())
            {
                _context.ClaimSetResourceClaims.AddRange(recordsToAdd);
            }
        }