Skip to content

Commit 297701e

Browse files
committed
Multi guard auth
1 parent b3b9090 commit 297701e

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

routes/admin.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Atomjoy\Apilogin\Http\Controllers\Admin\LoginController as AdminLoginController;
77
use Atomjoy\Apilogin\Http\Controllers\Admin\PasswordResetController as AdminPasswordResetController;
88
use Atomjoy\Apilogin\Http\Controllers\Admin\LoggedController as AdminLoggedController;
9+
use Atomjoy\Apilogin\Http\Controllers\Admin\LogoutController as AdminLogoutController;
910

1011
// Admin panel
1112
Route::prefix('web/api/admin')->name('web.api.admin')->middleware([
@@ -14,6 +15,7 @@
1415
// Public routes
1516
Route::post('/login', [AdminLoginController::class, 'index'])->name('login');
1617
Route::post('/password', [AdminPasswordResetController::class, 'index'])->name('password');
18+
Route::get('/logout', [AdminLogoutController::class, 'index'])->name('logout');
1719
Route::get('/logged', [AdminLoggedController::class, 'index'])->name('logged');
1820
Route::post('/f2a', [AdminF2aController::class, 'index'])->name('f2a');
1921

src/Events/LogoutUser.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Illuminate\Foundation\Events\Dispatchable;
1111
use Illuminate\Queue\SerializesModels;
1212
use App\Models\User;
13+
use Atomjoy\Apilogin\Models\Admin;
1314

1415
class LogoutUser
1516
{
@@ -20,7 +21,7 @@ class LogoutUser
2021
*
2122
* @return void
2223
*/
23-
public function __construct(public User $user)
24+
public function __construct(public User|Admin $user)
2425
{
2526
}
2627

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace Atomjoy\Apilogin\Http\Controllers;
4+
5+
use Exception;
6+
use App\Http\Controllers\Controller;
7+
use Atomjoy\Apilogin\Events\LogoutUser;
8+
use Atomjoy\Apilogin\Events\LogoutUserError;
9+
use Atomjoy\Apilogin\Exceptions\JsonException;
10+
use Illuminate\Http\Request;
11+
use Illuminate\Support\Facades\Auth;
12+
13+
class LogoutController extends Controller
14+
{
15+
function index(Request $request)
16+
{
17+
try {
18+
Auth::shouldUse('admin');
19+
20+
if (Auth::check()) {
21+
LogoutUser::dispatch(Auth::user());
22+
Auth::logout();
23+
}
24+
25+
$request->session()->flush();
26+
$request->session()->invalidate();
27+
$request->session()->regenerateToken();
28+
session(['locale' => config('app.locale')]);
29+
30+
return response()->json([
31+
'message' => __('apilogin.logout.success'),
32+
], 200);
33+
} catch (Exception $e) {
34+
report($e);
35+
LogoutUserError::dispatch();
36+
throw new JsonException(__('apilogin.logout.error'), 422);
37+
}
38+
}
39+
}

0 commit comments

Comments
 (0)