MODX рдХреНрд░рд╛рдВрддрд┐ рдФрд░ phpBB рдордВрдЪ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛

6 рдирд╡рдВрдмрд░ 2012 рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдкрддреНрдерд░реЛрдВ рдХреЛ рдкрд╛рдиреА рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛ред
7 рдирд╡рдВрдмрд░ 2012 рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдорд╛рдореВрд▓реА рдмрдЧ рддрдп
13 рдирд╡рдВрдмрд░ 2012 рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ /forum/includes/auth/auth_modx.php рддрдп рд╣реИ:

PhpBB рд╕рдВрд╕реНрдХрд░рдг: 3.0.11
MODX рд╕рдВрд╕реНрдХрд░рдг: 2.2.5-pl

рд╕рд╛рдЗрдЯ рдлрд╝реЛрд▓реНрдбрд░: /
рдордВрдЪ рдлрд╝реЛрд▓реНрдбрд░: / рдордВрдЪ

рдореЗрд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд▓рдЧ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╕рдм рдХреБрдЫ рд╡реИрд╕реЗ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ MODX рдХреА рддрд░рдл рд╣реЛрддрд╛ рд╣реИред рдордВрдЪ MODX рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдбреЗрдЯрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ MODX рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


PhpBB рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд▓рдЧрдЗрди


рдордВрдЪ рдкрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП, "рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд▓рдЧ-рдЗрди" рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред

рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

1. рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖрдУ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: modx
2. рдлрд╝рд╛рдЗрд▓ /forum/includes/auth/auth_modx.php (рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреНрд░рддреНрдпрдп (modx) == рдкреНрд▓рдЧрдЗрди рдирд╛рдо) рдмрдирд╛рдПрдБ
3. рдлрд╝рд╛рдЗрд▓ /forum/includes/auth/auth_modx.php рдореЗрдВ, рдХрдо рд╕реЗ рдХрдо рдПрдХ login_modx рдлрд╝рдВрдХреНрд╢рди (рдкреНрд░рддреНрдпрдп == рдкреНрд▓рдЧрдЗрди рдирд╛рдо) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
4. рдордВрдЪ рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдЕрдХреНрд╖рдо рдХрд░реЗрдВ: рд╕рд╛рдорд╛рдиреНрдп -> тАЛтАЛрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдВрдЬреАрдХрд░рдг -> рдкрдВрдЬреАрдХрд░рдг рдЕрдХреНрд╖рдо рдХрд░реЗрдВ
5. рдордВрдЪ рдХреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ: рд╕рд╛рдорд╛рдиреНрдп -> тАЛтАЛрдкреНрд░рдорд╛рдгреАрдХрд░рдг -> рд╕реВрдЪреА рд╕реЗ рдореЛрдбреЗрдХреНрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

рдлрд╝рд╛рдЗрд▓ рдХреЛрдб /forum/includes/auth/auth_modx.php:
<?php # /forum/includes/auth/auth_modx.php if (!defined('IN_PHPBB')){ exit; } /** *      */ function get_user_data(){ //  define('MODX_API_MODE', true); require dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php'; //      /forum // MODX     ,     , //        : set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'); //   if($modx->user->get('id') != 0){ //   anonimous $result['username'] = $modx->user->get('username'); $profile = $modx->user->getOne('Profile'); $result['user_email'] = $profile->get('email'); $fields = $profile->get('extended'); $result['user_from'] = (string) $fields['region']; //   ,   NULL,        NULL //      , : // $result['_______users'] = ____modx; //     ,     MODX,    , // :     MODX extended  region,       user_from //     validate_session_modx () } return $result; } /** * ,   . */ function login_modx(){ $auth = get_user_data(); //    if (!is_array($auth) || empty($auth)) { return array( 'status' => LOGIN_ERROR_USERNAME, 'error_msg' => 'ACCESS_DIRECTLY_DENIDED', 'user_row' => array('user_id' => ANONYMOUS), ); } global $db; $sql = 'SELECT user_id, username, user_password, user_email, user_from, user_type FROM ' . USERS_TABLE . " WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($auth['username'])) . "'"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if ($row){ foreach($auth as $auK => $auV){ if($row[$auK] != $auV){ //         modx ( ) //  UPDATE unset($auth['username']); $sql = "UPDATE " . USERS_TABLE . " SET " . $db->sql_build_array('UPDATE', $auth) . " WHERE user_id = '" . $db->sql_escape($row['user_id']) . "'"; $db->sql_query($sql); break; } } $res = array( 'status' => LOGIN_SUCCESS, 'error_msg' => false, 'user_row' => array( 'user_id' => $row['user_id'], 'username' => $row['username'], //    'user_email' => $row['user_email'], // E-mail ,   'user_from' => $row['user_from'], 'user_type' => 0, 'group_id' => 2 ) ); return $res; } // ,    . $res = array( 'status' => LOGIN_SUCCESS_CREATE_PROFILE, 'error_msg' => false, 'user_row' => array( "username" => $auth['username'], //    "user_email" => $auth['user_email'], // E-mail ,   "user_from" => $auth['user_from'], "user_type" => 0, "group_id" => 2 ), ); return $res; } /** * ,         . */ function autologin_modx(){ $user_row = login_modx(); //      if ($user_row['status'] == LOGIN_SUCCESS_CREATE_PROFILE) { global $phpbb_root_path, $phpEx; if (!function_exists('user_add')) { include($phpbb_root_path . 'includes/functions_user.' . $phpEx); } $user_row['user_row']['user_id'] = user_add($user_row['user_row']); } //    global $db; $sql = 'SELECT * FROM ' . USERS_TABLE . " WHERE user_id = '" . $db->sql_escape($user_row['user_row']['user_id']) . "'"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); return $row; } function logout_modx(){ //  modx API define('MODX_API_MODE', true); require dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php'; $modx->getService('error','error.modError'); $modx->runProcessor('/security/logout'); //$modx->cacheManager->refresh(); } function validate_session_modx($locUser){ $auth = get_user_data(); if($locUser['username'] == 'Anonymous'){ if($auth){ return false; }else{ return true; } }else{ //   modx,    ,     if(!$auth){ //    global $user; $user->session_kill(); $user->session_begin(); }elseif(($auth['username'] != $locUser['username'])){ return false; } return true; } } ?> 


рдлреЛрд░рдо рдкреНрд░рд╢рд╛рд╕рди


рдЪреВрдВрдХрд┐ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ MODX рдХреА рддрд░рдл рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлреЛрд░рдо рдПрдбрдорд┐рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо) рдХреЛ MODX рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдм, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ MODX рдореЗрдВ рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ, рдФрд░ рдордВрдЪ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХрд╛ рдПрдХ рд╣реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдирд╛рдо рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдордВрдЪ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдЕрдкрдиреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ MODX рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рдФрд░ рдордВрдЪ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВред

рдЫрд╡рд┐

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдордВрдЪ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ:
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ: /forum/adm/index.php
 // Have they authenticated (again) as an admin for this session? if (!isset($user->data['session_admin']) || !$user->data['session_admin']) { login_box('', $user->lang['LOGIN_ADMIN_CONFIRM'], $user->lang['LOGIN_ADMIN_SUCCESS'], true, false); } 

рдЗрд╕рдореЗрдВ рдмрджрд▓реЗрдВ:
 // Have they authenticated (again) as an admin for this session? //if (!isset($user->data['session_admin']) || !$user->data['session_admin']) //{ // login_box('', $user->lang['LOGIN_ADMIN_CONFIRM'], $user->lang['LOGIN_ADMIN_SUCCESS'], true, false); //} 

рдХреЗ рдмрд╛рдж:
 if (!$auth->acl_get('a_')) { trigger_error('NO_ADMIN'); } 

рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:
 $user->data['session_admin'] = 1; 

рд▓реЙрдЧрд┐рди, рдкрд╛рд╕рд╡рд░реНрдб рд░рд┐рдХрд╡рд░реА


рдлрд╝рд╛рдЗрд▓ /forum/ucp.php рдореЗрдВ, рд╕рд╛рдЗрдЯ рдФрд░ рдлрд╝реЛрд░рдо рдкрд░ рдПрдХ рд╕рд╛рде рд▓реЙрдЧ рдСрди рдХрд░реЗрдВ, рдлрд╝реЛрд░рдо рдкрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдлрд╝реЙрд░реНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:
рдорд╛рдорд▓реЗ рдХреЗ рдмреАрдЪ 'рд▓реЙрдЧрд┐рди': рдФрд░ рдмреНрд░реЗрдХ; (рд╕рд╣рд┐рдд):
  case 'login': define('MODX_API_MODE', true); require dirname(dirname(__FILE__)) . '/index.php'; $modx->getService('error','error.modError'); set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'); if($_REQUEST["username"] and $_REQUEST["password"]){ $data = array( 'username' => $_REQUEST["username"], 'password' => $_REQUEST["password"], 'rememberme' => 1, 'login_context' => 'web', ); $response = $modx->runProcessor('/security/login', $data); if ($response->isError()) { trigger_error($response->getMessage()); } } if ($user->data['is_registered']) { redirect(append_sid("{$phpbb_root_path}index.$phpEx")); } login_box(request_var('redirect', "index.$phpEx")); break; 

рднрд▓реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реЛрд░рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рдерд╛, рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдЕрдкрдирд╛ рдкрд╛рд╕рд╡рд░реНрдб рднреВрд▓ рдЧрдП?" рдлреЛрд░рдо рдкрд░, MODX рдкрд╛рд╕рд╡рд░реНрдб рд░рд┐рдХрд╡рд░реА рдкреЗрдЬ (/forum/ucp.pp) рдкрд░ рдЬрд╛рдПрдВ:

  case 'sendpassword': define('MODX_API_MODE', true); require dirname(dirname(__FILE__)) . '/index.php'; $modx->getService('error','error.modError'); set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'); $modx->sendRedirect($modx->makeUrl(865,'','','full')); //  865 -  ID  MODX     break; 

рд▓реЗрдЦ, рдЬреЛ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
Phpbb 3 рдкрд░ рд╕рд╛рдЗрдЯ рдФрд░ рдлрд╝реЛрд░рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдПрдХреАрдХрд░рдг

Source: https://habr.com/ru/post/In157055/


All Articles