0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 27054 Просмотров
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
По умолчанию Joomla позволяет два способа активации учетной записи: автоматически и посредством перехода по ссылке в письме, отправляемом на e-mail зарегистрированного пользователя.

Однако, иногда требуется, с одной стороны не запрещать регистрацию пользователей на сайте, а с другой стороны нужно утверждение учетных записей администратором. При этом, чтобы зарегистрированный пользователь мог зайти на сайт только после активации учетной записи администратором, а не сразу после регистрации.

Для этого немного модифицируем компонент регистрации пользователей.  Открываем файл /components/com_registration/registration.php, находим в нем следующую строку:

	
$row->gid 
	
	
$acl->get_group_id'Registered''ARO' );


и добавляем сразу же после нее:

	
$row->block '1';


Эта строчка сделает всех зарегистрированных пользователей заблокированными. Т.е. они не смогут авторизоваться на сайте до тех пор, пока администратор в административной панели не снимет флаг блокировки с пользователя.

Однако, если на сайте будет включена функция активации по e-mail, блокировка будет сниматься автоматически. Нам же это не нужно, поэтому, мы находим в этом же файле строку:

	
"\n SET block = 0, activation = ''"


и заменяем ее на:

	
"\n SET activation = ''"


Т.е. ключ активации будет сбрасываться, а блокировка - нет. Таким образом с одной строны пользователю при регистрации все-таки нужен будет рабочий e-mail адрес, а с другой стороны автоматчиески он не разблокируется. Единственное что требуется, это в тексте письма об активации (константа _USEND_MSG_ACTIVATE в языковом файле, расположенном в папке /languages) надо добавить пару строк о том, что после активации необходимо дождаться утверждения учетной записи администратором.

В принципе, можно еще добавить отправку пользователю письма об утверждении учетной записи. Для этого необходимо открыть файл /administrator/components/com_user/admin.users.php, найти в нем строчки:

	
// if action is to block a user
	
if ( 
$block == ) {
	
	
foreach( 
$cid as $id ) {
	
	
// delete user acounts active sessions
	
	
	
logoutUser$id'com_users''block' );
	
	
}
	
}


и заменить на следующие:

	
// if action is to block a user
	
if ( 
$block == ) {
	
	
foreach( 
$cid as $id ) {
	
	
// delete user acounts active sessions
	
	
	
logoutUser$id'com_users''block' );
	
	
}
	
} else {
	
	
global 
$mosConfig_mailfrom$mosConfig_fromname;
	
	

	
	
$database->setQuery"SELECT email FROM #__users WHERE ( $cids )" );
	
	
$users $database->loadObjectList();

	
	
$subj 'Account is approved';
	
	
$msg 'Congratulations, your account is approved!';

	
	
foreach( 
$users as $u ) {
	
	
	
mosMail($mosConfig_mailfrom$mosConfig_fromname$u->email$subj$msg);
	
	
}
	
}


Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как разрешить использование дефиса в логинах пользователей?

Автор smart

Ответов: 0
Просмотров: 16211
Последний ответ 28.12.2006, 11:17:06
от smart
После импорта таблицы не видно пользователей

Автор vovs

Ответов: 1
Просмотров: 16451
Последний ответ 02.05.2006, 22:56:41
от smart