diff --git a/src/Http/Middleware/EnsureDeviceHasNotBeenLoggedOut.php b/src/Http/Middleware/EnsureDeviceHasNotBeenLoggedOut.php new file mode 100644 index 00000000..bc7202ab --- /dev/null +++ b/src/Http/Middleware/EnsureDeviceHasNotBeenLoggedOut.php @@ -0,0 +1,43 @@ +hasSession() || ! $request->user()) { + return $next($request); + } + + if ($request->session()->get('password_hash_'.$this->auth->getDefaultDriver()) !== $request->user()->getAuthPassword()) { + $this->logout($request); + + throw new AuthenticationException('Unauthenticated.', [$this->auth->getDefaultDriver()]); + } + + return $next($request); + } + + protected function logout(Request $request) + { + $this->auth->logoutCurrentDevice(); + + $request->session()->flush(); + } +} diff --git a/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php b/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php index 031c29ff..2291bd1d 100644 --- a/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php +++ b/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php @@ -52,6 +52,7 @@ protected function frontendMiddleware() \Illuminate\Session\Middleware\StartSession::class, config('sanctum.middleware.validate_csrf_token'), config('sanctum.middleware.verify_csrf_token', \Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class), + config('sanctum.middleware.ensure_not_logged_out', EnsureDeviceHasNotBeenLoggedOut::class), ]))); array_unshift($middleware, function ($request, $next) {