Авторизация пользователей


В первую очередь панель проверяет авторизацию по COOKIE. Затем вызывается действие authenticate. Это действие само по себе ничего не делает. Рассчитано, что все методы авторизации будут реализованы через обработчики событий выполняемые до этого действия. Возможны две причины вызова authenticate:

  • авторизация пользователя;
  • внутренняя авторизация пользователя. В случае внутренней реализации обработчик должен взять имя пользователя из Authen. Он не должен проверять пароль пользователя, а лишь проверить, есть такой пользователь или нет. И, если пользователь существует, вернуть XML в том же виде, что и при обычной авторизации.

В любом случае, если событию удалось идентифицировать пользователя, оно должно добавить в XML тег следующего вида:

<ok level=«уровень доступа» name=«имя пользователя» method=«имя метода авторизации»>
  [<ext name=«имя»>значение</ext>]
  ...
</ok>
CODE

«уровень доступа» — уровень доступа авторизованного пользователя. Панель имеет следующие зарезервированные значения для уровня доступа:

  • 0 (lvNobody) — не авторизованные пользователи;
  • 1 (lvRegistered) — все авторизованные пользователи имеют уровень доступа 1 или выше;
  • 29 (lvAdmin) — уровень доступа администратора панели;
  • 30 (lvSuper) — уровень доступа администратора сервера;
  • 31 (lvInternal) — максимальный уровень доступа (используется для внутренних запросов).

«имя пользователя» — заранее неизвестно откуда его следует взять, поэтому событие должно сообщить его.

«имя метода авторизации» — это значение используется для следующих действий:

  • authenticate.<method> с параметром username — должно вернуть тег <ok/>, если пользователь найден. Это действие доступно только администратору;
  • authenticate.<method>.setpass с параметром password — должно изменить пароль текущего пользователя;
  • authenticate.<method>.isowner с параметром username — должно вернуть тег <ok/>, если текущий пользователь является владельцем пользователя username. Если какое-либо из этих действий не реализовано, соответствующая функциональность будет недоступна.

Тэги ext — любая дополнительная информация. Она будет сохранена вместе с сессией пользователя и будет в дальнейшем доступна действиям и событиям.

После того, как одному из обработчиков удалось идентифицировать пользователя выполнение обработчиков событий. И выполняются обработчики события authenticate выполняемые после этого действия.