コード例 #1
0
ファイル: AuthenticationProvider.cs プロジェクト: wushian/CLK
        // 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);
        }
コード例 #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;
            }));
        }