Допустимые символы для Логинов

Любая помощь по установке/настройке/модификации concrete5

Допустимые символы для Логинов

Сообщение guyasyou » 23 янв 2012, 19:35 ,  »  Сообщение:#1

Стандартно, concrete5 не допускает в логинах символ "_", как исправить это? Дело в том что мой сайт связан с игровым сервером, где у некоторых ники содержат "_".
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Допустимые символы для Логинов

Сообщение Count_Raven » 24 янв 2012, 13:43 ,  »  Сообщение:#2

Скопируйте файл /concrete/controllers/register.php в /controllers/register.php

Измените этот файл.
В функции do_register() есть место вот с таким кодом:
Код: Выделить всё
                        if (strlen($username) >= USER_USERNAME_MINIMUM && !$valc->username($username)) {
            if(USER_USERNAME_ALLOW_SPACES) {
               $e->add(t('A username may only contain letters, numbers and spaces.'));
            } else {
               $e->add(t('A username may only contain letters or numbers.'));
            }
            
         }


Это и отвечает за проверку имени пользователя.
Заметьте, есть USER_USERNAME_ALLOW_SPACES. Это константа, которую можно объявить в /config/site.php и если она включена, то имя пользователя сможет содержать пробелы.

Однако, валидатор $valc->username($username) все равно не дает имени пользователя содержать символы типа "_".
Можно заменить его своим. Это не единственное место, где идет подобная проверка, при редактировании пользователя в панели управления, при добавлении пользователя в панели управления тоже такие проверки имеются. Чтобы не лазить везде подряд можно изменить сам хелпер валидации $valc = Loader::helper('concrete/validation');

Он находится тут /concrete/helpers/concrete/validation.php
Скопируйте этот файл в /helpers/concrete/validation.php

И тут один момент, хелперы перегружаются не так как все остальные классы ядра Concrete5.
Чтобы это работало нужно изменить наш новый файл и вместо
Код: Выделить всё
class ConcreteValidationHelper {

нужно написать
Код: Выделить всё
class SiteConcreteValidationHelper {


Ну а проверка имени пользователя находится в функции:
Код: Выделить всё
                public function username($username) {
         $username = trim($username);
         if (strlen($username) < USER_USERNAME_MINIMUM) {
            return false;
         }
         if (strlen($username) > USER_USERNAME_MAXIMUM) {
            return false;
         }
         if(USER_USERNAME_ALLOW_SPACES) {
            $resp = preg_match("/[^A-Za-z0-9 ]/", $username);
         } else {
            $resp = preg_match("/[^A-Za-z0-9]/", $username);
         }

         if ($resp > 0) {
            return false;
         }
         
         return true;
      }


Собственно, поправьте эту функцию и сделайте так как вам надо.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Допустимые символы для Логинов

Сообщение guyasyou » 24 янв 2012, 14:02 ,  »  Сообщение:#3

Вроде сделал, при переименовании норм переименовал. Спасибо большое!!!
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск


Вернуться в Помощь по concrete5

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5