Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save thewebartisan7/070ce8368f415a6b93df48bbf57e2eea to your computer and use it in GitHub Desktop.
Save thewebartisan7/070ce8368f415a6b93df48bbf57e2eea to your computer and use it in GitHub Desktop.
Laraloop Session Controller
<?php
namespace Laraloop\Frontend\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
use Laraloop\Laraloop\Http\Controllers\BaseController;
class SessionController extends BaseController
{
/**
* Logout from other browser sessions.
*
* @param Request $request
*
* @return JsonResponse|\Illuminate\Http\RedirectResponse
*
* @throws ValidationException
*/
public function logoutOtherBrowserSessions(Request $request)
{
if (!Hash::check($request->password, $request->user()->password)) {
throw ValidationException::withMessages([
'password' => [__('This password does not match our records.')],
]);
}
Auth::logoutOtherDevices($request->password);
if (config('session.driver') !== 'database') {
return;
}
DB::table('sessions')
->where('user_id', $request->user()->getKey())
->where('id', '!=', $request->session()->getId())
->delete();
$message = __('Other browser sessions logged out successfully');
return $request->wantsJson()
? new JsonResponse(['message' => $message], 200)
: back()->with('success', $message);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment