Files
Recruitment-HC/dashboard/login.php
T

23 lines
2.7 KiB
PHP

<?php
require __DIR__ . '/bootstrap.php';
if (!empty($_SESSION['admin_id']) && time() - ($_SESSION['admin_active'] ?? 0) <= 3600) redirect('index.php');
$error = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
verify_csrf();
if (($_SESSION['login_blocked_until'] ?? 0) > time()) { $error = 'Terlalu banyak percobaan. Coba lagi dalam beberapa menit.'; }
else {
$admin = one('SELECT * FROM rec_admin WHERE email=?', 's', [trim($_POST['email'] ?? '')]);
$valid = password_verify($_POST['password'] ?? '', $admin['password_hash'] ?? '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi');
if ($admin && $valid) {
session_regenerate_id(true);
$_SESSION['admin_id'] = (int)$admin['id']; $_SESSION['admin_name'] = trim($admin['nama_de'] . ' ' . $admin['nama_be']); $_SESSION['admin_active'] = time();
$_SESSION['csrf'] = bin2hex(random_bytes(32)); unset($_SESSION['login_attempts'], $_SESSION['login_blocked_until']); redirect('index.php');
}
$_SESSION['login_attempts'] = ($_SESSION['login_attempts'] ?? 0) + 1;
if ($_SESSION['login_attempts'] >= 5) { $_SESSION['login_blocked_until'] = time() + 300; $_SESSION['login_attempts'] = 0; }
$error = 'Email atau password admin tidak sesuai.';
}
}
page_start('Login admin');
?><div class="auth-layout"><section class="auth-story"><a class="brand" href="../index.php"><img class="brand-logo" src="assets/nurinda-logo.png" alt="Logo Nurinda"><span>NURINDA<small>Human Capital</small></span></a><div><span class="eyebrow">THE RIGHT PEOPLE. THE RIGHT FUTURE.</span><h1>Kenali potensi.<br>Temukan talenta terbaik.</h1><p>Satu ruang untuk memantau peserta, meninjau hasil psikotest, dan mengelola bank soal.</p><div class="story-pills"><span>01 · Peserta</span><span>02 · Hasil tes</span><span>03 · Bank soal</span></div></div><small>Recruitment workspace · Nurinda</small></section><section class="auth-form"><span class="badge">AKSES ADMINISTRATOR</span><h2>Selamat datang kembali.</h2><p class="muted">Masuk untuk mengelola proses recruitment.</p><?php if ($error): ?><div class="notice error" role="alert"><?=e($error)?></div><?php endif; ?><form method="post"><?php csrf_field(); ?><label>Email admin<input type="email" name="email" autocomplete="username" required maxlength="190" value="<?=e($_POST['email'] ?? '')?>" placeholder="nama@nurinda.co.id"></label><label>Password<input type="password" name="password" autocomplete="current-password" required placeholder="Masukkan password"></label><button class="button full">Masuk ke dashboard <span>→</span></button></form><p class="auth-note">Akun admin dikelola oleh pengelola sistem.</p><a class="text-link" href="../index.php">← Kembali ke halaman peserta</a></section></div><?php page_end(); ?>