public async Task <IActionResult> Get(string id) { if (!await IsPATAuthorized()) { return(new UnauthorizedResult()); } var result = await _umaResourceQueryRepository.FindByIdentifier(id); if (result == null) { return(this.BuildError(HttpStatusCode.NotFound, UMAErrorCodes.NOT_FOUND)); } return(new OkObjectResult(Serialize(result))); }
public Task <IActionResult> Confirm(string id) { return(CallOperationWithAuthenticatedUser(async(sub, payload) => { var pendingRequest = await _umaPendingRequestQueryRepository.FindByTicketIdentifierAndOwner(id, sub); if (pendingRequest == null) { return this.BuildError(HttpStatusCode.Unauthorized, UMAErrorCodes.REQUEST_DENIED); } if (pendingRequest.Status != UMAPendingRequestStatus.TOBECONFIRMED) { return this.BuildError(HttpStatusCode.BadRequest, ErrorCodes.INVALID_REQUEST, UMAErrorMessages.REQUEST_CANNOT_BE_CONFIRMED); } var resource = await _umaResourceQueryRepository.FindByIdentifier(pendingRequest.Resource.Id); foreach (var claimTokenFormat in _claimTokenFormats) { resource.Permissions.Add(new UMAResourcePermission(Guid.NewGuid().ToString(), DateTime.UtcNow) { Claims = new List <UMAResourcePermissionClaim> { new UMAResourcePermissionClaim { Name = claimTokenFormat.GetSubjectName(), Value = pendingRequest.Requester } }, Scopes = pendingRequest.Scopes.ToList() }); } pendingRequest.Confirm(); _umaPendingRequestCommandRepository.Update(pendingRequest); _umaResourceCommandRepository.Update(resource); await _umaResourceCommandRepository.SaveChanges(); await _umaPendingRequestCommandRepository.SaveChanges(); return new NoContentResult(); })); }