feat: ✨ logout all unpublished users #16

This commit is contained in:
Alexis Gousseau 2024-07-17 12:23:44 +02:00
parent d9881c7cbf
commit 4d74ebce18
6 changed files with 38 additions and 8 deletions

View file

@ -67,5 +67,6 @@ class Kernel extends HttpKernel
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'htmlsanitize' => \App\Http\Middleware\HtmlSanitizer::class,
'logoutuser' => \App\Http\Middleware\LogoutUnpublishedUsers::class,
];
}

View file

@ -0,0 +1,27 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class LogoutUnpublishedUsers
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
/** @var \App\Models\User $userModel */
$userModel = Auth::user();
if (!is_null($userModel) && !$userModel->published) {
Auth::logout();
return redirect()->route('bo.login')->with('warning', trans('auth.unpublished_user'));
}
return $next($request);
}
}

View file

@ -16,7 +16,7 @@ use Illuminate\Support\Facades\Hash;
* @property string $email Email.
* @property string $password Password.
* @property \App\Enums\Users\RoleEnum $role Role.
* @property \Illuminate\Support\Carbon $published Published status.
* @property boolean $published Published status.
* @property \Illuminate\Support\Carbon $published_at Publication status update date.
* @property-read \Illuminate\Support\Carbon $created_at Created date.
* @property-read \Illuminate\Support\Carbon $updated_at Updated date.

View file

@ -3,7 +3,8 @@
declare(strict_types=1);
return [
'failed' => 'These credentials do not match our records.',
'password' => 'The password is incorrect.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
'failed' => 'These credentials do not match our records.',
'password' => 'The password is incorrect.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
'unpublished_user' => 'Your account has been deactivated, please contact a site administrator.',
];

View file

@ -3,7 +3,8 @@
declare(strict_types=1);
return [
'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.',
'password' => 'Le mot de passe est incorrect',
'throttle' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.',
'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.',
'password' => 'Le mot de passe est incorrect',
'throttle' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.',
'unpublished_user' => 'Votre compte à été désactivé, veuillez contactez un administrateur du site.',
];

View file

@ -25,7 +25,7 @@ Route::prefix('bo')
]
);
});
Route::middleware('auth:backend')->group(function () {
Route::middleware(['auth:backend', 'logoutuser'])->group(function () {
Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
// * USERS.