Joomla JUser Getinstance Вопросы - PullRequest
0 голосов
/ 24 мая 2010

Я пытаюсь создать плагин аутентификации. JUser::getInstance() принимает один вход, и это должен быть идентификатор. Есть ли способ получить экземпляр пользователя с помощью другого идентификатора? такие как имя пользователя, адрес электронной почты и т. д.

Ответы [ 2 ]

1 голос
/ 24 мая 2010

Вероятно, нет такого метода.Но да, если вы уверены, что имя пользователя или адрес электронной почты уникальны, вы можете изменить файл user.php в библиотеки / joomla / user / и добавить туда метод.

getInstanceByEmail($email)
{
     $query = "select id from jos_users where email=".email;
     // use the code to get the id;
    return getInstance($id);
} // this is just a sample code of how it can be achieved
0 голосов
/ 10 мая 2013

Поскольку собственная аутентификация Joomla выполняется путем проверки имени пользователя (и, конечно, пароля), она должна быть уникальной. И да, вы можете сделать что-то вроде того, что предложил @Rixius.

Вот моя версия:

    // Get a database object
    $db     = JFactory::getDbo();
    $query  = $db->getQuery(true);

    $query->select('id, password');
    $query->from('#__users');
    $query->where('username=' . $db->Quote($credentials['username']));

    $db->setQuery($query);
    $result = $db->loadObject();
    $user = JFactory::getUser();

    if ($result)
    {
        $user = JUser::getInstance($result->id);
    }
...