示例#1
0
        public async Task <HandlerResult> Authenticate(IHandlerRequest model)
        {
            var user = await _userRepository.GetUserByEmailAddress(model.EmailAddress);

            if (user == null)
            {
                return(null);
            }

            if (!_passwordService.VerifyPassword(model.Password, user.Password))
            {
                return(null);
            }

            var verified = _twoFactorService.VerifyToken(model.VerificationCode, user.TwoFactorSecret);

            if (!verified)
            {
                return(null);
            }

            if (user.IsLockedOut)
            {
                return(new HandlerResult(isLockedOut: user.IsLockedOut));
            }

            return(new HandlerResult(user));
        }
        public async Task <HandlerResult> Authenticate(IHandlerRequest model)
        {
            var provider = _providerFactory(model.Provider);

            if (provider == null)
            {
                return(null);
            }

            var externalUser = await provider.GetUser(model.AccessToken);

            if (externalUser == null)
            {
                return(null);
            }

            var user = await _userRepository.GetUserByLogin(model.Provider, externalUser.UserId);

            if (user == null)
            {
                return(new HandlerResult(requiresExternal: true));
            }

            if (user.IsLockedOut)
            {
                return(new HandlerResult(isLockedOut: true));
            }

            return(new HandlerResult(user));
        }
示例#3
0
        public async Task <HandlerResult> Authenticate(IHandlerRequest model)
        {
            var user = await _userRepository.GetUserByRefreshToken(model.RefreshToken);

            if (user == null)
            {
                return(null);
            }

            if (user.IsLockedOut)
            {
                return(new HandlerResult(isLockedOut: true));
            }

            user.RefreshTokens.Remove(model.RefreshToken);

            return(new HandlerResult(user));
        }
        public async Task <HandlerResult> Authenticate(IHandlerRequest model)
        {
            var user = await _userRepository.GetUserByEmailAddress(model.EmailAddress);

            if (user == null)
            {
                return(null);
            }

            if (!_passwordService.VerifyPassword(model.Password, user.Password))
            {
                return(null);
            }

            if (user.IsLockedOut || user.TwoFactorEnabled)
            {
                return(new HandlerResult(isLockedOut: user.IsLockedOut, requiresTwoFactor: user.TwoFactorEnabled));
            }

            return(new HandlerResult(user));
        }