]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - index.php
Merge branch '0.8.x' into 0.9.x
[quix0rs-gnu-social.git] / index.php
index be62fe1f344561f87893d6e46ea1bf6ff8d5bf1d..d8434a6cfede495fb57ef980088bf069cd517820 100644 (file)
--- a/index.php
+++ b/index.php
@@ -105,6 +105,20 @@ function checkMirror($action_obj, $args)
     }
 }
 
+function isLoginAction($action)
+{
+    static $loginActions =  array('login', 'openidlogin', 'finishopenidlogin',
+                                  'recoverpassword', 'api', 'doc', 'register');
+
+    $login = null;
+
+    if (Event::handle('LoginAction', array($action, &$login))) {
+        $login = in_array($action, $loginActions);
+    }
+
+    return $login;
+}
+
 function main()
 {
     // fake HTTP redirects using lighttpd's 404 redirects
@@ -182,36 +196,11 @@ function main()
     // If the site is private, and they're not on one of the "public"
     // parts of the site, redirect to login
 
-    if (!$user && common_config('site', 'private')) {
-        $public_actions = array('openidlogin', 'finishopenidlogin',
-                                'recoverpassword', 'api', 'doc',
-                                'opensearch');
-        $login_action = 'openidlogin';
-        if (!common_config('site', 'openidonly')) {
-            $public_actions[] = 'login';
-            $public_actions[] = 'register';
-            $login_action = 'login';
-        }
-        if (!in_array($action, $public_actions) &&
-            !preg_match('/rss$/', $action)) {
-
-            // set returnto
-            $rargs =& common_copy_args($args);
-            unset($rargs['action']);
-            if (common_config('site', 'fancy')) {
-                unset($rargs['p']);
-            }
-            if (array_key_exists('submit', $rargs)) {
-                unset($rargs['submit']);
-            }
-            foreach (array_keys($_COOKIE) as $cookie) {
-                unset($rargs[$cookie]);
-            }
-            common_set_returnto(common_local_url($action, $rargs));
-
-            common_redirect(common_local_url($login_action));
-            return;
-        }
+    if (!$user && common_config('site', 'private') &&
+        !isLoginAction($action) &&
+        !preg_match('/rss$/', $action)) {
+        common_redirect(common_local_url('login'));
+        return;
     }
 
     $action_class = ucfirst($action).'Action';