Комментарии

Что делает подключаемый модуль аутентификации
( 0 Голосов )

Исходный код метода onUserAuthenticate () приведен в листинге ниже.

Листинг: Метод onUserAuthenticate () для аутентификации средствами Joomla

function onUserAuthenticate($credentials, $options, &$response)
{
$response->type = 'Joomla';
// В Joomla! пустые пароли не допускаются
if (empty($credentials['password'])) {
$response->status = JAUTHENTICATE_STATUS_FAILURE;
$response->error_message =
Text:('JGLOBAL_AUTH_EMPTY_PASS_NOT_ALLOWED'); return false;
}
// инициализировать переменные $conditions = '';
// получить объект базы данных $db = JFactory:igetDbo();
$query = $db->getQuery(true);
$query->select('id, password');
$query->from('# users');
$query->where('username=' . $db->Quote($credentials['username']));
$db->setQuery($query);
$result = $db->loadObject();
if ($result) {
$parts = explode(':', $result->password);
$crypt = $parts[0];
$salt = 0$parts[l];
$testcrypt = JUserHelper::getCryptedPassword(
$credentials['password'], $salt);
if ($crypt == $testcrypt) {
// привести в соответствие с остальной системой $user = JUser::getlnstance($result- >id);
$response->email = $user->email;
$response->fullname = $user->name; if (JFactory::getApplication()->isAdmin()) {
$response->language = $user->getParam('admin_language1);
}
else {
$response->language = $user->getParam('language 1);
}
$response->status = JAUTHENTICATE_STATUS_SUCCESS; $response->error_message = 11;
} else {
$response->status = JAUTHENTICATE_STATUS_FAILURE; $response->error_message = bJText:(1JGLOBAL_AUTH_INVALID_PAS S');
}
} else {
$response->status = JAUTHENTICATE_STATUS_FAILURE;
$response->error_message = JText1JGLOBAL_AUTH_NO_USER');
}
}

Проанализируем исходный код данного метода, начав с двух ниже приведенных первых строк.

function onUserAuthenticate($credentials, $options, &$response)
{

Метод onUserAuthenticate () принимает три аргумента. Первый аргумент $credentials представляет собой ассоциативный массив с двумя элементами: "password" и "username", обозначающими соответственно пароль и имя пользователя, введенные в форме регистрации. Второй аргумент $ opt ions в данном методе не используется.

А третий аргумент $ response имеет особое значение. Обратите внимание на предшествующий ему знак амперсанда (&), указывающий на то, что этот аргумент передается по ссылке. Это означает, что при внесении изменений в объект во время выполнения вызываемого метода они будут доступны и в вызывающем методе.

Подробнее об этом — в приведенной далее статье "Присваивание и передача объектов по ссылке".

Этот метод возвращает логическое значение false, если регистрация не прошла успешно, а иначе он завершается, не возвращая никакого значения. Но данные вызывающему методу все же передаются, поскольку в объект $ response внесены изменения, которые становятся доступными вызывающему методу по завершении данного метода.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости