Exemple #1
0
        public async Task <String> AuthenticateAsync(string email, string password)
        {
            _logger?.Info("Obtendo o usuário.");
            User user = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                _logger?.Warn("Usuário não encontrado na base de dados.");
                return(null);
            }
            _logger?.Info("Usuário foi encontrado.");

            _logger?.Info("validando a senha.");
            if (await _userManager.CheckPasswordAsync(user, password))
            {
                _logger?.Info("Senha é válida.");
                _logger?.Info("Gerando Jwt Token.");

                IList <string> roles = await _userManager.GetRolesAsync(user);

                IList <Claim> claims = await _userManager.GetClaimsAsync(user);

                claims.Add(new Claim(ClaimTypes.Role, roles.Join(", ")));
                user.AddClaims(claims);

                Token token = await _tokenService.GenerateToken(user);

                if (token != null)
                {
                    _logger?.Info("Token gerado com sucesso.");
                    _logger?.Info("Retornando token.");
                    return(token.AccessToken);
                }
                _logger?.Info("Falha ao gerar token.");
                return(null);
            }
            _logger?.Warn("Senha não é válida para esse usuário.");
            return(null);
        }
        /// <summary>
        ///  The invoke.
        /// </summary>
        /// <param name="httpContext">The context</param>
        /// <returns></returns>
        public async Task InvokeAsync(HttpContext httpContext)
        {
            try
            {
                await next(httpContext);
            }
            catch (Exception ex)
            {
                if (httpContext.Response.HasStarted)
                {
                    logger.Warn(
                        "The response has already started, the http status code middleware will not be executed.");
                    throw;
                }

                await HandleExceptionAsync(httpContext, ex);
            }
        }
Exemple #3
0
        public async Task <ICommandResult> Handler(AuthenticateUserCommand command)
        {
            try
            {
                _logger?.Info("Autenticando usuário.");
                string token = await _service.AuthenticateAsync(command.Email, command.Password);

                if (token == null)
                {
                    _logger?.Warn("Usuário não autenticado.");
                    return(new CommandResult(false, Messages.USER_AUTHENTICATE_FAILED, null));
                }
                _logger?.Info("Usuário autenticado com sucesso.");
                return(new CommandResult(true, Messages.USER_AUTHENTICATE_SUCCESS, token));
            }
            catch (Exception ex)
            {
                _logger?.Error(ex.Message.ToLower());
                // return new CommandResult(false, "Internal Server Error", null);
                throw ex;
            }
        }