<?php
/**
* PassGram v5.0 - Registration Entry Point
*/
require_once __DIR__ . '/autoload.php';
use PassGram\Core\Config;
use PassGram\Core\Session;
use PassGram\Core\Database;
use PassGram\Security\Auth;
use PassGram\Security\CSRF;
use PassGram\Security\Encryption;
use PassGram\Models\User;
use PassGram\Models\Group;
use PassGram\Models\Invite;
use PassGram\Helpers\Validator;
use PassGram\Helpers\Logger;
use PassGram\Controllers\AuthController;
// Check if installed
$config = Config::getInstance(__DIR__ . '/config');
if (!$config->isInstalled() || !file_exists(__DIR__ . '/data/users.json.enc')) {
header('Location: /setup.php');
exit;
}
// Start session
Session::start();
// Initialize
$masterKey = hex2bin($config->get('security.master_application_key'));
$encryption = new Encryption($masterKey, $config->get('security.encryption'));
$db = new Database($encryption, $config->database());
$csrf = new CSRF();
$validator = new Validator($config);
$logger = new Logger($config->get('database.activity_log'));
$userModel = new User($db, $config, $validator);
$groupModel = new Group($db, $validator);
$inviteModel = new Invite($db, $config, $validator);
$auth = new Auth($db, $config, $logger);
// Handle registration
$controller = new AuthController($config, $db, $auth, $csrf, $userModel, $groupModel, $inviteModel, $validator, $logger);
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$controller->processRegister();
} else {
$controller->showRegister();
}