Esempio n. 1
0
        public async Task <RetornoAutenticacaoViewModel> Authenticate(LoginViewModel autenticacao)
        {
            ValidationResult _validationResult = new LoginValidation().Validate(autenticacao);

            if (!_validationResult.IsValid)
            {
                throw new ApiException(_validationResult.GetErrors(), ApiErrorCodes.MODNOTVALD);
            }

            SignInResult _signInResult = await _signInManager.PasswordSignInAsync(autenticacao.Email, autenticacao.Senha, isPersistent : true, lockoutOnFailure : true);

            if (!_signInResult.Succeeded)
            {
                if (_signInResult.IsLockedOut)
                {
                    throw new ApiException(ApiErrorCodes.LCKLOG);
                }
                else if (_signInResult.IsNotAllowed)
                {
                    throw new ApiException(ApiErrorCodes.NOTALLW);
                }
                else
                {
                    throw new ApiException(ApiErrorCodes.INVUSPASS);
                }
            }

            Usuario _autenticacao = _repository.GetByUserName(
                autenticacao.Email,
                q => q
                .Include(i => i.Perfil));

            string _generatedToken = GenerateTokenByAutenticacao(_autenticacao);

            return(new RetornoAutenticacaoViewModel(token: _generatedToken,
                                                    isSenhaExpirada: _autenticacao.IsExpiredPassword(),
                                                    usuarioId: _autenticacao.Id));
        }