Регистрация по логину (+ убрать Email из регистрации)
Сам категорически не сторонник этих изменений (множество причин) но попросили, написал, как сделать:
- Убираем поле mail из шаблона для регистрации
В файле:
/_block/form/registration.php
Комментируем так:
<!--fieldset>
<label for="email"><?= __('app.email'); ?></label>
<input name="email" id="email" type="email" required>
<div class="help"><?= __('app.work_email'); ?>...</div>
<small class="red"></small>
</fieldset-->
Смотрим страницу регистрации и видим, что поля Email нет.
- Убираем проверку Email из php файлов…
В файле: app/Validate/RulesRegistration.php
Комментируем (строка 39):
self::checkEmail($data['email'], $redirect);
Должно получиться:
// self::checkEmail($data['email'], $redirect);
В файле: app/Controllers/Auth/RegisterController.php
Перед (60 строка):
$active_uid = UserModel::create(
[
'login' => $data['login'],
'email' => $data['email']...
Добавим:
$data['email'] = '';
Должно получиться:
$data['email'] = '';
$active_uid = UserModel::create(
[
'login' => $data['login'],
'email' => $data['email']...
- В файле конфига, убираем отправку почты на Email
В файле: config/general.php
Ставим mail_check
на false
, должно получиться
'mail_check' => false,
Готово! Регистрация работает.
Не забываем убрать Email от туда, где он есть. Например: /setting
Теперь делаем авторизацию
В файле: resources/views/default/_block/form/login.php
Вторую строку:
<input name="email" type="email" placeholder="<?= __('app.email'); ?>" required="">
Заменяем на:
<input name="login" placeholder="<?= __('app.nickname'); ?>" required="">
В файле: app/Validate/RulesLogin.php
комментируем 16 и 18 строку:
// self::email($data['email'], $redirect);
// $user = AuthModel::getUser($data['email'], 'email');
А далее добавляем (в 19 строку):
$user = AuthModel::getUser($data['login'], 'login');
Всё! Авторизация работает по логину.\
Актуально на 06.06.2024