/home/ejrndhmu/rwberdaya.com/login.php
<?php
require_once 'config/database.php';
require_once 'config/helpers.php';
startSession();
// Get store settings
$db = new Database();
$db->query('SELECT setting_key, setting_value FROM settings');
$settings_result = $db->resultSet();
$settings = [];
foreach ($settings_result as $setting) {
$settings[$setting->setting_key] = $setting->setting_value;
}
// Set default values if not exists
$default_settings = [
'store_name' => 'TokoPro',
'store_logo' => ''
];
foreach ($default_settings as $key => $default_value) {
if (!isset($settings[$key])) {
$settings[$key] = $default_value;
}
}
// Redirect if already logged in
if (isLoggedIn()) {
if (isAdmin()) {
redirect('admin/');
} else {
redirect('index.php');
}
}
$error = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = sanitize($_POST['username']);
$password = $_POST['password'];
if (empty($username) || empty($password)) {
$error = 'Username dan password harus diisi';
} else {
try {
$db = new Database();
$db->query('SELECT * FROM users WHERE (username = :username OR email = :email) AND status = "active"');
$db->bind(':username', $username);
$db->bind(':email', $username);
$user = $db->single();
if ($user && verifyPassword($password, $user->password)) {
$_SESSION['user_id'] = $user->id;
$_SESSION['username'] = $user->username;
$_SESSION['user_role'] = $user->role;
$_SESSION['full_name'] = $user->full_name;
if ($user->role === 'admin') {
redirect('admin/');
} else {
redirect('index.php');
}
} else {
$error = 'Username atau password salah';
}
} catch (Exception $e) {
$error = 'Error: ' . $e->getMessage() . ' (File: ' . $e->getFile() . ', Line: ' . $e->getLine() . ')';
}
}
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login - Toko Pro</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: {
50: '#f0fdf4',
100: '#dcfce7',
200: '#bbf7d0',
300: '#86efac',
400: '#4ade80',
500: '#22c55e',
600: '#16a34a',
700: '#15803d',
800: '#166534',
900: '#14532d'
}
}
}
}
}
</script>
</head>
<body class="bg-gradient-to-br from-primary-50 to-primary-100 min-h-screen flex items-center justify-center p-4">
<div class="max-w-md w-full">
<!-- Logo/Brand -->
<div class="text-center mb-8">
<?php if (!empty($settings['store_logo'])): ?>
<div class="flex justify-center mb-4">
<img src="uploads/logos/<?= htmlspecialchars($settings['store_logo']) ?>"
alt="<?= htmlspecialchars($settings['store_name']) ?>"
class="h-16 w-auto">
</div>
<h1 class="text-2xl font-bold text-primary-700 mb-2"><?= htmlspecialchars($settings['store_name']) ?></h1>
<?php else: ?>
<h1 class="text-4xl font-bold text-primary-700 mb-2"><?= htmlspecialchars($settings['store_name']) ?></h1>
<?php endif; ?>
<p class="text-primary-600">Toko Online Terpercaya</p>
</div>
<!-- Login Form -->
<div class="bg-white rounded-2xl shadow-xl p-8">
<h2 class="text-2xl font-bold text-gray-800 mb-6 text-center">Masuk ke Akun Anda</h2>
<?php if ($error): ?>
<div class="bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-lg mb-6">
<?php echo $error; ?>
</div>
<?php endif; ?>
<form method="POST" action="" class="space-y-6">
<div>
<label for="username" class="block text-sm font-medium text-gray-700 mb-2">
Username atau Email
</label>
<input type="text" id="username" name="username" required
class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500 transition duration-200"
placeholder="Masukkan username atau email">
</div>
<div>
<label for="password" class="block text-sm font-medium text-gray-700 mb-2">
Password
</label>
<input type="password" id="password" name="password" required
class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500 transition duration-200"
placeholder="Masukkan password">
</div>
<button type="submit"
class="w-full bg-primary-600 hover:bg-primary-700 text-white font-semibold py-3 px-4 rounded-lg transition duration-200 transform hover:scale-105">
Masuk
</button>
</form>
<div class="mt-6 text-center">
<p class="text-gray-600">
Belum punya akun?
<a href="register.php" class="text-primary-600 hover:text-primary-700 font-semibold">
Daftar sekarang
</a>
</p>
</div>
</div>
<!-- Footer -->
<div class="text-center mt-8">
<p class="text-primary-600 text-sm">
© 2024 Toko Pro. All rights reserved.
</p>
</div>
</div>
</body>
</html>