function user_menu_site_status_alter

Implements hook_menu_site_status_alter().

File

modules/user/user.module, line 1883

Code

function user_menu_site_status_alter(&$menu_site_status, $path) {
    if ($menu_site_status == MENU_SITE_OFFLINE) {
        // If the site is offline, log out unprivileged users.
        if (user_is_logged_in() && !user_access('access site in maintenance mode')) {
            module_load_include('pages.inc', 'user', 'user');
            user_logout();
        }
        if (user_is_anonymous()) {
            switch ($path) {
                case 'user':
                    // Forward anonymous user to login page.
                    drupal_goto('user/login');
                case 'user/login':
                case 'user/password':
                    // Disable offline mode.
                    $menu_site_status = MENU_SITE_ONLINE;
                    break;
                default:
                    if (strpos($path, 'user/reset/') === 0) {
                        // Disable offline mode.
                        $menu_site_status = MENU_SITE_ONLINE;
                    }
                    break;
            }
        }
    }
    if (user_is_logged_in()) {
        if ($path == 'user/login') {
            // If user is logged in, redirect to 'user' instead of giving 403.
            drupal_goto('user');
        }
        if ($path == 'user/register') {
            // Authenticated user should be redirected to user edit page.
            drupal_goto('user/' . $GLOBALS['user']->uid . '/edit');
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.