Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Neduko's avatar

Logout causes an issue with missing roles column

Laravel Version

10.31.0

PHP Version

8.2.3

Database Driver & Version

MySQL 8.0.30 with Windows 11

Description

Every time i logout i get the following error in my logs and the visual error log on site:

[2023-11-14 07:37:52] local.ERROR: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'roles' in 'field list' (Connection: mysql, SQL: update `users` set `remember_token` = 9tFcLmxlrfdzQRj9fzIOFRKeove8rqT7us2ItP9W4vZ0XmRAh68f5q7PSMA3, `roles` = [{"id":1,"name":"super-admin","guard_name":"web","created_at":"2023-11-10T09:12:01.000000Z","updated_at":"2023-11-10T09:12:01.000000Z","pivot":{"model_type":"App\Models\User","model_id":1,"role_id":1}}] where `id` = 1) {"userId":1,"exception":"[object] (Illuminate\Database\QueryException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'roles' in 'field list' (Connection: mysql, SQL: update `users` set `remember_token` = 9tFcLmxlrfdzQRj9fzIOFRKeove8rqT7us2ItP9W4vZ0XmRAh68f5q7PSMA3, `roles` = [{\"id\":1,\"name\":\"super-admin\",\"guard_name\":\"web\",\"created_at\":\"2023-11-10T09:12:01.000000Z\",\"updated_at\":\"2023-11-10T09:12:01.000000Z\",\"pivot\":{\"model_type\":\"App\\Models\\User\",\"model_id\":1,\"role_id\":1}}] where `id` = 1) at D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Connection.php:822)
[stacktrace]
#0 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Connection.php(776): Illuminate\Database\Connection->runQueryCallback('update `users` ...', Array, Object(Closure))
#1 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Connection.php(593): Illuminate\Database\Connection->run('update `users` ...', Array, Object(Closure))
#2 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Connection.php(545): Illuminate\Database\Connection->affectingStatement('update `users` ...', Array)
#3 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(3421): Illuminate\Database\Connection->update('update `users` ...', Array)
#4 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(1059): Illuminate\Database\Query\Builder->update(Array)
#5 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1213): Illuminate\Database\Eloquent\Builder->update(Array)
#6 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1130): Illuminate\Database\Eloquent\Model->performUpdate(Object(Illuminate\Database\Eloquent\Builder))
#7 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php(104): Illuminate\Database\Eloquent\Model->save()
#8 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Auth\SessionGuard.php(650): Illuminate\Auth\EloquentUserProvider->updateRememberToken(Object(App\Models\User), '9tFcLmxlrfdzQRj...')
#9 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Auth\SessionGuard.php(576): Illuminate\Auth\SessionGuard->cycleRememberToken(Object(App\Models\User))
#10 D:\projects\laravel_projects\tandem-up\app\Http\Controllers\Auth\AuthenticatedSessionController.php(69): Illuminate\Auth\SessionGuard->logout()
#11 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Controller.php(54): App\Http\Controllers\Auth\AuthenticatedSessionController->destroy(Object(Illuminate\Http\Request))
#12 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(43): Illuminate\Routing\Controller->callAction('destroy', Array)
#13 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Route.php(259): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\Auth\AuthenticatedSessionController), 'destroy')
#14 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Route.php(205): Illuminate\Routing\Route->runController()
#15 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Router.php(799): Illuminate\Routing\Route->run()
#16 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#17 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets.php(19): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#18 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets->handle(Object(Illuminate\Http\Request), Object(Closure))
#19 D:\projects\laravel_projects\tandem-up\vendor\inertiajs\inertia-laravel\src\Middleware.php(87): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#20 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Inertia\Middleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#21 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#22 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#23 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authenticate.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#24 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Auth\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php(78): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#26 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#27 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\View\Middleware\ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#28 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#30 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\Store), Object(Closure))
#31 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#33 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#34 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#35 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#36 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#37 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Router.php(798): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#38 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Router.php(777): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#39 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Router.php(741): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#40 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Router.php(730): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#41 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(200): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#42 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#43 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#44 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#45 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
#46 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#47 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#48 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure))
#49 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#50 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#51 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance.php(99): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#52 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#53 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Http\Middleware\HandleCors.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#54 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Http\Middleware\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
#55 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Http\Middleware\TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#56 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#57 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#58 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(175): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#59 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#60 D:\projects\laravel_projects\tandem-up\public\index.php(51): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#61 {main}

[previous exception] [object] (PDOException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'roles' in 'field list' at D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Connection.php:601)
[stacktrace]
#0 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Connection.php(601): PDO->prepare('update `users` ...')
#1 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Connection.php(809): Illuminate\Database\Connection->Illuminate\Database\{closure}('update `users` ...', Array)
#2 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Connection.php(776): Illuminate\Database\Connection->runQueryCallback('update `users` ...', Array, Object(Closure))
#3 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Connection.php(593): Illuminate\Database\Connection->run('update `users` ...', Array, Object(Closure))
#4 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Connection.php(545): Illuminate\Database\Connection->affectingStatement('update `users` ...', Array)
#5 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(3421): Illuminate\Database\Connection->update('update `users` ...', Array)
#6 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(1059): Illuminate\Database\Query\Builder->update(Array)
#7 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1213): Illuminate\Database\Eloquent\Builder->update(Array)
#8 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1130): Illuminate\Database\Eloquent\Model->performUpdate(Object(Illuminate\Database\Eloquent\Builder))
#9 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php(104): Illuminate\Database\Eloquent\Model->save()
#10 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Auth\SessionGuard.php(650): Illuminate\Auth\EloquentUserProvider->updateRememberToken(Object(App\Models\User), '9tFcLmxlrfdzQRj...')
#11 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Auth\SessionGuard.php(576): Illuminate\Auth\SessionGuard->cycleRememberToken(Object(App\Models\User))
#12 D:\projects\laravel_projects\tandem-up\app\Http\Controllers\Auth\AuthenticatedSessionController.php(69): Illuminate\Auth\SessionGuard->logout()
#13 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Controller.php(54): App\Http\Controllers\Auth\AuthenticatedSessionController->destroy(Object(Illuminate\Http\Request))
#14 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(43): Illuminate\Routing\Controller->callAction('destroy', Array)
#15 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Route.php(259): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\Auth\AuthenticatedSessionController), 'destroy')
#16 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Route.php(205): Illuminate\Routing\Route->runController()
#17 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Router.php(799): Illuminate\Routing\Route->run()
#18 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#19 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets.php(19): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#20 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets->handle(Object(Illuminate\Http\Request), Object(Closure))
#21 D:\projects\laravel_projects\tandem-up\vendor\inertiajs\inertia-laravel\src\Middleware.php(87): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#22 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Inertia\Middleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#23 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#24 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authenticate.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#26 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Auth\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))
#27 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php(78): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#28 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\View\Middleware\ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#30 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#31 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#32 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\Store), Object(Closure))
#33 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#34 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#35 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#36 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#37 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#39 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Router.php(798): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#40 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Router.php(777): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#41 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Router.php(741): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#42 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Routing\Router.php(730): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#43 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(200): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#44 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#45 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#46 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#47 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
#48 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#49 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#50 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure))
#51 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#52 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#53 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance.php(99): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#54 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#55 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Http\Middleware\HandleCors.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#56 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Http\Middleware\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
#57 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Http\Middleware\TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#58 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#59 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#60 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(175): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#61 D:\projects\laravel_projects\tandem-up\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#62 D:\projects\laravel_projects\tandem-up\public\index.php(51): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#63 {main}
"} 

My laravel composer file dependencies I have are the following:

"require": {
        "php": "^8.1",
        "guzzlehttp/guzzle": "^7.2",
        "inertiajs/inertia-laravel": "^0.6.3",
        "laravel/framework": "^10.10",
        "laravel/prompts": "^0.1.6",
        "laravel/sanctum": "^3.3",
        "laravel/tinker": "^2.8",
        "spatie/laravel-permission": "^5.10",
        "tightenco/ziggy": "^1.0"
    },
    "require-dev": {
        "barryvdh/laravel-ide-helper": "^2.13",
        "fakerphp/faker": "^1.9.1",
        "laravel/breeze": "^1.23",
        "laravel/pint": "^1.0",
        "laravel/sail": "^1.18",
        "mockery/mockery": "^1.4.4",
        "nunomaduro/collision": "^7.0",
        "phpunit/phpunit": "^10.1",
        "spatie/laravel-ignition": "^2.0"
    },

Steps To Reproduce

Log in as the super admin user you created via seeder and then logout.

My User Model has the trait from spatie/laravel-permission called HasRoles as well.

0 likes
6 replies
tykus's avatar

What else are doing with the User model; do you load and/or append the roles? Can you share the whole User model class? And also the AuthenticatedSessionController's destroy method?

Neduko's avatar

<?php

namespace App\Models;

// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Builder;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable, HasRoles;

    protected $guarded = ['id', 'created_at', 'updated_at'];

    /**
     * The attributes that are mass assignable.
     *
     * @var array<int, string>
     */
    protected $fillable = [
        'name',
        'email',
        'country_id',
        'branch_id',
        'company_id',
        'password',
        'approved'
    ];

    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array<int, string>
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * The attributes that should be cast.
     *
     * @var array<string, string>
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
        'password' => 'hashed',
        'approved' => 'boolean'
    ];

    public function authApiToken(): BelongsTo
    {
        return $this->belongsTo(AuthApiToken::class);
    }

    public function country(): BelongsTo|null
    {
        return $this->country_id ? $this->belongsTo(Country::class) : null;
    }

    public function company(): BelongsTo|null
    {
        return $this->company_id ? $this->belongsTo(Company::class) : null;
    }

    public function branch(): BelongsTo|null
    {
        return $this->branch_id ? $this->belongsTo(Branch::class) : null;
    }

    public function department(): BelongsTo|null
    {
        return $this->department_id ? $this->belongsTo(Department::class) : null;
    }

    public function scopeApproved(Builder $query)
    {
        return $query->where('approved', 1);
    }

    public function scopeSearch(Builder $query, string $search)
    {
        return $query->where('name', 'like', '%' . $search . '%')
            ->orWhere('email', 'like', '%' . $search . '%');
    }

    public function hasCompany(): bool
    {
        return $this->company_id !== null;
    }

    public function hasBranch(): bool
    {
        return $this->branch_id !== null;
    }

    public function hasDepartment(): bool
    {
        return $this->department_id !== null;
    }

    public function isApproved(): bool
    {
        return $this->approved;
    }
}

Here is my code for the User Model as you can see I do not have any reference for roles except for the trait HasRoles

tykus's avatar

@Neduko it seems that the roles relation has been loaded on the User instance during the logout request; where has this been done? You could add roles to the $guarded array, but this would be a shortcut to the potential solution.

Neduko's avatar

@tykus

It calls the destroy function in App\Http\Controllers\Auth\AuthenticatedSessionController below is the code:

 /**
     * Destroy an authenticated session.
     */
    public function destroy(Request $request): RedirectResponse
    {

        // Log::debug("Auth Guard Object: " . print_r(get_class(Auth::guard('web')), true));

        Auth::guard('web')->logout();  // Breaks here

        $request->session()->invalidate();

        $request->session()->regenerateToken();

        return redirect('/login');
    }

Then it goes into the SessionGuard class in namespace illuminate\Auth with following function:

/**
     * Log the user out of the application.
     *
     * @return void
     */
    public function logout()
    {
        $user = $this->user();

        $this->clearUserDataFromStorage();

        if (! is_null($this->user) && ! empty($user->getRememberToken())) {
            $this->cycleRememberToken($user);   // Breaks here
        }

        // If we have an event dispatcher instance, we can fire off the logout event
        // so any further processing can be done. This allows the developer to be
        // listening for anytime a user signs out of this application manually.
        if (isset($this->events)) {
            $this->events->dispatch(new Logout($this->name, $user));
        }

        // Once we have fired the logout event we will clear the users out of memory
        // so they are no longer available as the user is no longer considered as
        // being signed into this application and should not be available here.
        $this->user = null;

        $this->loggedOut = true;
    }

Then inside the cycleRememberToken method inside same class

/**
     * Refresh the "remember me" token for the user.
     *
     * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
     * @return void
     */
    protected function cycleRememberToken(AuthenticatableContract $user)
    {
        $user->setRememberToken($token = Str::random(60));

        $this->provider->updateRememberToken($user, $token);  // Breaks here
    }

It breaks in the EloquentUserProvider class which is situated in namespace Illuminate\Auth\EloquentUserProvider

The following code is where it happens:


/**
     * Update the "remember me" token for the given user in storage.
     *
     * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
     * @param  string  $token
     * @return void
     */
    public function updateRememberToken(UserContract $user, $token)
    {
		$user->setRememberToken($token);
        $timestamps = $user->timestamps;
        $user->timestamps = false;
        $user->save();  // Breaks here causing the function to give the 'roles' not found error
        $user->timestamps = $timestamps;
    }

These are the steps that I used I managed to debug with before the error occurs.

Follow the comments // Breaks here for the path

Neduko's avatar

Also the AuthenticatedSessionController is the default one generated when I created the Laravel App

Neduko's avatar

This happens regardless if state remember me or not when logging in

Please or to participate in this conversation.