39401-vm/login.php
2026-03-30 17:47:50 +00:00

110 lines
4.6 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/includes/layout.php';
if (is_user_logged_in()) {
header('Location: ' . auth_redirect_target(app_url('dashboard.php')));
exit;
}
$errors = [];
$formData = [
'email' => '',
];
$redirectTarget = auth_redirect_target(app_url('dashboard.php'));
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$formData['email'] = trim((string) ($_POST['email'] ?? ''));
$password = (string) ($_POST['password'] ?? '');
$redirectTarget = auth_redirect_target(app_url('dashboard.php'));
if (!filter_var($formData['email'], FILTER_VALIDATE_EMAIL)) {
$errors['email'] = 'Masukkan email yang valid.';
}
if ($password === '') {
$errors['password'] = 'Password wajib diisi.';
}
if (!$errors) {
$user = verify_user_login($formData['email'], $password);
if ($user) {
login_user($user);
set_flash('success', 'Login berhasil. Sekarang kamu hanya melihat data servis milik akun ini.');
header('Location: ' . $redirectTarget);
exit;
}
$errors['login'] = 'Email atau password tidak cocok.';
}
}
render_page_start([
'title' => 'Login akun',
'description' => 'Masuk ke akun ServisIngat untuk melihat dashboard reminder servis milik kamu sendiri.',
'page' => 'login',
'robots' => 'noindex, nofollow',
'body_class' => 'page-auth',
]);
render_flash(consume_flash());
?>
<section class="py-5 py-lg-6">
<div class="container">
<div class="auth-shell row g-4 align-items-stretch justify-content-center">
<div class="col-lg-5">
<div class="surface-card auth-side h-100">
<span class="eyebrow">Login</span>
<h1 class="section-title mt-2 mb-3">Masuk ke dashboard privat kamu</h1>
<p class="text-secondary mb-4">Begitu login, kamu hanya melihat catatan servis yang dibuat oleh akun kamu sendiri.</p>
<div class="auth-feature-list d-flex flex-column gap-3">
<div class="auth-feature-item">
<strong>Privasi per akun</strong>
<span>Data user lain tidak tampil di dashboard kamu.</span>
</div>
<div class="auth-feature-item">
<strong>Reminder jelas</strong>
<span>Status terlambat, segera, dan aman tampil langsung setelah masuk.</span>
</div>
<div class="auth-feature-item">
<strong>Alur sederhana</strong>
<span>Cocok untuk pemilik kendaraan yang ingin cepat input tanpa setting rumit.</span>
</div>
</div>
</div>
</div>
<div class="col-lg-5">
<div class="surface-card auth-card auth-form-card h-100">
<div class="d-flex justify-content-between align-items-start gap-3 mb-4">
<div>
<div class="small text-uppercase text-muted mb-1">Welcome back</div>
<h2 class="h4 mb-1">Login akun</h2>
<p class="small text-secondary mb-0">Masuk untuk lanjut ke dashboard servis pribadi.</p>
</div>
<span class="badge badge-soft">Privat</span>
</div>
<?php if (isset($errors['login'])): ?>
<div class="alert alert-danger" role="alert"><?= e($errors['login']) ?></div>
<?php endif; ?>
<form method="post" class="vstack gap-3" novalidate>
<input type="hidden" name="redirect" value="<?= e($redirectTarget) ?>">
<div>
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control <?= isset($errors['email']) ? 'is-invalid' : '' ?>" id="email" name="email" value="<?= e($formData['email']) ?>" placeholder="nama@email.com">
<?php if (isset($errors['email'])): ?><div class="invalid-feedback"><?= e($errors['email']) ?></div><?php endif; ?>
</div>
<div>
<label for="password" class="form-label">Password</label>
<input type="password" class="form-control <?= isset($errors['password']) ? 'is-invalid' : '' ?>" id="password" name="password" placeholder="Masukkan password">
<?php if (isset($errors['password'])): ?><div class="invalid-feedback"><?= e($errors['password']) ?></div><?php endif; ?>
</div>
<button type="submit" class="btn btn-dark w-100">Login</button>
</form>
<div class="small text-muted mt-3">Belum punya akun? <a href="<?= e(app_url('register.php')) ?><?= $redirectTarget !== app_url('dashboard.php') ? '?redirect=' . urlencode($redirectTarget) : '' ?>">Daftar di sini</a>.</div>
</div>
</div>
</div>
</div>
</section>
<?php render_page_end(); ?>