Spaces:
Running
Running
File size: 6,705 Bytes
052f6c9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | ```php
<?php
session_start();
require_once 'includes/config.php';
// Redirect if already logged in
if (isset($_SESSION['user_id'])) {
header('Location: ' . ($_SESSION['user_role'] === 'admin' ? 'admin-dashboard.php' : 'user-dashboard.php'));
exit;
}
// Handle form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$email = $_POST['email'];
$password = $_POST['password'];
// TODO: Validate credentials against database
// For now, we'll simulate a login
if (!empty($email) && !empty($password)) {
$_SESSION['user_id'] = 1;
$_SESSION['user_email'] = $email;
$_SESSION['user_name'] = 'John Doe';
$_SESSION['user_role'] = strpos($email, 'admin@') !== false ? 'admin' : 'user';
header('Location: ' . ($_SESSION['user_role'] === 'admin' ? 'admin-dashboard.php' : 'user-dashboard.php'));
exit;
} else {
$error = "Please enter both email and password";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login | CommunityPulse Hub</title>
<link rel="stylesheet" href="style.css">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
</head>
<body class="bg-gray-50 min-h-screen flex flex-col">
<custom-navbar></custom-navbar>
<main class="flex-grow flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8">
<div class="w-full max-w-md space-y-8">
<div class="text-center">
<i data-feather="users" class="mx-auto h-12 w-12 text-primary-500"></i>
<h2 class="mt-6 text-3xl font-extrabold text-gray-900">Sign in to your account</h2>
<p class="mt-2 text-sm text-gray-600">
Or <a href="/register.php" class="font-medium text-primary-500 hover:text-primary-600">register for an account</a>
</p>
</div>
<?php if (isset($error)): ?>
<div class="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded relative" role="alert">
<span class="block sm:inline"><?php echo htmlspecialchars($error); ?></span>
</div>
<?php endif; ?>
<form class="mt-8 space-y-6" id="loginForm" method="POST">
<div class="rounded-md shadow-sm space-y-4">
<div>
<label for="email" class="block text-sm font-medium text-gray-700 mb-1">Email address</label>
<input id="email" name="email" type="email" autocomplete="email" required
class="appearance-none relative block w-full px-3 py-3 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-md focus:outline-none focus:ring-primary-500 focus:border-primary-500 focus:z-10 sm:text-sm"
placeholder="Email address">
</div>
<div>
<label for="password" class="block text-sm font-medium text-gray-700 mb-1">Password</label>
<input id="password" name="password" type="password" autocomplete="current-password" required
class="appearance-none relative block w-full px-3 py-3 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-md focus:outline-none focus:ring-primary-500 focus:border-primary-500 focus:z-10 sm:text-sm"
placeholder="Password">
</div>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center">
<input id="remember-me" name="remember-me" type="checkbox"
class="h-4 w-4 text-primary-500 focus:ring-primary-500 border-gray-300 rounded">
<label for="remember-me" class="ml-2 block text-sm text-gray-900">Remember me</label>
</div>
<div class="text-sm">
<a href="/forgot-password.php" class="font-medium text-primary-500 hover:text-primary-600">Forgot your password?</a>
</div>
</div>
<div>
<button type="submit" class="group relative w-full flex justify-center py-3 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-primary-500 hover:bg-primary-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 transition duration-300">
<span class="absolute left-0 inset-y-0 flex items-center pl-3">
<i data-feather="log-in" class="h-5 w-5 text-primary-200 group-hover:text-primary-100"></i>
</span>
Sign in
</button>
</div>
</form>
<div class="mt-6">
<div class="relative">
<div class="absolute inset-0 flex items-center">
<div class="w-full border-t border-gray-300"></div>
</div>
<div class="relative flex justify-center text-sm">
<span class="px-2 bg-white text-gray-500">Or continue with</span>
</div>
</div>
<div class="mt-6 grid grid-cols-2 gap-3">
<div>
<a href="#" class="w-full inline-flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm bg-white text-sm font-medium text-gray-500 hover:bg-gray-50 transition duration-300">
<i data-feather="facebook" class="h-5 w-5 text-blue-600"></i>
</a>
</div>
<div>
<a href="#" class="w-full inline-flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm bg-white text-sm font-medium text-gray-500 hover:bg-gray-50 transition duration-300">
<i data-feather="github" class="h-5 w-5 text-gray-800"></i>
</a>
</div>
</div>
</div>
</div>
</main>
<custom-footer></custom-footer>
<script src="components/navbar.js"></script>
<script src="components/footer.js"></script>
<script src="script.js"></script>
<script>
feather.replace();
</script>
</body>
</html>
``` |