Changeset 776


Ignore:
Timestamp:
04/15/11 11:37:06 (13 months ago)
Author:
r2
Message:

правильные редиректы после авторизаций

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/registration/frontend.php

    r706 r776  
    223223                    $group_id = $cfg['default_gid'] ? $cfg['default_gid'] : 1; 
    224224 
    225                     $sql = "INSERT INTO cms_users (group_id, login, nickname, password, email, icq, regdate, logdate, birthdate, is_locked, invited_by) 
    226                             VALUES ('$group_id', '$login', '$nickname', '$pass', '$email', '$icq', NOW(), NOW(), '$birthdate', '$is_locked', '{$invited_by}')"; 
     225                    $sql = "INSERT INTO cms_users (group_id, login, nickname, password, email, icq, regdate, logdate, birthdate, is_locked, is_logged_once, invited_by) 
     226                            VALUES ('$group_id', '$login', '$nickname', '$pass', '$email', '$icq', NOW(), NOW(), '$birthdate', '$is_locked', 0, '{$invited_by}')"; 
    227227                    $inDB->query($sql) ; 
    228228 
     
    326326            $back = '/admin/'; 
    327327        } else { 
    328             $back = ($_SERVER['HTTP_REFERER'] == 'http://'.$_SERVER['HTTP_HOST'].'/login') ? '/' : $inCore->getBackURL(); 
     328            $back = $inCore->getBackURL(); 
    329329        } 
    330330 
     
    353353        if( !$inCore->inRequest('logout') ) { 
    354354 
    355                 if (isset($_SESSION['auth_back_url'])){ 
    356                     $back = $_SESSION['auth_back_url']; 
    357                     $is_sess_back = true; 
    358                     unset($_SESSION['auth_back_url']); 
    359                 } else { 
    360                     $is_sess_back = false; 
    361                 } 
    362  
    363355                if ($inCore->inRequest('login')) { $login = $inCore->request('login', 'str'); } 
    364356                if ($inCore->inRequest('pass')) { $passw = $inCore->request('pass', 'str'); } 
    365357 
    366358                if (!$login && !$passw){ 
    367                                         if ($is_sess_back) { 
    368                     $_SESSION['auth_back_url'] = $back; 
    369                                         } 
     359 
     360                    $_SESSION['back_url'] = $inCore->getBackURL(); 
    370361 
    371362                    $inPage->setTitle($_LANG['SITE_LOGIN']); 
     
    374365                    $smarty = $inCore->initSmarty('components', 'com_registration_login.tpl'); 
    375366                    $smarty->assign('cfg', $cfg); 
    376                     $smarty->assign('is_sess_back', $is_sess_back); 
     367                    $smarty->assign('is_sess_back', isset($_SESSION['auth_back_url'])); 
    377368                    $smarty->display('com_registration_login.tpl'); 
    378369                    return; 
     370 
    379371                } 
    380372 
     
    413405                    $inUser->dropStatTimer(); 
    414406 
    415                     //cmsUser::updateStats($user['id']); 
    416  
    417                     $first_time_auth = ($user['logdate']=='0000-00-00 00:00:00' || intval($user['logdate']==0)); 
    418  
    419                     $inDB->query("UPDATE cms_users SET logdate = NOW(), last_ip = '$current_ip' WHERE id = ".$user['id']) ; 
     407                    $first_time_auth = !$user['is_logged_once']; 
     408 
     409                    $inDB->query("UPDATE cms_users SET logdate = NOW(), last_ip = '$current_ip', is_logged_once = 1 WHERE id = ".$user['id']) ; 
    420410 
    421411                    $cfg = $inCore->loadComponentConfig('registration'); 
     
    423413                    if (!isset($cfg['first_auth_redirect']))    {  $cfg['first_auth_redirect'] = 'profile';    } 
    424414 
    425                     if (!$inCore->userIsAdmin($user['id']) && !$is_sess_back){ 
    426                         if ($first_time_auth) { $cfg['auth_redirect'] = $cfg['first_auth_redirect']; } 
    427                         switch($cfg['auth_redirect']){ 
    428                             case 'none': $url = $back; break; 
    429                             case 'index': $url = '/'; break; 
    430                             case 'profile': $url = cmsUser::getProfileURL($user['login']); break; 
    431                             case 'editprofile': $url = '/users/'.$user['id'].'/editprofile.html'; break; 
     415                    if ($_SESSION['auth_back_url']){ 
     416                        $back = $_SESSION['auth_back_url']; 
     417                        $is_sess_back = true; 
     418                        unset($_SESSION['auth_back_url']); 
     419                    } else { 
     420                        $is_sess_back = false; 
     421                        $back = $inCore->getBackURL(); 
     422                    } 
     423 
     424                    if (!$inCore->userIsAdmin($user['id'])){ 
     425                        if (!$is_sess_back){ 
     426                            if ($first_time_auth) { $cfg['auth_redirect'] = $cfg['first_auth_redirect']; } 
     427                            switch($cfg['auth_redirect']){ 
     428                                case 'none': $url = $back; break; 
     429                                case 'index': $url = '/'; break; 
     430                                case 'profile': $url = cmsUser::getProfileURL($user['login']); break; 
     431                                case 'editprofile': $url = '/users/'.$user['id'].'/editprofile.html'; break; 
     432                            } 
     433                        } else { 
     434                            $url = $back; 
    432435                        } 
    433                     } else { $url = $back; } 
     436                    } else {  
     437                        $url = isset($_SESSION['back_url']) ? $_SESSION['back_url'] : '/'; 
     438                        if (isset($_SESSION['back_url'])) unset($_SESSION['back_url']); 
     439                    } 
    434440 
    435441                    //Ðåäèðåêòèì íàçàä 
  • trunk/install/sqldumpdemo.sql

    r752 r776  
    14371437  `is_locked` int(11) NOT NULL, 
    14381438  `is_deleted` int(11) NOT NULL, 
     1439  `is_logged_once` tinyint(4) NOT NULL DEFAULT '0', 
    14391440  `rating` int(11) NOT NULL, 
    14401441  `points` int(11) NOT NULL, 
     
    14481449) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 ROW_FORMAT=DYNAMIC; 
    14491450 
    1450 INSERT INTO `#__users` (`id`, `group_id`, `login`, `nickname`, `password`, `email`, `icq`, `regdate`, `logdate`, `birthdate`, `is_locked`, `is_deleted`, `rating`, `points`, `last_ip`, `status`, `status_date`, `invited_by`, `invdate`) VALUES 
    1451 (1, 2, 'admin', 'Àäìèíèñòðàòîð', '2ca41752ccf4dbdb76d8fe88c488fd44', 'admin@cms.ru', '100200300', '2007-11-23 12:41:57', '2010-11-14 15:24:30', '1980-10-23', 0, 0, 32, 0, '127.0.0.1', 'Ñàìûé äëèííûé ñòàòóñ èç âñåõ ÷òî ñóùåñòâóþò â ýòîì ïðåêðàñíîì ìèðå', '2010-10-21 02:06:53', 0, '2010-11-09 23:25:59'), 
    1452 (2, 1, 'vasya', 'Âàñèëèé', '2ca41752ccf4dbdb76d8fe88c488fd44', 'vasya@cms.ru', '100200300', '2008-07-16 16:31:48', '2010-11-14 14:32:47', '1980-01-01', 0, 0, 5, 0, '127.0.0.1', 'I love InstantCMS', '2010-11-13 23:09:34', 0, '2010-11-02 13:50:04'), 
    1453 (3, 1, 'fedor', 'Ôåäîð', '2ca41752ccf4dbdb76d8fe88c488fd44', 'fedor@cms.com', '100334564', '2010-10-20 17:33:42', '2010-11-13 23:22:26', '1979-10-20', 0, 0, 0, 0, '127.0.0.1', 'We are all made of stars (c) Moby', '2010-10-28 15:44:45', NULL, NULL); 
     1451INSERT INTO `#__users` (`id`, `group_id`, `login`, `nickname`, `password`, `email`, `icq`, `regdate`, `logdate`, `birthdate`, `is_locked`, `is_deleted`, `is_logged_once`, `rating`, `points`, `last_ip`, `status`, `status_date`, `invited_by`, `invdate`) VALUES 
     1452(1, 2, 'admin', 'Àäìèíèñòðàòîð', '2ca41752ccf4dbdb76d8fe88c488fd44', 'admin@cms.ru', '100200300', '2007-11-23 12:41:57', '2011-04-15 13:20:33', '1980-10-23', 0, 0, 0, 32, 0, '127.0.0.1', 'Ñàìûé äëèííûé ñòàòóñ èç âñåõ ÷òî ñóùåñòâóþò â ýòîì ïðåêðàñíîì ìèðå', '2010-10-21 02:06:53', 0, '2010-11-09 23:25:59'), 
     1453(2, 1, 'vasya', 'Âàñèëèé', '2ca41752ccf4dbdb76d8fe88c488fd44', 'vasya@cms.ru', '100200300', '2008-07-16 16:31:48', '2011-04-15 12:36:58', '1980-01-01', 0, 0, 0, 5, 0, '127.0.0.1', 'I love InstantCMS', '2010-11-13 23:09:34', 0, '2010-11-02 13:50:04'), 
     1454(3, 1, 'fedor', 'Ôåäîð', '2ca41752ccf4dbdb76d8fe88c488fd44', 'fedor@cms.com', '100334564', '2010-10-20 17:33:42', '2010-11-13 23:22:26', '1979-10-20', 0, 0, 0, 0, 0, '127.0.0.1', 'We are all made of stars (c) Moby', '2010-10-28 15:44:45', NULL, NULL); 
    14541455 
    14551456DROP TABLE IF EXISTS `#__users_activate`; 
  • trunk/migrate/index.php

    r771 r776  
    209209    } 
    210210 
     211    if (!$inDB->isFieldExists('cms_users', 'is_logged_once')){ 
     212        $inDB->query("ALTER TABLE `cms_users` ADD `is_logged_once` TINYINT NOT NULL DEFAULT '1' AFTER `is_deleted`"); 
     213        $is_was_migrate = true; 
     214    } 
     215 
    211216// ========================================================================== // 
    212217// ========================================================================== // 
Note: See TracChangeset for help on using the changeset viewer.