100 || strlen($last) > 100 || strlen($idkar) > 50 || !filter_var($email, FILTER_VALIDATE_EMAIL) || strlen($email) > 190) exit("Nama atau email tidak valid.\n"); echo 'Password admin (minimal 12 karakter, input disembunyikan): '; $tty = function_exists('shell_exec') ? shell_exec('stty -g 2>/dev/null') : null; if (!$tty) exit("Jalankan melalui terminal interaktif.\n"); system('stty -echo'); try { $password = rtrim(fgets(STDIN), "\r\n"); } finally { system('stty ' . escapeshellarg(trim($tty))); echo "\n"; } if (strlen($password) < 12) exit("Password minimal 12 karakter.\n"); db()->query(file_get_contents(__DIR__ . '/../migrations/001_admin.sql')); if (one("SHOW COLUMNS FROM rec_admin LIKE 'name'")) db()->query(file_get_contents(__DIR__ . '/../migrations/002_admin_identity.sql')); query('INSERT INTO rec_admin (email,nama_de,nama_be,idkar,password_hash) VALUES (?,?,?,?,?)', 'sssss', [$email, $name, $last, $idkar, password_hash($password, PASSWORD_DEFAULT)]); echo "Admin berhasil dibuat. Buka /dashboard/login.php.\n";