Всплывающая форма для авторизации
HTML
<div id="login_form" class="modal">
<div class="modal_title">Вход
для клиентов</div>
<form method="post" action="/users/">
<div class="line">
<div class="name">Логин или e-mail </div>
<input class="input" type="text" name="login" value="">
</div>
<div class="line">
<div class="name">пароль</div>
<input class="input" type="password" name="password" value="">
</div>
<div class="submit">
<input class="submit_btn" type="submit" name="apply" value="Готово!">
</div>
<div class="forgot"><a href="/users/restore_password/">Забыли пароль?</a></div>
</form>
</div>
Скрипт ajax обработки авторизации на сайте добавляем в макет после кода формы
<script type="text/javascript">
$(function(){
$('#login_form [type="submit"]').bind('click', function(){
var form = $(this).parents('form:eq(0)');
form.parents('div:eq(0)').find('.alert-danger').remove();
$.loadingScreen('show');
$.ajax({
url : form.attr('action') + '?ajaxapply=1',
type : 'POST',
data : form.serialize(),
dataType : 'json',
success : function (ajaxData) {
if (ajaxData.success == 1){
form.parents('.fancybox-skin:eq(0)').find('.fancybox-close').click();
$('.register').hide();
$('#authorization').empty().append($('<a>', {href:form.attr('action'), class:'fancy'}).text(' Здравствуйте, '+ajaxData.userName));
}
else{
if (ajaxData.error != undefined){
form.before($('<div>', {class: 'alert alert-danger', role:'alert'}).html(ajaxData.error));
}
}
$.loadingScreen('hide');
},
error : function (){$.loadingScreen('hide');return false}
});
return false;
});
});
</script>
Добавляем код в настройки ТДС "Пользователи сайта" (в самое начало)
<?php
if (Core::moduleIsActive('siteuser'))
{
$oSiteuser = Core_Entity::factory('Siteuser')->getCurrent();
is_null($oSiteuser) && $oSiteuser = Core_Entity::factory('Siteuser');
// ADD АВТОРИЗАЦИЯ ВО ВСПЛЫВАЮЩЕМ ОКНЕ
// Ajax Авторизация по логину и паролю
if (Core_Array::getRequest('ajaxapply')){
$oSiteuser = $oSiteuser->Site->Siteusers->getByLoginAndPassword(
strval(Core_Array::getPost('login')), strval(Core_Array::getPost('password'))
);
if (!is_null($oSiteuser)){
if ($oSiteuser->active){
$expires = Core_Array::getPost('remember')
? 2678400 // 31 день
: 86400; // 1 день
$oSiteuser->setCurrent($expires);
}
else{
$sError = 'Пользователь не активирован!';
}
}
else{
$sError = 'Введите корректный логин и пароль!';
}
$aResult = array();
if (!empty($sError)){
$aResult['error'] = $sError;
}
else{
$aResult['success'] = 1;
$aResult['userName'] = $oSiteuser->login;
}
echo json_encode($aResult);
exit();
}