Example #1
0
        public async Task <IActionResult> Execute(LabVerifyArgs args)
        {
            if (!_LabVerifyArgsValidator.Validate(args))
            {
                return(new BadRequestResult());
            }

            var wf = await _DbContextProvider.KeyReleaseWorkflowStates
                     .Include(x => x.Teks)
                     .SingleOrDefaultAsync(x => x.PollToken == args.PollToken);

            if (wf == null)
            {
                _Logger.LogError("KeyReleaseWorkflowState not found - PollToken:{PollToken}.", args.PollToken);
                var error = new LabVerifyAuthorisationResponse {
                    Error = "Workflow not found.", Valid = false
                };
                return(new OkObjectResult(error));
            }

            var result = new LabVerifyAuthorisationResponse
            {
                PollToken = _Writer.Execute(wf),
                //NB wf.Teks.Count > 0 is only needed on the day the db change is applied and can be removed after
                Valid = wf.TeksTouched || wf.Teks.Count > 0
            };

            return(new OkObjectResult(result));
        }
Example #2
0
        public async Task <LabVerifyAuthorisationResponse> Execute(LabVerifyArgs args)
        {
            if (!_PollTokens.Validate(args.PollToken))
            {
                throw new ArgumentException("Not valid.", nameof(args));
            }

            var wf = await _DbContextProvider.KeyReleaseWorkflowStates
                     .Include(x => x.Keys)
                     .FirstOrDefaultAsync(state =>
                                          state.PollToken == args.PollToken);

            if (wf == null)
            {
                var message = $"KeyReleaseWorkflowState not found - PollToken:{args.PollToken}.";
                _Logger.LogError(message);
                return(new LabVerifyAuthorisationResponse {
                    Error = "Workflow not found.", Valid = false
                });
            }

            var refreshedToken = _PollTokens.GenerateToken();

            wf.PollToken = refreshedToken;
            _Logger.LogDebug($"Committing.");
            _DbContextProvider.SaveAndCommit();

            _Logger.LogInformation($"Committed - new PollToken:{wf.PollToken}.");
            return(new LabVerifyAuthorisationResponse
            {
                PollToken = refreshedToken, Valid = wf.Keys?.Any() ?? false
            });
        }
Example #3
0
        public async Task <IActionResult> Execute(LabVerifyArgs args)
        {
            if (_LabVerificationAuthorisationCommand.Validate(args))
            {
                return(new BadRequestResult());
            }

            var result = await _LabVerificationAuthorisationCommand.Execute(args);

            return(new OkObjectResult(result));
        }
Example #4
0
        public bool Validate(LabVerifyArgs args)
        {
            if (args == null)
            {
                return(false);
            }

            if (string.IsNullOrWhiteSpace(args.PollToken))
            {
                return(false);
            }

            return(_PollTokens.Validate(args.PollToken));
        }