У меня код при авторизации, где пользователь в зависимости от роли попадает на ту страницу, которая соответствует роли
public function actionLogin()
{
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
$id_user = Yii::$app->user->identity->getId();
if (Yii::$app->user->can('shop')) {
return $this->redirect(['zakaz/shop']);
} elseif (Yii::$app->user->can('admin')) {
return $this->redirect(['zakaz/admin']);
} elseif (Yii::$app->user->can('disain')) {
return $this->redirect(['zakaz/disain']);
} elseif (Yii::$app->user->can('master')) {
return $this->redirect(['zakaz/master']);
} elseif (Yii::$app->user->can('courier')) {
return $this->redirect(['courier/index']);
}
return $this->redirect(['zakaz/index', 'id'=> $id_user]);
} else {
return $this->render('login', [
'model' => $model,
]);
}
}
Он у меня немного получился громоздкий от elseif, возможно есть идеи как его укоротить в контролере