PukiWiki
修訂 | 103b575cf95f8b1a16ec7519bac56cfadc58b0d3 (tree) |
---|---|
時間 | 2016-01-23 01:28:53 |
作者 | ![]() |
Commiter | umorigu |
BugTrack2/373 AUTH_TYPE_EXTERNAL - Add Log-in and Log-out menu
@@ -182,7 +182,6 @@ function basic_auth($page, $auth_flag, $exit_flag, $auth_pages, $title_cannot) | ||
182 | 182 | { |
183 | 183 | global $auth_method_type, $auth_users, $_msg_auth, $auth_user, $auth_groups; |
184 | 184 | global $auth_user_groups, $auth_type, $g_query_string; |
185 | - global $auth_external_login_url; | |
186 | 185 | // Checked by: |
187 | 186 | $target_str = ''; |
188 | 187 | if ($auth_method_type == 'pagename') { |
@@ -212,15 +211,13 @@ function basic_auth($page, $auth_flag, $exit_flag, $auth_pages, $title_cannot) | ||
212 | 211 | } elseif (AUTH_TYPE_FORM === $auth_type) { |
213 | 212 | $url_after_login = get_script_uri() . '?' . $g_query_string; |
214 | 213 | $loginurl = get_script_uri() . '?plugin=loginform' |
215 | - . '&page=' . pagename_urlencode($page) | |
214 | + . '&page=' . rawurlencode($page) | |
216 | 215 | . '&url_after_login=' . rawurlencode($url_after_login); |
217 | 216 | header('HTTP/1.0 302 Found'); |
218 | 217 | header('Location: ' . $loginurl); |
219 | 218 | } elseif (AUTH_TYPE_EXTERNAL === $auth_type) { |
220 | 219 | $url_after_login = get_script_uri() . '?' . $g_query_string; |
221 | - $loginurl = $auth_external_login_url . '?' | |
222 | - . '&page=' . pagename_urlencode($page) | |
223 | - . '&url_after_login=' . rawurlencode($url_after_login); | |
220 | + $loginurl = get_auth_external_login_url($page, $url_after_login); | |
224 | 221 | header('HTTP/1.0 302 Found'); |
225 | 222 | header('Location: ' . $loginurl); |
226 | 223 | } |
@@ -458,3 +455,18 @@ function form_auth_redirect($location, $page) | ||
458 | 455 | header('Location: ' . $url); |
459 | 456 | } |
460 | 457 | } |
458 | + | |
459 | +/** | |
460 | + * Get External Auth log-in URL | |
461 | + */ | |
462 | +function get_auth_external_login_url($page, $url_after_login) { | |
463 | + global $auth_external_login_url_base; | |
464 | + $sep = '&'; | |
465 | + if (strpos($auth_external_login_url_base, '?') === FALSE) { | |
466 | + $sep = '?'; | |
467 | + } | |
468 | + $url = $auth_external_login_url_base . $sep | |
469 | + . 'page=' . rawurlencode($page) | |
470 | + . '&url_after_login=' . rawurlencode($url_after_login); | |
471 | + return $url; | |
472 | +} |
@@ -26,7 +26,7 @@ function catbody($title, $page, $body) | ||
26 | 26 | |
27 | 27 | $enable_login = false; |
28 | 28 | $enable_logout = false; |
29 | - if (AUTH_TYPE_FORM === $auth_type) { | |
29 | + if (AUTH_TYPE_FORM === $auth_type || AUTH_TYPE_EXTERNAL === $auth_type) { | |
30 | 30 | if ($auth_user) { |
31 | 31 | $enable_logout = true; |
32 | 32 | } else { |
@@ -70,7 +70,15 @@ function catbody($title, $page, $body) | ||
70 | 70 | $_LINK['top'] = "$script?" . pagename_urlencode($defaultpage); |
71 | 71 | $_LINK['unfreeze'] = "$script?cmd=unfreeze&page=$r_page"; |
72 | 72 | $_LINK['upload'] = "$script?plugin=attach&pcmd=upload&page=$r_page"; |
73 | - $_LINK['login'] = "$script?plugin=loginform&pcmd=login&page=$r_page"; | |
73 | + switch ($auth_type) { | |
74 | + case AUTH_TYPE_FORM: | |
75 | + $login_link = "$script?plugin=loginform&pcmd=login&page=$r_page"; | |
76 | + break; | |
77 | + case AUTH_TYPE_EXTERNAL: | |
78 | + $login_link = get_auth_external_login_url($_page, $_LINK['reload']); | |
79 | + break; | |
80 | + } | |
81 | + $_LINK['login'] = htmlsc($login_link); | |
74 | 82 | $_LINK['logout'] = "$script?plugin=loginform&pcmd=logout&page=$r_page"; |
75 | 83 | |
76 | 84 | // Compat: Skins for 1.4.4 and before |
@@ -237,7 +237,7 @@ $auth_groups = array( | ||
237 | 237 | // Authentication type |
238 | 238 | // AUTH_TYPE_FORM, AUTH_TYPE_BASIC or AUTH_TYPE_EXTERNAL |
239 | 239 | // $auth_type = AUTH_TYPE_FORM; |
240 | -// $auth_external_login_url = './exlogin.php'; | |
240 | +// $auth_external_login_url_base = './exlogin.php'; | |
241 | 241 | |
242 | 242 | ///////////////////////////////////////////////// |
243 | 243 | // Authentication method |