Skip to content

Commit 5643ac7

Browse files
authored
Merge pull request #560 from dbarzin/dev
add login logout logs
2 parents 16cf5dd + 5ab895c commit 5643ac7

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

app/Http/Controllers/Auth/LoginController.php

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
namespace App\Http\Controllers\Auth;
44

55
use App\Http\Controllers\Controller;
6+
use App\Models\AuditLog;
67
use App\Models\User;
78
use Illuminate\Foundation\Auth\AuthenticatesUsers;
9+
use Illuminate\Http\RedirectResponse;
810
use Illuminate\Http\Request;
911
use Illuminate\Support\Facades\Hash;
1012
use Illuminate\Support\Facades\Log;
@@ -161,4 +163,60 @@ protected function attemptLogin(Request $request): bool
161163
$remember
162164
);
163165
}
166+
167+
168+
/**
169+
* Hook appelé APRES un login réussi (LDAP ou local).
170+
*
171+
* Crée une entrée dans le journal d'audit pour tracer la connexion.
172+
*/
173+
protected function authenticated(Request $request, User $user): void
174+
{
175+
try {
176+
AuditLog::query()->create([
177+
'description' => 'Login',
178+
'subject_id' => $user->id,
179+
'subject_type' => User::class,
180+
'user_id' => $user->id,
181+
'properties' => [
182+
'user_agent' => $request->userAgent(),
183+
'method' => $request->method(),
184+
'url' => $request->fullUrl(),
185+
],
186+
'host' => $request->ip(),
187+
]);
188+
} catch (\Throwable $e) {
189+
Log::warning('Failed to create login audit log', ['error' => $e->getMessage()]);
190+
}
191+
}
192+
193+
public function logout(Request $request): RedirectResponse
194+
{
195+
$userId = auth()->id();
196+
197+
$this->guard()->logout();
198+
$request->session()->invalidate();
199+
$request->session()->regenerateToken();
200+
201+
try {
202+
AuditLog::query()->create([
203+
'description' => 'Logout',
204+
'subject_id' => $userId,
205+
'subject_type' => User::class,
206+
'user_id' => $userId,
207+
'properties' => [
208+
'user_agent' => $request->userAgent(),
209+
'method' => $request->method(),
210+
'url' => $request->fullUrl(),
211+
],
212+
'host' => $request->ip(),
213+
]);
214+
} catch (\Throwable $e) {
215+
Log::warning('Failed to create logout audit log', ['error' => $e->getMessage()]);
216+
}
217+
218+
return $this->loggedOut($request) ?: redirect('/');
219+
}
220+
221+
164222
}

0 commit comments

Comments
 (0)