private AuthenticationResult Authorise(string userName, string password)
        {
            ICommandHandlerStrategy             commandHandlerStrategy = CommandHandlerStrategyFactory.Create <User>();
            UserNameAndPwdAuthenticationRequest request = new UserNameAndPwdAuthenticationRequest(userName, password);

            commandHandlerStrategy.Execute(request);
            return(request.Result);
        }
예제 #2
0
        private AuthenticationResult Authorise(IHeaderDictionary headers)
        {
            string[] acceptLanguageValues;
            bool     acceptLanguageHeaderPresent = headers.TryGetValue(Constants.AUTHENTICATION_TOKEN, out acceptLanguageValues);

            if (!acceptLanguageHeaderPresent)
            {
                return(null);
            }
            string[] elementsInHeader = acceptLanguageValues.ToList()[0].Split(new string[] { Constants.AUTHENTICATION_TOKEN_SEPERATOR }, StringSplitOptions.RemoveEmptyEntries);
            string   userName         = elementsInHeader[0];
            string   pwd = elementsInHeader[1];

            ICommandHandlerStrategy             commandHandlerStrategy = CommandHandlerStrategyFactory.Create <User>();
            UserNameAndPwdAuthenticationRequest request = new UserNameAndPwdAuthenticationRequest(userName, pwd);

            commandHandlerStrategy.Execute(request);
            return(request.Result);
        }
        public void Handle(UserNameAndPwdAuthenticationRequest command)
        {
            this.ValidateUserNameAndPwdAuthenticationRequest(command);
            using (IUnitOfWork uow = this.CreateUnitOfWork <User>())
            {
                IUserRepository repository = IoC.Container.Resolve <IUserRepository>(uow);
                User            user       = repository.GetActiveUser(command.UserName, EncodeHelper.EncodePassword(command.Password));
                if (user == null)
                {
                    command.Result = new AuthenticationResult(false);
                    this.Publish(new OnAuthenticationFailed(command.UserName, command.Password, DateTime.UtcNow));
                    return;
                }
                user.GenerateLoginToken();
                repository.Update(user);
                uow.Commit();

                command.Result         = ObjectHelper.Convert <AuthenticationResult>(user);
                command.Result.IsValid = true;

                this.Publish(new OnAuthenticationSuccess(user.FirstName, user.LastName, user.Email, user.LoginToken, user.TokenExpiredAfter, DateTime.UtcNow));
            }
        }
        private void ValidateUserNameAndPwdAuthenticationRequest(UserNameAndPwdAuthenticationRequest command)
        {
            IValidationException validationException = ValidationHelper.Validate(command);

            validationException.ThrowIfError();
        }