Написание модуля авторизации на PHP

8 000 руб. за проект • безналичный расчёт, электронные деньги
16 ноября 2015, 09:17 • 7 откликов • 83 просмотра
Требуется разработка работающего каркаса/скелета модуля авторизации для сайта на PHP.
Использование модуля предполагается примерно такое:
--
require("auth.php");
$auth = Auth();
if ($auth->state) then
{
echo "<div>Пользователь: " . $auth->login . "</div>\n";
echo "<div>Информация: " . $auth->дополнительная_информация . "</div>\n";
}
else
{
if ($cmd == "login") then {
if ($auth->check() then {
$auth->auth();
} else {
echo $html_auth_error;
}
} else {
echo $html_auth_form;
}
}
--
Впрочем это не требование, возможны и другие варианты использования.
Форма должна решать две задачи - идентификация текущего посетителя (авторизован или нет) и авторизация пользователя.

Авторизация должна быть безопасной и качественной. Сам я от веб-разработки далек, поэтому точно все перечислить не смогу, но полагаю, что передача данных формы должна быть по HTTPS, что передаваться должен не пароль, а его хеш с солью, что если не поддерживаются cookies, то должна быть опциональная поддержка передачи аутентификационного ключа в параметрах. У формы должна быть некоторая устойчивость к подмене аутентификационного ключа, т.е. ключ должен одновременно быть и подписью к текущему соединению; он должен быть невалиден для другого IP, другого браузера и т.п.

Авторизация осуществляется по логину и паролю. Однако у логина может быть привязка к IP-адресу (не жесткая).
То есть для неавторизованных пользователей форма должна предлагать логин для авторизации, но с возможностью его смены.

В один момент времени может быть активна только одна сессия. Если при авторизации была обнаружена другая действующая авторизация для данного логина, более старая авторизация должна быть завершена, в сессии по старой авторизации должна быть указана причина (то есть в браузере должно вывестись что-то типа "Сессия завершена, выполнен вход под логином user, IP 1.2.3.4, устройство Windows 7").

Есть определенные требования к стилю написания программного кода. Скажем, если я надумаю встроить в модуль отправку контрольного кода по SMS, то это не должно потребовать глубокого рефакторинга. Сильно нежелателен хардкодинг и всякие трики, основанные на глубоком знании потрохов PHP.

Оплата после выполнения работ и демонстрации фрагмента кода. Чтобы не было разногласий по стилю программного кода, желательно перед началом работ показать произвольные образцы своего кода.

P.S. Просьба в откликах указывать предполагаемую стоимость.