public async Task <Delegation> Update(string policyId, CreateOrUpdateDelegationRequest request)
        {
            var entity = await GetByPolicyId(policyId, request.PartyId);

            var createdBy = await _usersRepository.GetByIdentity(request.UserId);

            var policyJson    = new DelegationPolicyJsonParser(request.Policy);
            var policyIssuer  = policyJson.PolicyIssuer;
            var accessSubject = policyJson.AccessSubject;

            entity.DelegationHistory.Add(new DelegationHistory
            {
                DelegationId = entity.Id,
                Policy       = entity.Policy,
                CreatedDate  = DateTime.UtcNow,
                CreatedById  = createdBy.Id
            });

            entity.PolicyIssuer  = policyIssuer;
            entity.AccessSubject = accessSubject;
            entity.Policy        = request.Policy;
            entity.UpdatedById   = createdBy.Id;
            entity.UpdatedDate   = DateTime.UtcNow;

            await _delegationsRepository.Save();

            return(entity);
        }
        public async Task <Delegation> Create(CreateOrUpdateDelegationRequest request)
        {
            var policyJson    = new DelegationPolicyJsonParser(request.Policy);
            var policyIssuer  = policyJson.PolicyIssuer;
            var accessSubject = policyJson.AccessSubject;

            var createdBy = await _usersRepository.GetByIdentity(request.UserId);

            var delegation = new Delegation
            {
                AuthorizationRegistryId = await GenerateId(),
                PolicyIssuer            = policyIssuer,
                AccessSubject           = accessSubject,
                Policy            = request.Policy,
                CreatedById       = createdBy.Id,
                UpdatedById       = createdBy.Id,
                CreatedDate       = DateTime.UtcNow,
                UpdatedDate       = DateTime.UtcNow,
                DelegationHistory = new List <DelegationHistory>()
            };

            _delegationsRepository.Add(delegation);

            await _delegationsRepository.Save();

            return(delegation);
        }
Exemple #3
0
        public async Task <Delegation> Create(CreateOrUpdateDelegationRequest request)
        {
            var policyJson    = new DelegationPolicyJsonParser(request.Policy);
            var policyIssuer  = policyJson.PolicyIssuer;
            var accessSubject = policyJson.AccessSubject;

            var createdBy = _db.Users.First(u => u.AspNetUserId == request.UserId);

            var delegation = new Delegation()
            {
                AuthorizationRegistryId = await GenerateArId().ConfigureAwait(false),
                PolicyIssuer            = policyIssuer,
                AccessSubject           = accessSubject,
                Policy            = request.Policy,
                CreatedBy         = createdBy,
                UpdatedBy         = createdBy,
                CreatedDate       = DateTime.Now,
                UpdatedDate       = DateTime.Now,
                DelegationHistory = new List <DelegationHistory>()
            };
            await _db.Delegations.AddAsync(delegation).ConfigureAwait(false);

            await _db.SaveChangesAsync().ConfigureAwait(false);

            return(delegation);
        }
Exemple #4
0
        public async Task <Delegation> Update(string arId, CreateOrUpdateDelegationRequest request)
        {
            var entity = await GetByARId(arId, request.PartyId).ConfigureAwait(false);

            var createdBy = _db.Users.First(u => u.AspNetUserId == request.UserId);

            var policyJson    = new DelegationPolicyJsonParser(request.Policy);
            var policyIssuer  = policyJson.PolicyIssuer;
            var accessSubject = policyJson.AccessSubject;

            await _db.DelegationsHistories.AddAsync(new DelegationHistory
            {
                DelegationId = entity.Id,
                Policy       = entity.Policy,
                CreatedDate  = DateTime.Now,
                CreatedBy    = createdBy
            }).ConfigureAwait(false);

            entity.PolicyIssuer  = policyIssuer;
            entity.AccessSubject = accessSubject;
            entity.Policy        = request.Policy;
            entity.UpdatedBy     = createdBy;
            entity.UpdatedDate   = DateTime.Now;

            _db.Delegations.Update(entity);
            await _db.SaveChangesAsync().ConfigureAwait(false);

            return(entity);
        }
        public async Task <Delegation> Copy(CreateOrUpdateDelegationRequest request)
        {
            var policyJson       = new DelegationPolicyJsonParser(request.Policy);
            var newPolicyIssuer  = policyJson.PolicyIssuer;
            var newAccessSubject = policyJson.AccessSubject;

            if (!await DelegationExists(newPolicyIssuer, newAccessSubject))
            {
                return(await Create(request));
            }

            var policyId = await _delegationsRepository.GetPolicyId(newPolicyIssuer, newAccessSubject);

            return(await Update(policyId, request));
        }
Exemple #6
0
        public async Task <Delegation> Copy(CreateOrUpdateDelegationRequest request)
        {
            var policyJson       = new DelegationPolicyJsonParser(request.Policy);
            var newPolicyIssuer  = policyJson.PolicyIssuer;
            var newAccessSubject = policyJson.AccessSubject;

            if (!await DelegationExists(newPolicyIssuer, newAccessSubject).ConfigureAwait(false))
            {
                return(await Create(request).ConfigureAwait(false));
            }

            var authorizationRegistryId = await _db.Delegations
                                          .Where(d => d.PolicyIssuer == newPolicyIssuer && d.AccessSubject == newAccessSubject)
                                          .Select(d => d.AuthorizationRegistryId)
                                          .FirstAsync()
                                          .ConfigureAwait(false);

            return(await Update(authorizationRegistryId, request).ConfigureAwait(false));
        }
        public async Task <IActionResult> Edit(string arId, [FromBody] CreateOrUpdateDelegationRequest request)
        {
            request.PartyId = GetPartyId();
            request.UserId  = GetUserId();

            try
            {
                var validationResult = await _delegationValidationService.ValidateEdit(arId, request.Policy, GetPartyId());

                if (!validationResult.Success)
                {
                    return(BadRequest(validationResult.Error));
                }
            }
            catch (DelegationPolicyFormatException ex)
            {
                return(BadRequest(ex.Message));
            }

            var delegation = await _delegationService.Update(arId, request);

            return(Ok(delegation.MapToViewModel()));
        }
        public async Task <IActionResult> Create([FromBody] CreateOrUpdateDelegationRequest request)
        {
            request.PartyId = GetPartyId();
            request.UserId  = GetUserId();
            try
            {
                var validationResult = request.IsCopy ? _delegationValidationService.ValidateCopy(request.Policy, GetPartyId())
                                                  : await _delegationValidationService.ValidateCreate(request.Policy, GetPartyId());

                if (!validationResult.Success)
                {
                    return(BadRequest(validationResult.Error));
                }
            }
            catch (DelegationPolicyFormatException ex)
            {
                return(BadRequest(ex.Message));
            }

            var delegation = request.IsCopy ? await _delegationService.Copy(request) : await _delegationService.Create(request);

            return(CreatedAtRoute("GetDelegation", new { arId = delegation.AuthorizationRegistryId }, delegation.MapToViewModel()));
        }