This commit is contained in:
2026-08-02 18:13:42 +07:00
parent f864e07b6d
commit eee82363ed
3 changed files with 34 additions and 0 deletions
+10
View File
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Services\Auth\Contracts\AuthServiceInterface;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
class AuthController extends Controller
{
@@ -40,6 +41,7 @@ class AuthController extends Controller
// Brute-force check (lock after 5 failed attempts)
if (\Illuminate\Support\Facades\RateLimiter::tooManyAttempts($throttleKey, 5)) {
Log::warning('Brute-force login attempt blocked', ['email' => $email, 'ip' => $request->ip()]);
return back()->withInput($request->only('mail'))->with('dialog_error_brute_force', 'Tài khoản của bạn tạm thời bị khóa do nhập sai mật khẩu quá 5 lần. Vui lòng thử lại sau 15 phút.');
}
@@ -47,11 +49,13 @@ class AuthController extends Controller
if (!$result['success']) {
if ($result['error_key'] === 'permission') {
Log::warning('Login attempt by deactivated user', ['email' => $email, 'ip' => $request->ip()]);
return back()->withInput($request->only('mail'))->with('dialog_error_permission', $result['error_msg']);
}
// For invalid password / email (counts towards brute-force attempts)
\Illuminate\Support\Facades\RateLimiter::hit($throttleKey, 900); // 15 minutes lockout
Log::warning('Failed login attempt', ['email' => $email, 'ip' => $request->ip()]);
return back()->withInput($request->only('mail'))->withErrors([
'mail' => $result['error_msg'],
@@ -62,6 +66,8 @@ class AuthController extends Controller
\Illuminate\Support\Facades\RateLimiter::clear($throttleKey);
$user = $result['user'];
Log::info('User logged in successfully', ['user_id' => $user->id, 'email' => $user->mail, 'ip' => $request->ip()]);
if ($user->role != config('constants.ROLE_ADMIN') && $user->first_login == config('constants.FIRST_LOGIN_TRUE')) {
return redirect()->route('login')->with('dialog_first_login', true);
}
@@ -71,7 +77,9 @@ class AuthController extends Controller
public function logout(Request $request)
{
$userId = Auth::id();
$this->authService->logout($request);
Log::info('User logged out', ['user_id' => $userId, 'ip' => $request->ip()]);
return redirect('/login');
}
@@ -91,9 +99,11 @@ class AuthController extends Controller
$result = $this->authService->forgotPassword($request->input('mail'));
if (!$result['success']) {
Log::warning('Forgot password requested for non-existent/invalid email', ['email' => $request->input('mail'), 'ip' => $request->ip()]);
return back()->withInput()->with('dialog_forgot_error', $result['error_msg']);
}
Log::info('Forgot password requested successfully', ['email' => $request->input('mail'), 'ip' => $request->ip()]);
return back()->with('dialog_forgot_success', $result['message']);
}
}