В данной статье будет разобрана структура XML формы логина, и способы работы с ней.
Общее описание
Форма авторизации состоит из логотипа, копирайта, кнопки Войти и четырех полей: поле логина, пароля, выбора темы и языка.
Вот так выглядит в теме orion:
Описание XML
Посмотрим XML формы на примере COREmanager:
<doc lang="ru" func="logon" binary="/core" host="https://127.0.0.1:1500" stylesheet="login" theme="/manimg/orion/" css="main.css" logo="logo.png" logolink="" favicon="favicon.ico" localdir="default/">
<messages name="login" checked="yes">
<msg name="bg">Български</msg>
<msg name="cn">汉语</msg>
<msg name="cs">Český</msg>
<msg name="de">Deutsch</msg>
<msg name="en">English</msg>
<msg name="es">Español</msg>
<msg name="fi">Suomi</msg>
<msg name="fr">Français</msg>
<msg name="hu">Magyar</msg>
<msg name="jp">日本語</msg>
<msg name="ku">کوردی</msg>
<msg name="kz">kz</msg>
<msg name="nl">Nederlands</msg>
<msg name="pl">Polski</msg>
<msg name="pt">Português</msg>
<msg name="ro">Română</msg>
<msg name="ru">Русский</msg>
<msg name="th">ภาษาไทย</msg>
<msg name="ua">Українська</msg>
<msg name="xx">Developer</msg>
<msg name="zh">中文</msg>
<msg name="badagent">Пожалуйста, используйте другой броузер. Для работы с панелью подойдёт Internet Explorer 5.0, Netscape 6 или Mozilla</msg>
<msg name="cookie">Пожалуйста, включите cookie и попробуйте ещё раз</msg>
<msg name="">Войти</msg>
<msg name="error">Ошибка:</msg>
<msg name="expirepass">Время действия вашего пароля истекло. Для продолжения работы необходимо установить новый пароль.</msg>
<msg name="expirepassbadconfirm">Новый пароль и Подтверждение не совпадают.</msg>
<msg name="expirepassbadnew">Новый пароль должен отличаться от старого.</msg>
<msg name="fail">Неверный пароль</msg>
<msg name="lang">Язык</msg>
<msg name="loading">Загрузка</msg>
<msg name="newconfirm">Подтверждение</msg>
<msg name="newpasswd">Новый пароль</msg>
<msg name="noproject">Пожалуйста, перейдите в биллинг с сайта, на котором хотите заказать услуги.</msg>
<msg name="oldpasswd">Старый пароль</msg>
<msg name="passwd">Пароль</msg>
<msg name="recovery">Восстановление пароля</msg>
<msg name="registration">Регистрация</msg>
<msg name="theme">Тема</msg>
<msg name="title">Авторизация</msg>
<msg name="user">Логин</msg>
<msg name="tutorial" added="lang">Video tutorial</msg>
</messages>
<copyright href="http://ispsystem.com/">ISPsystem © 1997-2013</copyright>
<loginform user="" pwd="" lang="ru" theme="orion">
<lang>en</lang>
<lang>pt</lang>
<lang>ru</lang>
<theme name="orion">orion</theme>
<theme name="sirius">sirius</theme>
</loginform>
<tparams>
<func>logon</func>
<out>devel</out>
</tparams>
</doc>
messages содержит сообщения локализации
copyright содержит информаци о копирайте
loginform содержит данные о полях формы логина
Описание loginform
атрибуты тега loginform содержат в себе информацию о текущей теме, языке, переданном логине и пароле:
@user отправленный логин пользавателя, используется при ошибке, переключении языка/темы
@pwd отправленный пароль пользователя, используется при переключении языка/темы
@lang текущий язык панели
@theme текущая тема панели
Из тегов lang формируется селект с выбором языка, ключом будет содержание тега, а отображаемое сообщение берется из секции msg, по имени ключа.
Из тегов theme формируется селект с выбором темы, ключом будет значение атрибута @name, отображаемым сообщением содержимое тега.
@project, @welcomfunc, @welcomparam, тег redirect Параметры, которые необходимо отправить при авторизации
Описание messages
элементы msg содержат локализованные сообщения
title Сообщения для тайтла страницы
user Подпись к полю логин
theme Подпись к полю тема
passwd Подпись к полю пароль
lang Подпись к полю язык
enter Сообщение для кнопки Войти
cookie Сообщения для ошибке при выключенных cookies
Логотип
Путь до логотипа формируется из атрибутов @logo и @localdir, корневого тега doc
@logo название файла с логотипом
@localdir относительный путь до папки с логотипом
Описание ошибки
Если произошла ошибка, то в корневом теге doc будет следующие:
<error type="auth" object="badpassword" lang="ru">
<param name="object" type="msg">badpassword</param>
<param name="value"/>
<stack>
<action level="0" user="">auth</action>
</stack>
<detail>Неверное имя пользователя или пароль</detail>
<msg>Неверное имя пользователя или пароль</msg>
</error>
Само сообщение об ошибке, которое необходимо отобразить, содержится в теге msg
Действия с формой
Смена языка и/или темы
Для смены языка, темы необходимо позвать функцию logon с параметрами theme, lang (Например: func=logon&theme=orion&lang=ru).
Для того, чтобы при смене темы, языка сохранились введеные пользователем логин и пароль их тоже передать параметрами — username и pwd. В этом случае надо посылать post запрос.
Авторизация
Для авторизации нужно позвать функцию auth, c параметрами username, password и если есть project, welcomfunc, welcomparam, redirect
Если произошла ошибка, то в ответной XML будет тег error см. Описание ошибки
Если авторизация прошла успешно в ответной XML будет тег auth c id сессии, от темы требуется перезагрузить страницу по основному адресу панели.