В данной статье будет разобрана структура 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 &copy; 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 сессии, от темы требуется перезагрузить страницу по основному адресу панели.