X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=index.php;h=d8434a6cfede495fb57ef980088bf069cd517820;hb=b2664e1ae2e2cf66585cdd8696d88efdd053eb3b;hp=be62fe1f344561f87893d6e46ea1bf6ff8d5bf1d;hpb=9f07921b45190b462e1a798622068e24ef31e124;p=quix0rs-gnu-social.git diff --git a/index.php b/index.php index be62fe1f34..d8434a6cfe 100644 --- 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';