]> git.p6c8.net - jirafeau_mojo42.git/commitdiff
Fixes #16 Permits to authenticate administrator using HTTP auth
authorJerome Jutteau <mojo@couak.net>
Tue, 10 Mar 2015 16:38:34 +0000 (17:38 +0100)
committerJerome Jutteau <mojo@couak.net>
Tue, 10 Mar 2015 16:38:34 +0000 (17:38 +0100)
This patch permits to ease integration of Jirafeau in external projects
like https://yunohost.org/.
Also fix a license oversight.

admin.php
lib/config.original.php
lib/lang/fr.php

index afcccb512708bfdd15549df10d8aababbaafa92e..837686ed3b5fdfb0b89d5bbfbad4357116a4b032 100644 (file)
--- a/admin.php
+++ b/admin.php
@@ -33,7 +33,7 @@ if (file_exists (JIRAFEAU_ROOT . 'install.php')
 }
 
 /* Disable admin interface if we have a empty admin password. */
-if (empty($cfg['admin_password']))
+if (empty($cfg['admin_password']) && empty($cfg['admin_http_auth_user']))
 {
     require (JIRAFEAU_ROOT . 'lib/template/header.php');
     echo '<div class="error"><p>'.
@@ -50,8 +50,8 @@ session_start();
 if (isset ($_POST['action']) && (strcmp ($_POST['action'], 'logout') == 0))
     $_SESSION['admin_auth'] = false;
 
-/* Check password. */
-if (isset ($_POST['admin_password']))
+/* Check classic admin password authentification. */
+if (isset ($_POST['admin_password']) && empty($cfg['admin_http_auth_user']))
 {
     if (strcmp ($cfg['admin_password'], $_POST['admin_password']) == 0)
         $_SESSION['admin_auth'] = true;
@@ -65,8 +65,9 @@ if (isset ($_POST['admin_password']))
         exit;
     }
 }
-/* Ask for password. */
-elseif (!isset ($_SESSION['admin_auth']) || $_SESSION['admin_auth'] != true)
+/* Ask for classic admin password authentification. */
+elseif ((!isset ($_SESSION['admin_auth']) || $_SESSION['admin_auth'] != true)
+        && empty($cfg['admin_http_auth_user']))
 {
     require (JIRAFEAU_ROOT . 'lib/template/header.php'); ?>
     <form action = "<?php echo basename(__FILE__); ?>" method = "post">
@@ -95,6 +96,25 @@ elseif (!isset ($_SESSION['admin_auth']) || $_SESSION['admin_auth'] != true)
     require (JIRAFEAU_ROOT.'lib/template/footer.php');
     exit;
 }
+/* Check authenticated user if HTTP authentification is enable. */
+elseif ((!isset ($_SESSION['admin_auth']) || $_SESSION['admin_auth'] != true)
+        && !empty($cfg['admin_http_auth_user']))
+{
+    if ($cfg['admin_http_auth_user'] == $_SERVER['PHP_AUTH_USER'])
+        $_SESSION['admin_auth'] = true;
+}
+
+/* Be sure that no one can access further without admin_auth. */
+if (!isset ($_SESSION['admin_auth']) || $_SESSION['admin_auth'] != true)
+{
+         $_SESSION['admin_auth'] = false;
+        require (JIRAFEAU_ROOT . 'lib/template/header.php');
+        echo '<div class="error"><p>'.
+         t('Sorry, you are not authenticated on admin interface.') .
+         '</p></div>';
+        require (JIRAFEAU_ROOT.'lib/template/footer.php');
+        exit;
+}
 
 /* Operations may take a long time.
  * Be sure PHP's safe mode is off.
index fefd61e843011b434782f55ad48f025f92bbdb4a..76d5870c760fe1f02ff3430c13d3811de78a3ec9 100644 (file)
@@ -2,6 +2,7 @@
 /*
  *  Jirafeau, your web file repository
  *  Copyright (C) 2008  Julien "axolotl" BERNARD <axolotl@magieeternelle.org>
+ *  Copyright (C) 2015  Jerome Jutteau <j.jutteau@gmail.com>
  *
  *  This program is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU Affero General Public License as
@@ -34,8 +35,6 @@ $cfg['var_root'] = '';
 $cfg['lang'] = 'auto';
 $cfg['style'] = 'modern';
 $cfg['rewrite'] = false;
-/* An empty admin password will disable the admin interface. */
-$cfg['admin_password'] = '';
 /* preview: false (will download file) or true (will preview in browser if
  * possible) . */
 $cfg['preview'] = true;
@@ -55,10 +54,21 @@ $cfg['link_name_lenght'] = 8;
  * ... and so on
  */
 $cfg['upload_password'] = array();
-
+/* An empty admin password will disable the classic admin password
+ * authentication.
+ */
+$cfg['admin_password'] = '';
+/* If set, let's the user to be authenticated as administrator.
+ * The user provided here is the user authenticated by HTTP authentication.
+ * Note that Jirafeau does not manage the HTTP login part, it just check
+ * that the provided user is logged.
+ * If admin_password parameter is also set, admin_password is ignored.
+ */
+$cfg['admin_http_auth_user'] = '';
 /* Installation is done ? */
 $cfg['installation_done'] = false;
 
+/* Try to include user's local configuration. */
 if ((basename (__FILE__) != 'config.local.php')
     && file_exists (JIRAFEAU_ROOT.'lib/config.local.php'))
 {
index 02142e5bec2810137f13baf1c6779fa87163f2d3..d806dc9b935a8b0ca15ee7a5dfaa40e4f81c5609 100644 (file)
@@ -102,6 +102,7 @@ $tr = array (
             'Administration password' => 'Mot de passe d\'administration',
             /* admin.php */
             'Sorry, the admin interface is not enabled.' => 'Désolé, l\'interface d\'administration n\'est pas activée.',
+            'Sorry, you are not authenticated on admin interface.' => 'Désolé, vous n\'êtes pas authentifié sur l\'interface d\'administration',
             'Login' => 'Connexion',
             'Wrong password.' => 'Mot de passe invalide.',
             'Admin interface' => 'Interface d\'administration',

patrick-canterino.de