login.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. require_once '../includes/config.php';
  3. require_once '../includes/database.php';
  4. require_once '../includes/auth.php';
  5. require_once '../includes/translation.php';
  6. // Start session for language preference
  7. if (session_status() === PHP_SESSION_NONE) {
  8. session_start();
  9. }
  10. // Translation system is auto-initialized when translation.php is included
  11. // Include LDAP class if LDAP is enabled
  12. if (LDAP_ENABLED) {
  13. require_once '../includes/ldap.php';
  14. }
  15. $auth = new Auth();
  16. if ($auth->isLoggedIn()) {
  17. header('Location: index.php');
  18. exit;
  19. }
  20. $errors = [];
  21. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  22. $username = trim($_POST['username'] ?? '');
  23. $password = $_POST['password'] ?? '';
  24. if (empty($username) || empty($password)) {
  25. $errors[] = t('admin_login_error_empty');
  26. } elseif ($auth->login($username, $password)) {
  27. header('Location: index.php');
  28. exit;
  29. } else {
  30. $errors[] = t('admin_login_error_invalid');
  31. }
  32. }
  33. ?>
  34. <!DOCTYPE html>
  35. <html lang="en">
  36. <head>
  37. <meta charset="UTF-8">
  38. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  39. <title><?php echo t('admin_login_title'); ?> - <?php echo SITE_TITLE; ?></title>
  40. <link rel="stylesheet" href="../css/style.css">
  41. </head>
  42. <body class="login-page">
  43. <div class="container">
  44. <div class="login-form">
  45. <h1><?php echo t('admin_login_title'); ?></h1>
  46. <?php if (LDAP_ENABLED): ?>
  47. <div class="auth-info">
  48. <p class="auth-notice">
  49. <strong><?php echo t('admin_login_mixed_auth'); ?></strong><br>
  50. <?php echo t('admin_login_mixed_auth_notice'); ?>
  51. </p>
  52. </div>
  53. <?php endif; ?>
  54. <?php if (!empty($errors)): ?>
  55. <div class="alert alert-error">
  56. <?php foreach ($errors as $error): ?>
  57. <p><?php echo htmlspecialchars($error); ?></p>
  58. <?php endforeach; ?>
  59. </div>
  60. <?php endif; ?>
  61. <nav class="admin-nav">
  62. <a href="index.php" class="nav-link"><?php echo t('admin_nav_dashboard'); ?></a>
  63. <a href="publications.php" class="nav-link"><?php echo t('admin_nav_publications'); ?></a>
  64. <a href="categories.php" class="nav-link"><?php echo t('admin_nav_categories'); ?></a>
  65. <a href="comments.php" class="nav-link"><?php echo t('admin_nav_comments'); ?></a>
  66. <a href="users.php" class="nav-link"><?php echo t('manage_users'); ?></a>
  67. <a href="wordpress_import.php" class="nav-link"><?php echo t('wordpress_import'); ?></a>
  68. <?php if (LDAP_ENABLED): ?>
  69. <a href="ldap-users.php" class="nav-link"><?php echo t('admin_nav_ldap_users'); ?></a>
  70. <?php endif; ?>
  71. <a href="logout.php" class="nav-link"><?php echo t('admin_nav_logout'); ?></a>
  72. </nav>
  73. <form method="post">
  74. <div class="form-group">
  75. <label for="username">
  76. <?php echo LDAP_ENABLED ? t('admin_login_username_ldap') : t('admin_login_username'); ?>
  77. </label>
  78. <input type="text" id="username" name="username" required
  79. placeholder="<?php echo LDAP_ENABLED ? t('admin_login_username_placeholder_ldap') : t('admin_login_username_placeholder'); ?>">
  80. </div>
  81. <div class="form-group">
  82. <label for="password">
  83. <?php echo LDAP_ENABLED ? t('admin_login_password_ldap') : t('admin_login_password'); ?>
  84. </label>
  85. <input type="password" id="password" name="password" required
  86. placeholder="<?php echo LDAP_ENABLED ? t('admin_login_password_placeholder_ldap') : t('admin_login_password_placeholder'); ?>">
  87. </div>
  88. <button type="submit" class="btn btn-primary"><?php echo t('admin_login_button'); ?></button>
  89. </form>
  90. </div>
  91. </div>
  92. </body>
  93. </html>