110 lines
4.6 KiB
PHP
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(); ?>
|