2026-01-28 20:14:49 +01:00

132 lines
3.7 KiB
PHP

<?php
require_once(__DIR__ . '/../class/db-functions.php');
$db = DBHandlerSelect::getInstance()->getConnection();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL | E_STRICT);
include('../../extra/auth.php');
if (!Auth::check()) {
redirectTo('../../public/login');
exit;
}
$user = Auth::user();
$iduserlogin = $user->present()->id;
$nameuser = $user->present()->first_name;
$surnameuser = $user->present()->last_name;
$emailuser = $user->present()->email;
$avatar = $user->present()->avatar;
$kindofrole = $user->present()->role_id;
$kindofrole = (int)$user->present()->role_id;
// Definisci ruolo studente (conferma che sia 2!)
define('ROLE_STUDENTE', 2);
// Avvia sessione se non attiva
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
$current_page = basename($_SERVER['PHP_SELF']);
// Pagine escluse da TUTTI i redirect/redirect automatici
$excluded_pages = [
'login.php',
'logout.php',
'register.php',
'forgot-password.php', // se esiste
'student_profile.php',
'select_school.php'
];
// ================================================
// 1. CREAZIONE AUTOMATICA PROFILO STUDENTE (se manca)
// ================================================
if ($kindofrole === ROLE_STUDENTE && !in_array($current_page, $excluded_pages)) {
$stmt = $db->prepare("SELECT 1 FROM students WHERE user_id = ? LIMIT 1");
$stmt->execute([$iduserlogin]);
$profile_exists = $stmt->fetchColumn();
if (!$profile_exists) {
// Crea record minimo obbligatorio
$stmt_insert = $db->prepare("
INSERT INTO students (
user_id,
billing_country,
shipping_same_as_billing,
privacy_consent,
created_at,
updated_at
) VALUES (
?, 'Italia', 1, 1, NOW(), NOW()
)
");
$stmt_insert->execute([$iduserlogin]);
// Imposta flag per non rifare controlli inutili
$_SESSION['student_profile_completed'] = true;
} else {
$_SESSION['student_profile_completed'] = true;
}
}
// ================================================
// 2. SALVA DATI UTENTE IN SESSIONE
// ================================================
$_SESSION["iduserlogin"] = $iduserlogin;
$_SESSION["nameuser"] = $nameuser;
$_SESSION["surnameuser"] = $surnameuser;
$_SESSION["emailuser"] = $emailuser;
$_SESSION["photouser"] = $avatar;
$photouser = $_SESSION["photouser"];
if (defined('SKIP_SCHOOL_CONTEXT') && SKIP_SCHOOL_CONTEXT === true) {
return; // oppure salta SOLO i redirect scuola
}
// ================================================
// 3. LOGICA SCUOLA (solo se profilo base esiste)
// ================================================
$has_school_association = false;
$stmt_school_check = $db->prepare("SELECT 1 FROM user_schools WHERE user_id = ? LIMIT 1");
$stmt_school_check->execute([$iduserlogin]);
$has_school_association = (bool) $stmt_school_check->fetchColumn();
if ($has_school_association) {
// include('schoolid_select.php');
}
// Carica impostazioni scuola solo se c'è school_id valida
$pages_allow_no_school = ['school_profile.php'];
if (isset($_SESSION['school_id']) && (int)$_SESSION['school_id'] > 0) {
include('school_settings_loader.php');
} else {
// Per studenti: se non ha scuola selezionata → vai a select_school
if ($kindofrole === ROLE_STUDENTE && !in_array($current_page, $excluded_pages)) {
header("Location: select_school.php");
exit;
}
// Per owner/admin: vai a school_profile se non è una pagina permessa
elseif (!in_array($current_page, $pages_allow_no_school)) {
header("Location: school_profile.php");
exit;
}
// Default impostazioni minime
$schoolSettings = [
'timezone' => 'Europe/Rome',
'locale' => 'it',
];
}