@betmenik

Авторизация по username и паролю kohana 3.3, как не соблюдать email?

Здравствуйте!
Помогите пожалуйста разобраться с проблемой.
В общем, сделал регистрацию где основные и уникальные данные находятся в ячейке username, то есть, логин. Почта email не играет никакой роли кроме как просто информации.
То есть, могут регистрироваться пользователи с разными username но с одинаковыми email.
Проблема возникла при авторизации, без ошибок и проблем авторизируется пользователь который первый зарегистрировался под повторяющимся email адресом. Последующие пользователи с таким же email адресом уже не могут нормально залогиниться, в таблице "user_tokens" записи появляются но в самом браузере появляется ошибка фреймворка связанная с "ORM_Validation_Exception". Конкретнее, ссылается вот на такую строку:
$exception = new ORM_Validation_Exception($this->errors_filename(), $array);

Что делать дальше не пойму... Пусть будет хоть 100 пользователей с одним и тем же email адресом, но входить на сайт должны под username и password.
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 2
DarkRaven
@DarkRaven
разработка программного обеспечения
Обратите внимание на класс Model_Auth_User (modules\orm\classes\Model\Auth\User.php).
5a5daf57c5954490940086.png
Это правила валидации модели пользователя. Меняйте их, и все должно получиться.

P.S. Я не увидел ваш комментарий.
К слову, эти правила можно переопределить через вашу модель - не потребуется вносить изменения в системный модуль.

В папке application\classes\Model создаете файл User.php.
Там пишите подобное:

<?php defined('SYSPATH') or die('No direct script access.');

class Model_User extends Model_Auth_User
{
    public function rules()
    {
        return array(
            'username' => array(
				array('not_empty'),
				array('max_length', array(':value', 32)),
				array(array($this, 'unique'), array('username', ':value')),
			),
			'password' => array(
				array('not_empty'),
			),
			'email' => array(
				array('not_empty'),
				array('email'),
			),
        );
    }
    
}
Ответ написан
Комментировать
@BorisKorobkov
Web developer
Вариант 1. Сделать email уникальным, запретить повторную регистрацию с тем же email (вместо этого - восстанавливать первую регистрацию). Если уже есть дубли - надо их слить в один.

Вариант 2. Переделать user_tokens, чтобы не не учитывал email.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы