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); }
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); }
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)); }
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())); }