diff --git a/app/Http/Controllers/Web/Auth/LoginController.php b/app/Http/Controllers/Web/Auth/LoginController.php index 7d8e042..e35c4e9 100644 --- a/app/Http/Controllers/Web/Auth/LoginController.php +++ b/app/Http/Controllers/Web/Auth/LoginController.php @@ -66,19 +66,18 @@ class LoginController extends Controller // Validazione del campo school $schoolSlug = $request->input('school'); + if ($schoolSlug) { $school = School::where('slug', $schoolSlug)->first(); - if (!$school) { - return redirect()->to('login' . $to) - ->withErrors(['school' => trans('auth.school_not_found')]); + + if ($school) { + // Se presente e valida → salva in sessione + $request->session()->put('school_id', $school->id); } - // Salva lo school_id nella sessione - $request->session()->put('school_id', $school->id); - } else { - // Se il campo school è vuoto, possiamo gestire il caso di default - return redirect()->to('login' . $to) - ->withErrors(['school' => trans('auth.school_required')]); + // ⚠️ se non esiste → NON blocchiamo il login } + // ⚠️ se è vuota → NON facciamo nulla + $credentials = $request->getCredentials(); @@ -125,7 +124,7 @@ class LoginController extends Controller if ($user->hasRole('Admin')) { return redirect()->to('userarea/admin.php'); } elseif ($user->hasRole('User')) { - return redirect()->to('userarea/index.php'); + return redirect()->to('userarea/select_school.php'); } elseif ($user->hasRole('teacher')) { return redirect()->to('userarea/teacher.php'); } elseif ($user->hasRole('school_owner')) { @@ -151,12 +150,48 @@ class LoginController extends Controller /** * Log the user out of the application. */ - public function logout(): RedirectResponse + + + public function logout(Request $request): RedirectResponse { event(new LoggedOut); + // 1) Logout Laravel Auth::logout(); + // 2) Pulisci + invalida session Laravel (NON solo forget) + $request->session()->forget(['school_id', 'school_name', 'school_selected']); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + + // 3) Pulisci anche la session PHP nativa usata in userarea (PHPSESSID) + if (session_status() !== PHP_SESSION_ACTIVE) { + @session_start(); + } + + unset( + $_SESSION['school_id'], + $_SESSION['school_name'], + $_SESSION['school_selected'] + ); + + // Se vuoi essere ancora più “definitivo”, distruggi tutta la PHP session: + $_SESSION = []; + + if (ini_get('session.use_cookies')) { + $params = session_get_cookie_params(); + setcookie( + session_name(), + '', + time() - 42000, + $params['path'], + $params['domain'], + $params['secure'], + $params['httponly'] + ); + } + @session_destroy(); + return redirect('login'); } } diff --git a/app/Http/Controllers/Web/Auth/select_school.php b/app/Http/Controllers/Web/Auth/select_school.php new file mode 100644 index 0000000..d1ff57e --- /dev/null +++ b/app/Http/Controllers/Web/Auth/select_school.php @@ -0,0 +1,235 @@ +getConnection(); + +// === DATI UTENTE === +$stmt = $pdo->prepare("SELECT first_name, last_name, avatar FROM auth_users WHERE id = ?"); +$stmt->execute([$iduserlogin]); +$user = $stmt->fetch(); + +$avatar = $user['avatar'] ? '../upload/users/' . $user['avatar'] : '../assets/images/default-avatar.png'; +$first_name = htmlspecialchars($user['first_name'] ?? ''); + +// === PROCESSA SELEZIONE SCUOLA (POST) === +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['school_id'])) { + $school_id = (int)$_POST['school_id']; + + $stmt = $pdo->prepare("SELECT id, name, logo FROM schools WHERE id = ? AND status = 'active'"); + $stmt->execute([$school_id]); + $school = $stmt->fetch(); + + if ($school) { + // Iscrivi automaticamente se non era già iscritto + $stmtCheck = $pdo->prepare("SELECT 1 FROM user_schools WHERE user_id = ? AND school_id = ?"); + $stmtCheck->execute([$iduserlogin, $school_id]); + if (!$stmtCheck->fetch()) { + $pdo->prepare("INSERT INTO user_schools (user_id, school_id, status) VALUES (?, ?, 'active')") + ->execute([$iduserlogin, $school_id]); + } + + // Imposta sessione + $_SESSION['school_id'] = $school['id']; + $_SESSION['school_name'] = $school['name']; + + // Reindirizza alla dashboard finale + header('Location: user_dashboard.php'); + exit; + } +} + +// === RECUPERA SCUOLE DELL'UTENTE === +$stmt = $pdo->prepare(" + SELECT s.id, s.name, s.slug, s.logo, s.address_city + FROM user_schools us + JOIN schools s ON us.school_id = s.id + WHERE us.user_id = ? AND us.status = 'active' AND s.status = 'active' + ORDER BY s.name +"); +$stmt->execute([$iduserlogin]); +$userSchools = $stmt->fetchAll(); + +// Caso 1: ha esattamente 1 scuola → vai diretto +if (count($userSchools) === 1) { + $school = $userSchools[0]; + $_SESSION['school_id'] = $school['id']; + $_SESSION['school_name'] = $school['name']; + header('Location: user_dashboard.php'); + exit; +} + +// Caso 2: ha più scuole → mostra selezione +// Caso 3: nessuna scuola → mostra tutte le scuole pubbliche +if (empty($userSchools)) { + $stmt = $pdo->prepare(" + SELECT id, name, slug, logo, address_city + FROM schools + WHERE status = 'active' + ORDER BY name + "); + $stmt->execute(); + $schools = $stmt->fetchAll(); + + $title = "Benvenuto! Scegli la tua scuola di yoga"; + $subtitle = "Seleziona la scuola dove vuoi prenotare le lezioni"; +} else { + $schools = $userSchools; + $title = "Ciao $first_name!"; + $subtitle = "Seleziona la scuola in cui vuoi entrare oggi"; +} +?> + + + + +
+ + +- , ecco tutte le lezioni che hai prenotato -
+ + +Quando acquisterai un carnet o un abbonamento, potrai prenotare qui le tue lezioni!
- Vai ai corsi + -- - • -
- -- - - -
- -- Con -
- -