DokuWiki

It's better when it's simple

Инструменты пользователя

Инструменты сайта


ru:devel:authentication_backends

Как написать свой модуль аутентификации?

DokuWiki обладает модульной системой аутентификации, и может использовать для аутентификации все, что доступно в PHP.

Если ни один из предложенных модулей аутентификации не подходит вам, вы можете легко создать свой собственный. Модули хранятся в каталоге inc/auth/ и должны называться <backend>.class.php, где <backend> - имя вашего модуля авторизации. В этом файлы вы должны описать класс под именем auth_<backend>. Ваш класс должен наследовать или один из уже существующих классов в модулях, или класс auth_basic, описанный в inc/auth/basic.class.php.

В вашем классе должны быть перегружены несколько методов и определены некоторые публичные поля из базового класса. Реализуя ваш класс, вы должны обращать внимание на комментарии в базовом классе!

Если вы написали новый модуль, поделитесь им с другими!

Установка членов класса

$success

Эта переменная типа bool должна быть установлена в true в вашем конструкторе, если модуль авторизации был корректно инициализирован. Используйте эту переменную для уведомления системы об ошибке в модуле авторизации путем установления ее значения в false.

$cando

$cando представляет собой ассоциативный массив значений типа bool. Вы должны установить значения массива в true для всех функций, которые реализует ваш модуль. Список ключей массива и их смысл:

addUser можно создавать пользователей
delUser можно удалять пользователей
modLogin можно менять имена пользователей
modPass можно менять пароли
modName можно менять имена
modMail можно менять e-mail
modGroups можно менять группу
getUsers можно получить (отфильтрованный)список пользователей
getUserCount можно узнать количество пользователей
getGroups можно получить список доступных групп
external модуль сам осуществляет проверку аутентификации через внешнюю функцию
logoff модуль имеет свою реализацию логаута

Требуемые методы

Для работы требуется реализовать всего 2 функции. Причем реализовав другие функции, можно расширить возможности модуля.

Конструктор

В вашем классе непременно должен быть конструктор, в котором устанавливаются нужные значения пременных.

checkPass()

Эта функция должна проверять, являются ли правильными данные имя пользователя и plaintext пароль.

getUserData()

Возвращает пользовательскую информацию, такую как email или имя.

Optional Methods

Перечисленные ниже методы являются опциональными и вызываются только если установлены соответствующие поля массива cando.

trustExternal()

Если значение $cando['external'] равно true, то эта функция используется для аутентификации пользователя – все остальные внутренние функции DokuWiki не будут использоваться для аутентификации.

Эта функция может использоваться для аутентификации с помощью сторонних cookies или механизмов Apache. Она заменяет функцию auth_login() из файла inc/auth.php.

Для примера использования этой функции смотрите механизм аутентификации punbb.

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

В соответствии с примером punbb функция trustExternal() устанавливает следующие глобальные переменные:
$USERINFO['name']
$USERINFO['mail']
$USERINFO['grps']
$_SERVER['REMOTE_USER']
$_SESSION[DOKU_COOKIE]['auth']['user']
$_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
для описания переменных $USERINFO смотрите документацию для функции GetUserData.
Не забудьте добавить строку 'global $USERINFO' в начало тела этой функции, чтобы сделать переменную доступной.

logOff()

Если $cando['logoff'] установлено в true, эта функция будет вызвана при наступлении события разлогинивания (logoff). Используйте эту функцию для очистки cookies или аналогичных целей. Фактически эта функция полезна только при использовании trustExternal

createUser()

Создает нового пользователя с заданными данными.

modifyUser()

Редактирует данные пользователя.

deleteUser()

Удаляет 1 или более пользователей.

getUserCount()

Возвращает число пользователей, удовлетворяющих заданным критериям фильтрации.

retrieveUsers()

Извлекает данные аккаунта для пользователей, соответствущих критериям фильтрации.

addGroup()

Создает новую группу.

retrieveGroups()

Возвращает список всех доступных групп.

Известные реализации

ru/devel/authentication_backends.txt · Последнее изменение: 2013-07-02 07:46 — Aleksandr

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki