File "OtherBrowserSessionsController.php"
Full Path: /home/fundopuh/trader.fxex.org/vendor/laravel/jetstream/src/Http/Middleware/OtherBrowserSessionsController.php
File size: 1.63 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Laravel\Jetstream\Http\Controllers\Inertia;
use Illuminate\Contracts\Auth\StatefulGuard;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\ValidationException;
use Laravel\Fortify\Actions\ConfirmPassword;
class OtherBrowserSessionsController extends Controller
{
/**
* Log out from other browser sessions.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Contracts\Auth\StatefulGuard $guard
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request, StatefulGuard $guard)
{
$confirmed = app(ConfirmPassword::class)(
$guard, $request->user(), $request->password
);
if (! $confirmed) {
throw ValidationException::withMessages([
'password' => __('The password is incorrect.'),
]);
}
$guard->logoutOtherDevices($request->password);
$this->deleteOtherSessionRecords($request);
return back(303);
}
/**
* Delete the other browser session records from storage.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function deleteOtherSessionRecords(Request $request)
{
if (config('session.driver') !== 'database') {
return;
}
DB::connection(config('session.connection'))->table(config('session.table', 'sessions'))
->where('user_id', $request->user()->getAuthIdentifier())
->where('id', '!=', $request->session()->getId())
->delete();
}
}