| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- <?php
- // Αρχείο: /var/www/html/hockey-cms/admin/login.php
- session_start();
- require_once '../config/database.php';
- // --- Μηχανισμός Αλλαγής Γλώσσας ---
- if (isset($_GET['lang']) && in_array($_GET['lang'], ['el', 'en'])) {
- $_SESSION['lang'] = $_GET['lang'];
- }
- $current_lang = $_SESSION['lang'] ?? 'el';
- $translations = [
- 'el' => [
- 'login_title' => 'Σύνδεση Διαχειριστή - Hockey CMS',
- 'app_name' => 'Hockey CMS - Admin',
- 'username' => 'Όνομα Χρήστη',
- 'password' => 'Κωδικός Πρόσβασης',
- 'btn_login' => 'Σύνδεση',
- 'or' => 'Ή',
- 'btn_google' => 'Σύνδεση Διαχειριστή με Google',
- 'err_empty' => 'Παρακαλώ συμπληρώστε όλα τα πεδία.',
- 'err_invalid' => 'Λάθος όνομα χρήστη ή κωδικός.'
- ],
- 'en' => [
- 'login_title' => 'Admin Login - Hockey CMS',
- 'app_name' => 'Hockey CMS - Admin',
- 'username' => 'Username',
- 'password' => 'Password',
- 'btn_login' => 'Login',
- 'or' => 'OR',
- 'btn_google' => 'Admin Sign in with Google',
- 'err_empty' => 'Please fill in all fields.',
- 'err_invalid' => 'Invalid username or password.'
- ]
- ];
- $t = $translations[$current_lang];
- // Αν ο χρήστης είναι ήδη συνδεδεμένος ως Admin
- if (isset($_SESSION['user_id']) && isset($_SESSION['role_id']) && $_SESSION['role_id'] == 1) {
- header("Location: index.php");
- exit;
- }
- $error = '';
- if (isset($_SESSION['login_error'])) {
- $error = $_SESSION['login_error'];
- unset($_SESSION['login_error']);
- }
- if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- $username = trim($_POST['username']);
- $password = $_POST['password'];
- if (empty($username) || empty($password)) {
- $error = $t['err_empty'];
- } else {
- $stmt = $pdo->prepare("SELECT id, role_id, password, first_name, username, is_seller FROM users WHERE username = ?");
- $stmt->execute([$username]);
- $user = $stmt->fetch();
- // Έλεγχος ότι είναι όντως Admin (role_id == 1)
- if ($user && password_verify($password, $user['password']) && $user['role_id'] == 1) {
- session_regenerate_id(true);
- $_SESSION['user_id'] = $user['id'];
- $_SESSION['role_id'] = $user['role_id'];
- $_SESSION['first_name'] = $user['first_name'] ?? '';
- $_SESSION['username'] = $user['username'];
- $_SESSION['is_seller'] = $user['is_seller'] ?? 0;
-
- header("Location: index.php");
- exit;
- } else {
- $error = $t['err_invalid'];
- }
- }
- }
- ?>
- <!DOCTYPE html>
- <html lang="<?php echo $current_lang; ?>">
- <head>
- <meta charset="UTF-8">
- <title><?php echo $t['login_title']; ?></title>
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
- <style>
- :root {
- --primary: #f97316;
- --primary-hover: #ea580c;
- --bg-color: #0b1120;
- --panel-bg: #1e293b;
- --border-color: #334155;
- --text-main: #f8fafc;
- --text-muted: #94a3b8;
- }
- body { font-family: 'Inter', sans-serif; background-color: var(--bg-color); display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; flex-direction: column; }
- .login-box { background: var(--panel-bg); padding: 40px; border-radius: 8px; box-shadow: 0 10px 25px rgba(0,0,0,0.5); width: 100%; max-width: 350px; border: 1px solid var(--border-color); }
- .login-box h2 { text-align: center; margin-top: 0; margin-bottom: 25px; color: var(--primary); font-weight: 800; letter-spacing: 0.5px; text-transform: uppercase; }
- .form-group { margin-bottom: 20px; }
- .form-group label { display: block; margin-bottom: 8px; color: var(--text-muted); font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; }
- .form-group input { width: 100%; padding: 12px; background: #0f172a; border: 1px solid var(--border-color); color: var(--text-main); border-radius: 6px; box-sizing: border-box; font-family: 'Inter', sans-serif; outline: none; transition: 0.2s; }
- .form-group input:focus { border-color: var(--primary); box-shadow: 0 0 0 2px rgba(249, 115, 22, 0.2); }
- .btn { width: 100%; padding: 14px; background: var(--primary); color: white; border: none; border-radius: 6px; cursor: pointer; font-size: 15px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; margin-top: 10px; transition: 0.2s; }
- .btn:hover { background: var(--primary-hover); transform: translateY(-1px); }
-
- .btn-google { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; padding: 12px; background: #ffffff; color: #1e293b; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; font-weight: 700; text-decoration: none; margin-top: 15px; transition: 0.2s; box-sizing: border-box; }
- .btn-google:hover { background: #f1f5f9; }
-
- .divider { text-align: center; border-bottom: 1px solid var(--border-color); line-height: 0.1em; margin: 25px 0 20px 0; }
- .divider span { background: var(--panel-bg); padding: 0 10px; color: var(--text-muted); font-size: 12px; font-weight: 600; text-transform: uppercase; }
- .error { background: rgba(239, 68, 68, 0.1); border: 1px solid rgba(239, 68, 68, 0.2); color: #fca5a5; padding: 10px; border-radius: 6px; margin-bottom: 20px; text-align: center; font-size: 14px; font-weight: 600; }
-
- .lang-switch { margin-bottom: 20px; display: flex; gap: 10px; justify-content: center; }
- .lang-switch a { color: var(--text-muted); text-decoration: none; font-size: 13px; font-weight: 700; padding: 4px 10px; border-radius: 12px; transition: 0.2s; }
- .lang-switch a.active { background: var(--border-color); color: var(--text-main); }
- .lang-switch a:hover { color: var(--text-main); }
- </style>
- </head>
- <body>
- <div class="lang-switch">
- <a href="?lang=el" class="<?php echo $current_lang == 'el' ? 'active' : ''; ?>">GR</a>
- <a href="?lang=en" class="<?php echo $current_lang == 'en' ? 'active' : ''; ?>">EN</a>
- </div>
-
- <div class="login-box">
- <h2><?php echo $t['app_name']; ?></h2>
- <?php if ($error): ?>
- <div class="error"><?php echo htmlspecialchars($error); ?></div>
- <?php endif; ?>
- <form method="POST" action="login.php">
- <div class="form-group">
- <label><?php echo $t['username']; ?></label>
- <input type="text" name="username" required>
- </div>
- <div class="form-group">
- <label><?php echo $t['password']; ?></label>
- <input type="password" name="password" required>
- </div>
- <button type="submit" class="btn"><?php echo $t['btn_login']; ?></button>
- </form>
- <div class="divider"><span><?php echo $t['or']; ?></span></div>
- <!-- Κουμπί Google Login για Admin -->
- <a href="google_login.php" class="btn-google">
- <svg width="18" height="18" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path fill="#EA4335" d="M24 9.5c3.54 0 6.7 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"/><path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"/><path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"/><path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.46-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"/><path fill="none" d="M0 0h48v48H0z"/></svg>
- <?php echo $t['btn_google']; ?>
- </a>
- </div>
- </body>
- </html>
|