From 65fb840b761cb04d52bd03ef0d5ed20053ae16ba Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Tue, 3 Jun 2008 16:33:02 +0000 Subject: [PATCH] merge git-svn-id: file:///svn/phpbb/trunk@8587 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/index.php | 12 +++++- phpBB/adm/style/acp_login.html | 46 +++++++++++++++++++++++ phpBB/adm/style/overall_header.html | 6 ++- phpBB/includes/acp/acp_main.php | 9 +++++ phpBB/includes/functions.php | 58 +++++++++++++++++++++++------ phpBB/includes/session.php | 10 +++++ phpBB/language/en/acp/common.php | 4 ++ 7 files changed, 129 insertions(+), 16 deletions(-) create mode 100755 phpBB/adm/style/acp_login.html diff --git a/phpBB/adm/index.php b/phpBB/adm/index.php index af5511f3b6..819e4a1a8f 100644 --- a/phpBB/adm/index.php +++ b/phpBB/adm/index.php @@ -28,10 +28,14 @@ $user->setup('acp/common'); // End session management // Have they authenticated (again) as an admin for this session? -if (!isset($user->data['session_admin']) || !$user->data['session_admin']) +if ($user->data['user_id'] != ANONYMOUS && (!isset($user->data['session_admin']) || !$user->data['session_admin'])) { login_box('', $user->lang['LOGIN_ADMIN_CONFIRM'], $user->lang['LOGIN_ADMIN_SUCCESS'], true, false); } +else if ($user->data['user_id'] == ANONYMOUS) +{ + login_box(''); +} // Is user any type of admin? No, then stop here, each script needs to // check specific permissions but this is a catchall @@ -108,7 +112,7 @@ function adm_page_header($page_title) $template->assign_vars(array( 'PAGE_TITLE' => $page_title, - 'USERNAME' => $user->data['username'], + 'USERNAME' => ($user->data['user_id'] != ANONYMOUS) ? $user->data['username'] : '', 'SID' => $SID, '_SID' => $_SID, @@ -116,9 +120,13 @@ function adm_page_header($page_title) 'ROOT_PATH' => PHPBB_ADMIN_PATH, 'U_LOGOUT' => append_sid('ucp', 'mode=logout'), + 'U_ADM_LOGOUT' => append_sid(PHPBB_ADMIN_PATH . 'index.' . PHP_EXT, 'action=admlogout'), 'U_ADM_INDEX' => append_sid(PHPBB_ADMIN_PATH . 'index.' . PHP_EXT), 'U_INDEX' => append_sid('index'), + 'S_USER_ADMIN' => $user->data['session_admin'], + 'S_USER_LOGGED_IN' => ($user->data['user_id'] != ANONYMOUS && !$user->data['is_bot']), + 'T_IMAGES_PATH' => PHPBB_ROOT_PATH . 'images/', 'T_SMILIES_PATH' => PHPBB_ROOT_PATH . $config['smilies_path'] . '/', 'T_AVATAR_PATH' => PHPBB_ROOT_PATH . $config['avatar_path'] . '/', diff --git a/phpBB/adm/style/acp_login.html b/phpBB/adm/style/acp_login.html new file mode 100755 index 0000000000..015f3ec908 --- /dev/null +++ b/phpBB/adm/style/acp_login.html @@ -0,0 +1,46 @@ + +

{PAGE_TITLE}

+

{LOGIN_EXPLAIN}{L_LOGIN}

+ + +
+

{L_WARNING}

+

{LOGIN_ERROR}

+
+ +
+ +
+
+
+
+
+
+
+
+ +
{L_FORGOT_PASS}
+
{L_RESEND_ACTIVATION}
+ +
+ + +
+

{L_CONFIRM_CODE_EXPLAIN}
+
{CONFIRM_IMAGE}
+
+
+ + +

+ + + + +   + {S_HIDDEN_FIELDS} +

+
+
+ + diff --git a/phpBB/adm/style/overall_header.html b/phpBB/adm/style/overall_header.html index e883e66d80..adafc0aa6d 100644 --- a/phpBB/adm/style/overall_header.html +++ b/phpBB/adm/style/overall_header.html @@ -181,11 +181,12 @@ function switch_menu()
-
+
diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php index 3e24898908..d71fc8043d 100644 --- a/phpBB/includes/acp/acp_main.php +++ b/phpBB/includes/acp/acp_main.php @@ -60,6 +60,14 @@ class acp_main if ($action) { + if ($action === 'admlogout') + { + $user->unset_admin(); + $redirect_url = append_sid("{$phpbb_root_path}index.$phpEx"); + meta_refresh(3, $redirect_url); + trigger_error($user->lang['ADM_LOGGED_OUT'] . '

' . sprintf($user->lang['RETURN_INDEX'], '', '')); + } + if (!confirm_box(true)) { switch ($action) @@ -107,6 +115,7 @@ class acp_main { switch ($action) { + case 'online': if (!$auth->acl_get('a_board')) { diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index a61c1ed1a3..3a4a12777e 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -2176,6 +2176,7 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = false, $s_display = true) { global $db, $user, $template, $auth, $config; + $err = ''; @@ -2184,6 +2185,16 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa { $user->setup(); } + + if (defined('ADMIN_START')) + { + // Set custom template for admin area + $template->set_custom_template(PHPBB_ADMIN_PATH . 'style', 'admin'); + $template->assign_var('T_TEMPLATE_PATH', PHPBB_ADMIN_PATH . 'style'); + + // the acp template is never stored in the database + $user->theme['template_storedb'] = false; + } // Print out error if user tries to authenticate as an administrator without having the privileges... if ($admin && !$auth->acl_get('a_')) @@ -2351,7 +2362,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa // If we are not within the admin directory we use the page dir... $redirect = ''; - if (!$admin) + if (!$admin && !defined('ADMIN_START')) { $redirect .= ($user->page['page_dir']) ? $user->page['page_dir'] . '/' : ''; } @@ -2384,24 +2395,47 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa 'U_PRIVACY' => append_sid('ucp', 'mode=privacy'), 'S_DISPLAY_FULL_LOGIN' => ($s_display) ? true : false, - 'S_LOGIN_ACTION' => (!$admin) ? append_sid('ucp', 'mode=login') : append_sid(PHPBB_ADMIN_PATH . 'index.' . PHP_EXT, false, true, $user->session_id), + 'S_LOGIN_ACTION' => (!$admin && !defined('ADMIN_START')) ? append_sid('ucp', 'mode=login') : append_sid(PHPBB_ADMIN_PATH . 'index.' . PHP_EXT, false, true, $user->session_id), 'S_HIDDEN_FIELDS' => $s_hidden_fields, 'S_ADMIN_AUTH' => $admin, + 'S_ACP_LOGIN' => defined('ADMIN_START'), 'USERNAME' => ($admin) ? $user->data['username'] : '', 'USERNAME_CREDENTIAL' => 'username', 'PASSWORD_CREDENTIAL' => ($admin) ? 'password_' . $credential : 'password', )); - - page_header($user->lang['LOGIN'], false); - - $template->set_filenames(array( - 'body' => 'login_body.html') - ); + + if (defined('ADMIN_START')) + { + $template->set_filenames(array( + 'body' => 'acp_login.html') + ); + $template->assign_block_vars('t_block1', array( + 'L_TITLE' => $user->lang['LOGIN'], + 'S_SELECTED' => true, + 'U_TITLE' => '', + )); + adm_page_header($user->lang['LOGIN'], false); + } + else + { + $template->set_filenames(array( + 'body' => 'login_body.html') + ); + page_header($user->lang['LOGIN'], false); + } + make_jumpbox(append_sid('viewforum')); - - page_footer(); + if (defined('ADMIN_START') && isset($user->data['session_admin']) && $user->data['session_admin']) + { + adm_page_footer(); + } + else + { + page_footer(); + } + } /** @@ -3003,7 +3037,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline) if (!defined('HEADER_INC')) { - if (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin']) + if (defined('ADMIN_START') || (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])) { adm_page_header($msg_title); } @@ -3027,7 +3061,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline) // We do not want the cron script to be called on error messages define('IN_CRON', true); - if (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin']) + if (defined('ADMIN_START') || (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])) { adm_page_footer(); } diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index 29d3ba584e..fedaba8559 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -1321,6 +1321,16 @@ class session } return true; } + + + function unset_admin() + { + global $db; + $sql = 'UPDATE ' . SESSIONS_TABLE . ' + SET session_admin = 0 + WHERE session_id = \'' . $db->sql_escape($this->session_id) . '\''; + $db->sql_query($sql); + } } diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 85c57fb1c3..41ade70855 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -201,6 +201,9 @@ $lang = array_merge($lang, array( 'ADMIN_INDEX' => 'Admin index', 'ADMIN_PANEL' => 'Administration Control Panel', + 'ADM_LOGOUT' => 'ACP Logout', + 'ADM_LOGGED_OUT' => 'Successfully logged out from Administration Control Panel', + 'BACK' => 'Back', 'COLOUR_SWATCH' => 'Web-safe colour swatch', @@ -236,6 +239,7 @@ $lang = array_merge($lang, array( 'LOOK_UP_FORUM' => 'Select a forum', 'LOOK_UP_FORUMS_EXPLAIN'=> 'You are able to select more than one forum.', + 'LOGIN_REDIRECT' => 'You have been successfully logged in.', 'MANAGE' => 'Manage', 'MENU_TOGGLE' => 'Hide or display the side menu', 'MOVE_DOWN' => 'Move down',