joselfonseca / lighthouse-graphql-passport-auth

Add GraphQL mutations to get tokens from passport for https://lighthouse-php.com/
https://lighthouse-php-auth.com/
MIT License
229 stars 56 forks source link

Internal server error on incorrect password #87

Closed canatufkansu closed 4 years ago

canatufkansu commented 4 years ago

Hi,

When I login with correct credentials I'm getting an access_token successfully. But when I try to login with wrong password I'm getting an server error rather than exception message.

My mutation is like following:

mutation {
  login (input: {
    username: "admin@admin.com"
    password: "password1"
  }) {
    access_token
  }
}

I'm getting following error:

{
  "errors": [
    {
      "debugMessage": "Call to undefined function Joselfonseca\\LighthouseGraphQLPassport\\GraphQL\\Mutations\\_()",
      "message": "Internal server error",
      "extensions": {
        "category": "internal"
      },
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "login"
      ],
      "trace": [
        {
          "file": "/var/www/vendor/joselfonseca/lighthouse-graphql-passport-auth/src/GraphQL/Mutations/Login.php",
          "line": 23,
          "call": "Joselfonseca\\LighthouseGraphQLPassport\\GraphQL\\Mutations\\BaseAuthResolver::makeRequest(array(5))"
        },
        {
          "file": "/var/www/vendor/nuwave/lighthouse/src/Schema/Directives/FieldDirective.php",
          "line": 55,
          "call": "Joselfonseca\\LighthouseGraphQLPassport\\GraphQL\\Mutations\\Login::resolve(null, array(3), instance of Nuwave\\Lighthouse\\Schema\\Context, instance of GraphQL\\Type\\Definition\\ResolveInfo)"
        },
        {
          "file": "/var/www/vendor/nuwave/lighthouse/src/Schema/Factories/FieldFactory.php",
          "line": 166,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\FieldDirective::Nuwave\\Lighthouse\\Schema\\Directives\\{closure}(null, array(2), instance of Nuwave\\Lighthouse\\Schema\\Context, instance of GraphQL\\Type\\Definition\\ResolveInfo)"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 632,
          "call": "Nuwave\\Lighthouse\\Schema\\Factories\\FieldFactory::Nuwave\\Lighthouse\\Schema\\Factories\\{closure}(null, array(1), instance of Nuwave\\Lighthouse\\Schema\\Context, instance of GraphQL\\Type\\Definition\\ResolveInfo)"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 555,
          "call": "GraphQL\\Executor\\ReferenceExecutor::resolveOrError(instance of GraphQL\\Type\\Definition\\FieldDefinition, instance of GraphQL\\Language\\AST\\FieldNode, instance of Closure, null, instance of Nuwave\\Lighthouse\\Schema\\Context, instance of GraphQL\\Type\\Definition\\ResolveInfo)"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 478,
          "call": "GraphQL\\Executor\\ReferenceExecutor::resolveField(GraphQLType: Mutation, null, instance of ArrayObject(1), array(1))"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 921,
          "call": "GraphQL\\Executor\\ReferenceExecutor::GraphQL\\Executor\\{closure}(array(0), 'login')"
        },
        {
          "call": "GraphQL\\Executor\\ReferenceExecutor::GraphQL\\Executor\\{closure}(array(0), 'login')"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 923,
          "function": "array_reduce(array(1), instance of Closure, array(0))"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 494,
          "call": "GraphQL\\Executor\\ReferenceExecutor::promiseReduce(array(1), instance of Closure, array(0))"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 256,
          "call": "GraphQL\\Executor\\ReferenceExecutor::executeFieldsSerially(GraphQLType: Mutation, null, array(0), instance of ArrayObject(1))"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 208,
          "call": "GraphQL\\Executor\\ReferenceExecutor::executeOperation(instance of GraphQL\\Language\\AST\\OperationDefinitionNode, null)"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/Executor/Executor.php",
          "line": 155,
          "call": "GraphQL\\Executor\\ReferenceExecutor::doExecute()"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/GraphQL.php",
          "line": 158,
          "call": "GraphQL\\Executor\\Executor::promiseToExecute(instance of GraphQL\\Executor\\Promise\\Adapter\\SyncPromiseAdapter, instance of GraphQL\\Type\\Schema, instance of GraphQL\\Language\\AST\\DocumentNode, null, instance of Nuwave\\Lighthouse\\Schema\\Context, array(0), null, null)"
        },
        {
          "file": "/var/www/vendor/webonyx/graphql-php/src/GraphQL.php",
          "line": 90,
          "call": "GraphQL\\GraphQL::promiseToExecute(instance of GraphQL\\Executor\\Promise\\Adapter\\SyncPromiseAdapter, instance of GraphQL\\Type\\Schema, 'mutation {\n  login (input: {\n    username: \"admin@admin.com\"\n    password: \"password1\"\n  }) {\n    access_token\n  }\n}', null, instance of Nuwave\\Lighthouse\\Schema\\Context, array(0), null, null, array(29))"
        },
        {
          "file": "/var/www/vendor/nuwave/lighthouse/src/GraphQL.php",
          "line": 156,
          "call": "GraphQL\\GraphQL::executeQuery(instance of GraphQL\\Type\\Schema, 'mutation {\n  login (input: {\n    username: \"admin@admin.com\"\n    password: \"password1\"\n  }) {\n    access_token\n  }\n}', null, instance of Nuwave\\Lighthouse\\Schema\\Context, array(0), null, null, array(29))"
        },
        {
          "file": "/var/www/vendor/nuwave/lighthouse/src/GraphQL.php",
          "line": 99,
          "call": "Nuwave\\Lighthouse\\GraphQL::executeQuery('mutation {\n  login (input: {\n    username: \"admin@admin.com\"\n    password: \"password1\"\n  }) {\n    access_token\n  }\n}', instance of Nuwave\\Lighthouse\\Schema\\Context, array(0), null, null)"
        },
        {
          "file": "/var/www/vendor/nuwave/lighthouse/src/Support/Http/Controllers/GraphQLController.php",
          "line": 59,
          "call": "Nuwave\\Lighthouse\\GraphQL::executeRequest(instance of Nuwave\\Lighthouse\\Execution\\LighthouseRequest)"
        },
        {
          "call": "Nuwave\\Lighthouse\\Support\\Http\\Controllers\\GraphQLController::query(instance of Nuwave\\Lighthouse\\Execution\\LighthouseRequest)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
          "line": 54,
          "function": "call_user_func_array(array(2), array(1))"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
          "line": 45,
          "call": "Illuminate\\Routing\\Controller::callAction('query', array(1))"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
          "line": 225,
          "call": "Illuminate\\Routing\\ControllerDispatcher::dispatch(instance of Illuminate\\Routing\\Route, instance of Nuwave\\Lighthouse\\Support\\Http\\Controllers\\GraphQLController, 'query')"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
          "line": 182,
          "call": "Illuminate\\Routing\\Route::runController()"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
          "line": 685,
          "call": "Illuminate\\Routing\\Route::run()"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 128,
          "call": "Illuminate\\Routing\\Router::Illuminate\\Routing\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/nuwave/lighthouse/src/Support/Http/Middleware/AttemptAuthentication.php",
          "line": 34,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Nuwave\\Lighthouse\\Support\\Http\\Middleware\\AttemptAuthentication::handle(instance of Illuminate\\Http\\Request, instance of Closure, 'api')"
        },
        {
          "file": "/var/www/vendor/nuwave/lighthouse/src/Support/Http/Middleware/AcceptJson.php",
          "line": 28,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Nuwave\\Lighthouse\\Support\\Http\\Middleware\\AcceptJson::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 103,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
          "line": 687,
          "call": "Illuminate\\Pipeline\\Pipeline::then(instance of Closure)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
          "line": 662,
          "call": "Illuminate\\Routing\\Router::runRouteWithinStack(instance of Illuminate\\Routing\\Route, instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
          "line": 628,
          "call": "Illuminate\\Routing\\Router::runRoute(instance of Illuminate\\Http\\Request, instance of Illuminate\\Routing\\Route)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
          "line": 617,
          "call": "Illuminate\\Routing\\Router::dispatchToRoute(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
          "line": 165,
          "call": "Illuminate\\Routing\\Router::dispatch(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 128,
          "call": "Illuminate\\Foundation\\Http\\Kernel::Illuminate\\Foundation\\Http\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
          "line": 21,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
          "line": 21,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
          "line": 27,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php",
          "line": 63,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "/var/www/vendor/fruitcake/laravel-cors/src/HandleCors.php",
          "line": 37,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Fruitcake\\Cors\\HandleCors::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "/var/www/vendor/fideloper/proxy/src/TrustProxies.php",
          "line": 57,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Fideloper\\Proxy\\TrustProxies::handle(instance of Illuminate\\Http\\Request, instance of Closure)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 103,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
          "line": 140,
          "call": "Illuminate\\Pipeline\\Pipeline::then(instance of Closure)"
        },
        {
          "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
          "line": 109,
          "call": "Illuminate\\Foundation\\Http\\Kernel::sendRequestThroughRouter(instance of Illuminate\\Http\\Request)"
        },
        {
          "file": "/var/www/public/index.php",
          "line": 55,
          "call": "Illuminate\\Foundation\\Http\\Kernel::handle(instance of Illuminate\\Http\\Request)"
        }
      ]
    }
  ]
}
joselfonseca commented 4 years ago

Hello,

Please make sure the INTL extension is installed and enabled in PHP CLI and the one used by the web server.

canatufkansu commented 4 years ago

Please make sure the INTL extension is installed and enabled in PHP CLI and the one used by the web server.

I'm using Laradock it looks like it has INTL extension installed in it but I'll do some research how to make sure it is enabled or not.

canatufkansu commented 4 years ago

I checked both my docker and host php versions they both seems to have INTL extension. When I run php -i in docker and on host terminal I get following

intl

Internationalization support => enabled
ICU version => 66.1
ICU Data version => 66.1
ICU TZData version => 2019c
ICU Unicode version => 13.0

Directive => Local Value => Master Value
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0

I also wrote echo phpinfo(); into main web route file of Laravel and see under Additional .ini files parsed row;

/usr/local/etc/php/conf.d/docker-php-ext-intl.ini,

and there is INTL part on phpinfo page;

Internationalization support | enabled
-- | --
version | 1.1.0
ICU version | 63.1
ICU Data version | 63.1
ICU TZData version | 2018e
ICU Unicode version | 11.0

I think INTL extension is installed on the enviroment but still getting this error.

joselfonseca commented 4 years ago

This error only appears if INTL is not available.

joselfonseca commented 4 years ago

Although, I think I found something. Please try to update composer and try again.

joselfonseca commented 4 years ago

look for this version and let me know please https://github.com/joselfonseca/lighthouse-graphql-passport-auth/releases/tag/4.1.8

joselfonseca commented 4 years ago

Should be fixed here https://github.com/joselfonseca/lighthouse-graphql-passport-auth/releases/tag/4.1.9

canatufkansu commented 4 years ago

Should be fixed here https://github.com/joselfonseca/lighthouse-graphql-passport-auth/releases/tag/4.1.9

Hi,

I will check this issue and get back to you this week. Thanks for your time and effort.

silasrm commented 4 years ago

Hi @joselfonseca,

My app is configured to pt-BR locale. My frontend is ok. But authentication messages are in english:

{
  "errors": [
    {
      "message": "Authentication exception",
      "extensions": {
        "reason": "Incorrect username or password",
        "category": "authentication"
      }
   }
 ]
}

Any idea?