Я не могу войти в модуль аутентификации Kohana 3.2 ORM?

Ну вот беда. Код прост:

public function action_index()
{

    $post = $this->request->post();

    if ($post) {    
        // if I type it like this, manually - it will work
        $success = Auth::instance()->login('admin','password');

    }

    if (isset($success) and $success) { echo "Пользователь залогинен"; }

}

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

$auth = Auth::instance();
        $user = new Model_User();
        $user->username = "Victor";
        $user->$auth->hash_password('psw123');
        $user->email = "[email protected]";
        $user->save();

И чем использовать его, как я сказал, только с реальными данными, как

$post["email"] or $post["username"] with $post["password"]

код:

if ($post) {    
    // the values from posts: 'Victor' or '[email protected]` & 'psw123'
    $success = Auth::instance()->login('[email protected]','psw123');

}

он не войдет в меня.

upd Я не могу войти в систему как администратор, но все работает отлично, если я изменю роль на login (это 1 в базе данных). Но если роль будет установлена ​​2 (это роль admin) она меня не примет, даже экземпляр Auth не делать.

        $post = $this->request->post();

        $success = Auth::instance()->login($post['email'], $post['pass']);


        if ($success)
        {
            echo "SUCCESS!";
        }

Еще раз повторюсь, если роль будет 2 (имеется в виду admin) это не будет Success me вместо login роли.

Что может быть причиной этой беды?


person Victor Czechov    schedule 12.09.2012    source источник


Ответы (1)


Я предполагаю, что вы используете драйвер аутентификации ORM по умолчанию. Вам не нужно хешировать пароль при сохранении нового пользователя — это делается автоматически фильтром в модели. Итак, сохранение нового пользователя должно выглядеть примерно так:

$user = ORM::factory("user");
$user->username = "Victor";
$user->password = "psw123";
$user->email = "[email protected]";
$user->save();
person jkondratowicz    schedule 12.09.2012
comment
Да, хотя я забыл и о ролях. Так нет все нормально! Все равно спасибо! - person Victor Czechov; 12.09.2012
comment
Привет снова, и мне снова нужна помощь. Смотрите upd. - person Victor Czechov; 17.09.2012
comment
Насколько я понимаю, вы используете исключительно роли login и admin. Всем пользователям с правами входа в систему нужна роль login. Таким образом, ваш администратор должен иметь обе роли: login и admin. - person jkondratowicz; 20.09.2012