-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathauth.php
More file actions
58 lines (46 loc) · 1.95 KB
/
auth.php
File metadata and controls
58 lines (46 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
/**
* file: auth.php
*
* Handles user authentication checks for protected pages.
*
* This script ensures a user is logged in and their session is valid.
* If the user is not authenticated or the session has expired, they are redirected to the login page.
* It also manages session starting and timeout logic.
*/
// auth.php - Beveiligingscheck voor pagina's
// Start de sessie alleen als deze nog niet gestart is.
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
require_once 'config.php'; // Zorgt ervoor dat de constanten geladen zijn.
$is_logged_in = isset($_SESSION['user_is_logged_in']) && $_SESSION['user_is_logged_in'] === true && isset($_SESSION['user_id']);
$last_activity = $_SESSION['last_activity'] ?? 0;
$session_expired = (time() - $last_activity > SESSION_TIMEOUT_SECONDS);
// Als de gebruiker niet is ingelogd of de sessie is verlopen, stuur naar de loginpagina.
if (!$is_logged_in || $session_expired) {
// Leeg de sessie voor de zekerheid
session_unset();
session_destroy();
// Sla de oorspronkelijk opgevraagde URL op zodat we de gebruiker kunnen terugsturen.
// Start een nieuwe sessie specifiek hiervoor.
session_start();
$_SESSION['redirect_url'] = $_SERVER['REQUEST_URI'];
// Stuur door naar de inlogpagina.
header('Location: login.php');
exit;
}
// Update de laatste activiteitentijd om de sessie 'levend' te houden.
$_SESSION['last_activity'] = time();
// --- GLOBALE VARIABELEN INITIALISATIE ---
// Zodat $user_id, $user_full_name, etc. direct beschikbaar zijn.
require_once 'src/SecurityService.php';
$sec = new SecurityService($pdo, ENCRYPTION_KEY);
if (isset($_SESSION['user_id'])) {
$user_id = $_SESSION['user_id'];
// Haal user details op
$stmt_auth_user = $pdo->prepare("SELECT full_name FROM users WHERE id = ?");
$stmt_auth_user->execute([$user_id]);
$encrypted_name = $stmt_auth_user->fetchColumn();
$user_full_name = $sec->decrypt($encrypted_name);
}