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
227 stars 54 forks source link

Call to undefined method App\\Models\\User::token() #169

Open rtrudel opened 7 months ago

rtrudel commented 7 months ago

laravel/passport 11.10 joselfonseca/lighthouse-graphql-passport-auth 9.02

When I call this GQL:

mutation Logout {
  logout {
    message
    status
  }
}

I get this error:

{
  "errors": [
    {
      "message": "Internal server error",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "logout"
      ],
      "extensions": {
        "debugMessage": "Call to undefined method App\\Models\\User::token()",
        "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php",
        "line": 67,
        "trace": [
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php",
            "line": 36,
            "call": "Illuminate\\Database\\Eloquent\\Model::throwBadMethodCallException()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php",
            "line": 2334,
            "call": "Illuminate\\Database\\Eloquent\\Model::forwardCallTo()"
          },
          {
            "file": "/var/www/html/vendor/joselfonseca/lighthouse-graphql-passport-auth/src/GraphQL/Mutations/Logout.php",
            "line": 29,
            "call": "Illuminate\\Database\\Eloquent\\Model::__call()"
          },
          {
            "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Values/FieldValue.php",
            "line": 185,
            "call": "Joselfonseca\\LighthouseGraphQLPassport\\GraphQL\\Mutations\\Logout::resolve()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
            "line": 714,
            "call": "Nuwave\\Lighthouse\\Schema\\Values\\FieldValue::Nuwave\\Lighthouse\\Schema\\Values\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
            "line": 631,
            "call": "GraphQL\\Executor\\ReferenceExecutor::resolveFieldValueOrError()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
            "line": 541,
            "call": "GraphQL\\Executor\\ReferenceExecutor::resolveField()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
            "line": 949,
            "call": "GraphQL\\Executor\\ReferenceExecutor::GraphQL\\Executor\\{closure}()"
          },
          {
            "call": "GraphQL\\Executor\\ReferenceExecutor::GraphQL\\Executor\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
            "line": 941,
            "function": "array_reduce()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
            "line": 533,
            "call": "GraphQL\\Executor\\ReferenceExecutor::promiseReduce()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
            "line": 297,
            "call": "GraphQL\\Executor\\ReferenceExecutor::executeFieldsSerially()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
            "line": 237,
            "call": "GraphQL\\Executor\\ReferenceExecutor::executeOperation()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/Executor.php",
            "line": 159,
            "call": "GraphQL\\Executor\\ReferenceExecutor::doExecute()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/GraphQL.php",
            "line": 162,
            "call": "GraphQL\\Executor\\Executor::promiseToExecute()"
          },
          {
            "file": "/var/www/html/vendor/webonyx/graphql-php/src/GraphQL.php",
            "line": 96,
            "call": "GraphQL\\GraphQL::promiseToExecute()"
          },
          {
            "file": "/var/www/html/vendor/nuwave/lighthouse/src/GraphQL.php",
            "line": 118,
            "call": "GraphQL\\GraphQL::executeQuery()"
          },
          {
            "file": "/var/www/html/vendor/nuwave/lighthouse/src/GraphQL.php",
            "line": 86,
            "call": "Nuwave\\Lighthouse\\GraphQL::executeParsedQuery()"
          },
          {
            "file": "/var/www/html/vendor/nuwave/lighthouse/src/GraphQL.php",
            "line": 212,
            "call": "Nuwave\\Lighthouse\\GraphQL::executeQueryString()"
          },
          {
            "file": "/var/www/html/vendor/nuwave/lighthouse/src/GraphQL.php",
            "line": 177,
            "call": "Nuwave\\Lighthouse\\GraphQL::executeOperation()"
          },
          {
            "file": "/var/www/html/vendor/nuwave/lighthouse/src/Support/Utils.php",
            "line": 107,
            "call": "Nuwave\\Lighthouse\\GraphQL::Nuwave\\Lighthouse\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/nuwave/lighthouse/src/GraphQL.php",
            "line": 173,
            "call": "Nuwave\\Lighthouse\\Support\\Utils::mapEach()"
          },
          {
            "file": "/var/www/html/vendor/nuwave/lighthouse/src/Http/GraphQLController.php",
            "line": 32,
            "call": "Nuwave\\Lighthouse\\GraphQL::executeOperationOrOperations()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
            "line": 46,
            "call": "Nuwave\\Lighthouse\\Http\\GraphQLController::__invoke()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 259,
            "call": "Illuminate\\Routing\\ControllerDispatcher::dispatch()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 205,
            "call": "Illuminate\\Routing\\Route::runController()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 799,
            "call": "Illuminate\\Routing\\Route::run()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 141,
            "call": "Illuminate\\Routing\\Router::Illuminate\\Routing\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/nuwave/lighthouse/src/Http/Middleware/AttemptAuthentication.php",
            "line": 22,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "call": "Nuwave\\Lighthouse\\Http\\Middleware\\AttemptAuthentication::handle()"
          },
          {
            "file": "/var/www/html/vendor/nuwave/lighthouse/src/Http/Middleware/AcceptJson.php",
            "line": 24,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "call": "Nuwave\\Lighthouse\\Http\\Middleware\\AcceptJson::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 116,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 798,
            "call": "Illuminate\\Pipeline\\Pipeline::then()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 777,
            "call": "Illuminate\\Routing\\Router::runRouteWithinStack()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 741,
            "call": "Illuminate\\Routing\\Router::runRoute()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 730,
            "call": "Illuminate\\Routing\\Router::dispatchToRoute()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 200,
            "call": "Illuminate\\Routing\\Router::dispatch()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 141,
            "call": "Illuminate\\Foundation\\Http\\Kernel::Illuminate\\Foundation\\Http\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php",
            "line": 19,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "call": "Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
            "line": 31,
            "call": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "call": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
            "line": 40,
            "call": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "call": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "call": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
            "line": 99,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "call": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
            "line": 62,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "call": "Illuminate\\Http\\Middleware\\HandleCors::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
            "line": 39,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "call": "Illuminate\\Http\\Middleware\\TrustProxies::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 116,
            "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 175,
            "call": "Illuminate\\Pipeline\\Pipeline::then()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 144,
            "call": "Illuminate\\Foundation\\Http\\Kernel::sendRequestThroughRouter()"
          },
          {
            "file": "/var/www/html/public/index.php",
            "line": 51,
            "call": "Illuminate\\Foundation\\Http\\Kernel::handle()"
          },
          {
            "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/resources/server.php",
            "line": 16,
            "function": "require_once('/var/www/html/public/index.php')"
          }
        ]
      }
    }
  ]
}

Any idea?

SlyDave commented 2 months ago

You've not quite finished installing Laravel Passport, your User model is missing the use HasApiTokens;

e.g.:

use Laravel\Passport\HasApiTokens;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable {
    use HasApiTokens;