FormLister форма авторизации - редирект при входе

Добрый день.

FormLister, контроллер login, сайт рабочий, делаю некоторые доработки.

Задача такая — на сайте 2 группы веб-пользователей и нужно, чтобы при успешной авторизации залогиненый пользователь перенаправлялся на свою стартовую страницу (у каждой группы она своя), в зависимости от того, к какой группе он принадлежит.

Пытался сделать через такой препаре


$output = $modx->isMemberOfWebGroup(array('company'));
if ($output == true) {
        $FormLister->config->setConfig(array(
        'redirectTo'=>'300'
        ));
} else {
        $FormLister->config->setConfig(array(
        'redirectTo'=>'5'
        ));
}

и редирект для пользователя из группы company не срабатывает, постоянно перекидывает на страницу с id=5, вне зависимости какой тип препаре использую: after, before, process в различных комбинациях.
Попробовал по-проще, добавил в форму переключатель выбора группы

<div class="form-group">
    <label class="col-sm-4 col-form-label nopadding">Укажите кто Вы *</label>
    <div class="col-sm-8 nopadding">
        <div class="radio">
	    <label>
		<input type="radio" name="category" value="web" [+c.category.web+]>
		<span class="cr"><i class="cr-icon fa fa-circle"></i></span> агентство
	    </label>
	</div>
	<div class="radio">
	    <label>
		<input type="radio" name="category" value="company" [+c.category.company+]>
		    <span class="cr"><i class="cr-icon fa fa-circle"></i></span> агент
	    </label>
	</div>[+category.error+]
    </div>
</div>

препаре соответственно другой

if ($FormLister->getField('category') == 'company') {
        $FormLister->config->setConfig(array(
        'redirectTo'=>'300'
        ));
} else {
        $FormLister->config->setConfig(array(
        'redirectTo'=>'5'
        ));
}

Но и так тоже не работает, хотя на другом проекте такая конструкция работает в форме регистрации для параметра userGroups

Подскажите, что не так, куда смотреть. И как правильно.
Спасибо.

4 комментария

avatar
Примерный кусочек
<?php
$login = $FormLister->getField($FormLister->getCFGDef('loginField', 'username'));
$password = $FormLister->getField($FormLister->getCFGDef('passwordField', 'password'));

if ($FormLister->isSubmitted() && $FormLister->user->testAuth($login, $password, false, false) && in_array('какая-то группа', $FormLister->user->getUserGroups($FormLister->user->getID()))) {
	
$FormLister->config->setConfig(array('redirectTo' => '3'));
	
	
}
  • 1px
  • +1
avatar
Спасибо, работает!
С учетом названия полей и авторизации через email получилось так
<?php
$login = $FormLister->getField($FormLister->getCFGDef('email', 'email'));
$password = $FormLister->getField($FormLister->getCFGDef('password', 'password'));

if ($FormLister->isSubmitted() && $FormLister->user->testAuth($login, $password, false, false) && in_array('company', $FormLister->user->getUserGroups($FormLister->user->getID()))) {
$FormLister->config->setConfig(array('redirectTo' => '300'));
} else {
$FormLister->config->setConfig(array('redirectTo'=>'5'));
}
  • paic
  • 0
avatar
Ну разумеется надо было поправить, это ж только набросок.
avatar
это было понятно)

Просто так принято — если обратился за помощью, значит вопрос публичный и надо опубликовать то, что получилось в результате оказанной помощи, может кому еще пригодится.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.