изменить детали, прежде чем компонент Cakephp Auth читает базу данных - PullRequest
0 голосов
/ 17 октября 2011

Кто-нибудь здесь знает, как изменить имя пользователя до того, как компонент Auth прочитает базу данных?

Проблема, с которой я сталкиваюсь, заключается в том, что я использую номера мобильных телефонов в качестве логина, но я хочу добавить код страны (если он отсутствует) при входе на мой сайт

У любого есть идеи на этот счет?

Был бы признателен

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

Если вы используете CakePHP 2.0, вы можете, как обычно, манипулировать данными формы входа и затем вызывать $this->Auth->login().Пример:

// in your controller
public function login() {
    if ($this->request->is('post')) {
        $this->data['User']['username'] = $this->addCountryCode($this->data['User']['username']);

        if ($this->Auth->login()) {
            // login successful
        } else {
            // login not successful
        }
    }
}
1 голос
/ 17 октября 2011

вы всегда можете расширить компонент Auth и делать все, что вы хотите, прежде чем запрашивать базу данных:)

Примерно так ...

function login($data = null,$public = false) {
    $this->__setDefaults();
    $this->_loggedIn = false;

    if (empty($data)) {
        $data = $this->data;
    }

    if (/** query the database to check/modify the data. You could use the identify() method of the AuthComponent **/) {
        $this->Session->write($this->sessionKey, $user);
        $this->_loggedIn = true;
    }
    return $this->_loggedIn;
}

Если вы расширяетекомпонент auth, не забывайте всегда использовать этот компонент вместо класса Auth по умолчанию.(Например, в AppController, build_acl, initdb, beforefilter на контроллерах и т. д.)

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...