]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
added option to redirect all anonymous users to login page 961/head
authorWilli Eggeling <thewilli@gmail.com>
Wed, 30 Aug 2017 22:39:15 +0000 (00:39 +0200)
committerWilli Eggeling <thewilli@gmail.com>
Sun, 3 Sep 2017 09:46:49 +0000 (11:46 +0200)
- new setting *force_login* added and documented
- if both, *force_login* and *hide_public_links* are set to true, all requests
  (except for the feeds) are redirected to the login page

application/config/ConfigManager.php
doc/md/Shaarli-configuration.md
index.php

index fdd5b3d76a109b0e16b93f6020e448df2613dfdf..32f6ef6db5418044a12fd92959e19a2d7634a029 100644 (file)
@@ -327,6 +327,7 @@ class ConfigManager
 
         $this->setEmpty('privacy.default_private_links', false);
         $this->setEmpty('privacy.hide_public_links', false);
+        $this->setEmpty('privacy.force_login', false);
         $this->setEmpty('privacy.hide_timestamps', false);
         // default state of the 'remember me' checkbox of the login form
         $this->setEmpty('privacy.remember_user_default', true);
index d90e95eb5e33168a5869088170db5a194190af82..374864147065318ea2b703253bea39e2daa29458 100644 (file)
@@ -90,6 +90,7 @@ _These settings should not be edited_
 
 - **default_private_links**: Check the private checkbox by default for every new link.  
 - **hide_public_links**: All links are hidden while logged out.  
+- **force_login**: if **hide_public_links** and this are set to `true`, all anonymous users are redirected to the login page.
 - **hide_timestamps**: Timestamps are hidden.
 - **remember_user_default**: Default state of the login page's *remember me* checkbox
     - `true`: checked by default, `false`: unchecked by default
@@ -194,6 +195,7 @@ _These settings should not be edited_
     "privacy": {
         "default_private_links": true,
         "hide_public_links": false,
+        "force_login": false,
         "hide_timestamps": false,
         "remember_user_default": true
     },
index 218d317dcab7091c9aaa9ed081fdf53969cf280d..fb00a9fa3adb8d302f712fcbe7d7fc2a694409f4 100644 (file)
--- a/index.php
+++ b/index.php
@@ -718,6 +718,23 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history)
     $query = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : '';
     $targetPage = Router::findPage($query, $_GET, isLoggedIn());
 
+    if (
+        // if the user isn't logged in
+        !isLoggedIn() &&
+        // and Shaarli doesn't have public content...
+        $conf->get('privacy.hide_public_links') &&
+        // and is configured to enforce the login
+        $conf->get('privacy.force_login') &&
+        // and the current page isn't already the login page
+        $targetPage !== Router::$PAGE_LOGIN &&
+        // and the user is not requesting a feed (which would lead to a different content-type as expected)
+        $targetPage !== Router::$PAGE_FEED_ATOM &&
+        $targetPage !== Router::$PAGE_FEED_RSS
+    ) {
+        // force current page to be the login page
+        $targetPage = Router::$PAGE_LOGIN;
+    }
+
     // Call plugin hooks for header, footer and includes, specifying which page will be rendered.
     // Then assign generated data to RainTPL.
     $common_hooks = array(