Страница 1 из 1

Как скрыть кнопку Вход и открыть[Решено]

Добавлено: 2019.06.24, 12:13
svil
Есть вход в админку(для админа admin и менеджера manager) и фронтенд(для слушателя author)
Проблема в том, что надо сначала аутентифицироваться, потом еще раз нажать на кнопку и перейти куда надо
в соответствии с ролью(RBAC из коробки).
А надо, чтобы сразу перекидывало на нужную страницу, а кнопка

Код: Выделить всё

 . Html::submitButton(
                        'Вход (' . Yii::$app->user->identity->surname . ')',
                        ['class' => 'btn btn-success', 'name' => 'login-button']
                    )
появлялась только для авторизованных пользователей.
Вид входа на фронтенде site/index

Код: Выделить всё

      <div class="col-lg-12">

                <?php if (Yii::$app->user->isGuest): ?>
                    <?php $form = ActiveForm::begin(['id' => 'login-form', 'fieldConfig' => ['enableLabel'=>false]]); ?>
                    <?= $form->field($model, 'password', ['enableLabel' => false])
                        ->widget(\yii\widgets\MaskedInput::className(), [
                            'mask' => '9999-9999-99',
                        ])
                        ->textInput(array('placeholder' => 'xxxx-xxxx-xx', 'class'=>'form-control text-center')); ?>
                    <div class="form-group">
                        <?= Html::submitButton('Вход', ['class' => 'btn btn-success', 'name' => 'login-button']) ?>
                    </div>
                    <?php ActiveForm::end(); ?>
                <?php elseif (Yii::$app->getUser()->can('manager')): ?>
                    <?= '<div class="form-group">'
                    //. Html::beginForm(['/site/logout'], 'post')
                    . Html::beginForm(['/admin'], 'post')
                    . Html::submitButton(
                        'Вход (' . Yii::$app->user->identity->surname . ')',
                        ['class' => 'btn btn-success', 'name' => 'login-button']
                    )
                    . Html::endForm()
                    . '</div>' ?>
                <?php elseif (Yii::$app->getUser()->can('indexEdu')): ?>
                    <?= '<div class="form-group">'
                    //. Html::beginForm(['/site/logout'], 'post')
                    . Html::beginForm(['/edu/index'], 'post')
                    . Html::submitButton(
                        'Вход (' . Yii::$app->user->identity->surname . ')',
                        ['class' => 'btn btn-success', 'name' => 'login-button']
                    )
                    . Html::endForm()
                    . '</div>' ?>
                <?php endif ?>

            </div>
Контроллер

Код: Выделить всё

 public function actionIndex()
    {
//Это вообще без кнопки Вход
//        if (!Yii::$app->user->isGuest) {
//            return $this->goHome();
//        }

//        $model = new LoginForm();
//        if ($model->load(Yii::$app->request->post()) && $model->login()) {
//            if (Yii::$app->getUser()->can('manageUser'))
//                {
//
//                return $this->redirect(Yii::$app->urlManager->createUrl('/admin'));
//            }
//
//                elseif (Yii::$app->getUser()->can('indexEdu'))
//                    {
//                        return $this->redirect(Yii::$app->urlManager->createUrl('/edu/index'));
//                }
//
//
//        } else {
//            $model->password = '';
//
//            return $this->render('index', [
//                'model' => $model,
//            ]);
//        }


        $model = new LoginForm();
        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            return $this->goBack();
        } else {
            $model->password = '';

            return $this->render('index', [
                'model' => $model,
            ]);
        }

Re: Как скрыть кнопку Вход и открыть[Решено]

Добавлено: 2019.06.24, 13:20
svil
Работает. В виде index не меняла ничего.
Controller

Код: Выделить всё

 $model = new LoginForm();
        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            if (Yii::$app->getUser()->can('manageUser'))
                {

                return $this->redirect(Yii::$app->urlManager->createUrl('/admin'));
            }

                elseif (Yii::$app->getUser()->can('indexEdu'))
                    {
                        return $this->redirect(Yii::$app->urlManager->createUrl('/edu/index'));
                }


        } else {
            $model->password = '';

            return $this->render('index', [
                'model' => $model,
            ]);
        }

Re: Как скрыть кнопку Вход и открыть[Решено]

Добавлено: 2019.06.24, 22:03
flashimage
$this->redirect(Yii::$app->urlManager->createUrl('/edu/index')) можно представить в более коротком выражении $this->redirect(['/edu/index'])