public ObjectToken Authenticate(IUserAuthenticateDto userDto, IUserServiceAuthenticate userService)
        {
            bool credenciaisValidas = false;

            if (userDto != null)
            {
                if (userDto.TypeLogin == TypeLogin.Login)
                {
                    var usuarioBase = userService.GetForLogin(userDto);
                    credenciaisValidas = (usuarioBase != null);
                }
                else if (userDto.TypeLogin == TypeLogin.RefreshToken && !String.IsNullOrWhiteSpace(userDto.RefreshToken))
                {
                    RefreshTokenData refreshTokenBase = null;

                    string strTokenArmazenado =
                        _cache.GetString(userDto.RefreshToken);
                    if (!String.IsNullOrWhiteSpace(strTokenArmazenado))
                    {
                        refreshTokenBase = JsonConvert
                                           .DeserializeObject <RefreshTokenData>(strTokenArmazenado);
                    }

                    credenciaisValidas = (refreshTokenBase != null &&
                                          userDto.Access == refreshTokenBase.Access &&
                                          userDto.RefreshToken == refreshTokenBase.RefreshToken);

                    // Elimina o token de refresh já que um novo será gerado
                    if (credenciaisValidas)
                    {
                        _cache.Remove(userDto.RefreshToken);
                    }
                }
            }

            if (credenciaisValidas)
            {
                return(GenerateToken(userService.GetByAcess(userDto.Access)));
            }
            else
            {
                return(new ObjectToken()
                {
                    authenticated = false,
                    message = "Falha ao autenticar"
                });
            }
        }
Exemplo n.º 2
0
 public IActionResult Login(
     [FromBody] UserDto userDto,
     [FromServices] AuthenticateManager authenticateManager,
     [FromServices] IUserServiceAuthenticate userService)
 {
     try
     {
         ObjectToken objectToken = authenticateManager.Authenticate(userDto, userService);
         if (objectToken.authenticated)
         {
             return(Ok(objectToken));
         }
         return(Unauthorized());
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }