Регистрация осуществляется через ajax по пути /act/login с передачей следующих POST параметров:
email - почта пользователя
pwd и pwd2 - для сверки паролей
capcha - проверяем код проверки
Возвращаемые коды ошибок:
1 - Не совпал проверочный код
2 - Не совпали введенные пароли
3 - Пользователь с этой почтой уже зарегистрирован
4 - Пользователь не указал электронную почту
5 - Скрываем ошибку
0 - Регистрация прошла успешно
Особенности регистрации - если база пользователей пуста, автоматически создается пользователь с административными правами, иначе - с пользовательскими.
Соответственно во фронте JS должен адекватно обработать коды ошибок.
В html-шаблоне регистрации должен быть
<div class="alert hidden" id="regResult" role="alert"></div>
Куда будут писаться ошибки регистрации и успешная регистрация
Все фронт-энд и бэк-энд функции проверки заполнения обращаются сюда для вывода результата:
/*
0 - нет ошибки
1 - не совпадает капча
2 - не совпадают пароли
3 - юзер уже зарегистрирован
4 - не введен адрес почты
5 - скрыть ошибку
*/
function showErr_v2(data) {
$("#regResult").addClass("hidden");
$("#regResult").removeClass("alert-danger");
$("#regResult").removeClass("alert-success");
switch (data) {
case '0':
$("#regResult").text("Вы успешно зарегистрированы!");
$("#alert-success").addClass("alert-success");
$("#regResult").removeClass("hidden");
break;
case '1':
$("#regResult").text("Не подошел проверочный код!");
$("#regResult").addClass("alert-danger");
$("#regResult").removeClass("hidden");
break;
case '2': // if (x === 'value2')
$("#regResult").text("Пароли не совпадают!");
$("#regResult").addClass("alert-danger");
$("#regResult").removeClass("hidden");
break;
case '3':
$("#regResult").text("Пользователь с такой почтой уже зарегистрирован");
$("#regResult").addClass("alert-danger");
$("#regResult").removeClass("hidden");
break;
case '4':
$("#regResult").text("Вы не указали электронную почту");
$("#regResult").addClass("alert-danger");
$("#regResult").removeClass("hidden");
break;
case '5'://Скрываем ошибки
$("#regResult").addClass("hidden");
break;
}
}