Пример #1
0
     }
 }
 $sess_data = array('auth' => fn_fill_auth($user_data, array(), true, $area), 'last_status' => empty($_SESSION['last_status']) ? '' : $_SESSION['last_status']);
 if (Registry::get('settings.General.store_mode') == 'Y') {
     $sess_data['store_access_key'] = Registry::get('settings.General.store_access_key');
 }
 $areas = array('A' => 'admin', 'V' => 'vendor', 'C' => 'customer');
 fn_init_user_session_data($sess_data, $_REQUEST['user_id'], true);
 $old_sess_id = Session::getId();
 $redirect_url = !empty($_REQUEST['redirect_url']) ? $_REQUEST['redirect_url'] : '';
 if ($area != 'C') {
     Session::setName($areas[$area]);
     $sess_id = Session::regenerateId();
     Session::save($sess_id, $sess_data, $area);
     Session::setName(ACCOUNT_TYPE);
     Session::setId($old_sess_id, false);
 } else {
     // Save unique key for session
     $key = fn_crc32(microtime()) . fn_crc32(microtime() + 1);
     fn_set_storage_data('session_' . $key . '_data', serialize($sess_data));
     if (fn_allowed_for('ULTIMATE')) {
         $company_id_in_url = fn_get_company_id_from_uri($redirect_url);
         if (Registry::get('runtime.company_id') || !empty($user_data['company_id']) || Registry::get('runtime.simple_ultimate') || !empty($company_id_in_url)) {
             // Redirect to the personal frontend
             $company_id = !empty($user_data['company_id']) ? $user_data['company_id'] : Registry::get('runtime.company_id');
             if (!$company_id && Registry::get('runtime.simple_ultimate')) {
                 $company_id = fn_get_default_company_id();
             } elseif (!$company_id) {
                 $company_id = $company_id_in_url;
             }
             $url = $area == 'C' ? fn_link_attach($redirect_url, 'skey=' . $key . '&company_id=' . $company_id) : $redirect_url;