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