Exemplo n.º 1
0
        // Methods
        protected Task <AuthenticateResult> ExecuteAsync(Func <Task <AuthenticateResult> > executeDelegate)
        {
            #region Contracts

            if (executeDelegate == null)
            {
                throw new ArgumentException();
            }

            #endregion

            // Require
            if (_signInDelegate == null)
            {
                throw new InvalidOperationException("SignInDelegate not find.");
            }

            // Command
            var command = new AuthenticateCommand(executeDelegate);

            // SignIn
            var result = _signInDelegate(command);
            if (result == null)
            {
                throw new InvalidOperationException();
            }

            // Return
            return(result);
        }
Exemplo n.º 2
0
        // Methods
        internal Task <AuthenticateResult> SignInAsync(AuthenticateCommand command)
        {
            #region Contracts

            if (command == null)
            {
                throw new ArgumentException();
            }

            #endregion

            // Execute
            return(command.ExecuteAsync().ContinueWith <AuthenticateResult>((executeTask) => {
                // Result
                var executeResult = executeTask.Result;
                if (executeResult == null)
                {
                    throw new InvalidOperationException();
                }
                if (executeResult.Succeeded == false)
                {
                    return executeResult;
                }

                // Ticket
                var currentTicket = executeResult.Ticket;
                if (currentTicket == null)
                {
                    throw new InvalidOperationException();
                }
                if (currentTicket.ExpireTime < DateTime.Now)
                {
                    throw new InvalidOperationException();
                }

                // Save
                _ticketRepository.SetTicket(currentTicket);

                // Return
                return executeResult;
            }));
        }