Доступ к сайту только для администрации

По нужде сделал что-то вроде «Ведутся технические работы». Доступ к сайту будет закрыт всем кроме администрации.

1. открываем /plugins/aceadminpanel/classes/actions/ActionAdminSiteSettings.class.php
находим
'adm_set_general_close' => array(
                        'type' => 'checkbox',
                        'config' => 'general.close',
                    ),

после, добавляем:
'adm_set_general_reconstruction' => array(
                        'type' => 'checkbox',
                        'config' => 'general.reconstruction',
                    ),


2. открываем /config/config.php
находим
$config['router']['config']['action_not_found'] = 'error';

после, добавляем:
$config['router']['page']['reconstruction'] = 'ActionReconstruction';


далее, находим
$config['general']['reg']['activation'] = false;

после, добавляем:
$config['general']['reconstruction'] = false; // использовать закрытый режим работы сайта, сайт будет доступен только администрации


3. заходим в /classes/actions/ и создаем ActionReconstruction.class.php
добавляем:

class ActionReconstruction extends Action {

	public function Init() {		
		$this->SetDefaultEvent('index');
	}

	protected function RegisterEvent() {		
		$this->AddEvent('index','EventRec');	
	}

	protected function EventRec() {	
		$this->Viewer_AddHtmlTitle($this->Lang_Get('reconstruction'));
	}
}


4. заходим в /classes/actions/ и открываем Init.class.php
находим
if (!$this->oUserCurrent and Config::Get('general.close') and Router::GetAction()!='registration' and Router::GetAction()!='login') {			
	Router::Action('login');
}

после, добавляем
if ( Config::Get('general.reconstruction') and (!$this->oUserCurrent or ($this->oUserCurrent and !$this->oUserCurrent->isAdministrator()))){
	if (Router::GetAction()=='login')
		Router::Action('login');
	else
		Router::Action('reconstruction');
}


5. /templates/skin/ваш-шаблон/actions/ и создаем папку ActionReconstruction
создаем файл index.tpl, в нем добавляем
{include file='header.light.tpl'}
<div style="text-align: center;">{$aLang.in_reconstruction}</div>


6. /templates/language/russian.php
до
);

добавляем
'in_reconstruction' => 'Ведутся технические работы по улучшению работоспособности сайта.',
'reconstruction' => 'Ведутся технические работы.',


7. /plugins/aceadminpanel/templates/language/russian.site_settings.php
до
);

добавляем
'adm_set_general_reconstruction' => 'Закрыть сайт для пользователей.',


Это все.
Для авторизации переходим site.ру/login/
В админпанель->сайт->Настройки под галочкой «Использовать закрытый режим работы сайта», появится наша галочка с возможностью отключения сайта.

п.с. если есть способ эффективнее сделать это, поделитесь.

1 комментарий

avatar
На основе данного топика делал для себя плагин закрытия сайта. В комментариях есть хук решающий задачу.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.