philippurbschat.de/home/app/controllers/LoginController.php

43 lines
No EOL
1.6 KiB
PHP

<?php
require_once __DIR__ . '/../../core/Controller.php';
class LoginController extends Controller {
// Login Handler
public function index() {
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
header('Location: ' . Config::get('BASE_URL', '/'));
exit;
}
$email = trim($_POST['email'] ?? '');
$password = $_POST['password'] ?? '';
// Validation
if (empty($email) || empty($password)) {
Flash::set('Email and password are required.');
header('Location: ' . Config::get('BASE_URL', '/'));
exit;
}
try {
Security::checkCsrf($_POST['csrf_token'] ?? '');
$userModel = $this->model('User');
$user = $userModel->authenticate($email, $password);
if ($user) {
$_SESSION['user_email'] = $email;
$_SESSION['user_projects'] = $user['projects'] ?? [];
$_SESSION['is_admin'] = $user['is_admin'] ?? false;
header('Location: ' . Config::get('BASE_URL', '/'));
} else {
Flash::set('Access denied: Invalid credentials.');
header('Location: ' . Config::get('BASE_URL', '/'));
}
} catch (Exception $e) {
Flash::set('System error: ' . $e->getMessage());
header('Location: ' . Config::get('BASE_URL', '/'));
}
exit;
}
// Logout Handler
public function logout() {
session_destroy();
header('Location: ' . Config::get('BASE_URL', '/'));
exit;
}
}