if(Yii::app()->user->checkAccess('hrManager',Yii::app()->user->getId())==1)
{
$this->redirect(array("employee/index"));
} else if(Yii::app()->user->checkAccess('accountManager',Yii::app()->user->getId())==1) {
$this->redirect(array("account/index"));
}
HRManagerhrManager
およびaccountManager
AccountManagerログインに対応するアクセスルールはどこにありますか。これにより、ユーザーが「HRマネージャー」レベルのアクセス権を持っているかどうかを確認し、リダイレクトしている場合は、ユーザーが「アカウントマネージャー」レベルのアクセス権を持っているかどうかを確認します。
ユーザーがHRマネージャーとアカウントマネージャーのどちらにもアクセスできない場合、上記のコードはどこにもリダイレクトされないため、アプリに合わせてカスタマイズできることは明らかです。そのため、別のキャッチャーが必要になります。
編集:
hrManager
文字列はrbacauthitem名です。テーブルがありauthassignment
authitem
、authitemchild
rbac用に設定されていますか?
そうでない場合は、ランキングテーブルを使用して、この方法を少し異なる方法で使用できます。ランクIDを使用して設定することもできますが、ユーザーモデルをロードする必要があります(まだロードしていない場合)。これは、最も効率的な方法ではない可能性があります。
$user = User::model()->findbyPk(Yii::app()->user->getId());
if($user->rank_id==3)
{
$this->redirect(array("employee/index"));
} else if($user->rank_id==2)) {
$this->redirect(array("account/index"));
}
もう1つの方法は、ログイン後にユーザーランクをYii :: app()-> user paramにロードすることです。これにより、リダイレクトの前にユーザーモデルをロードする必要がなくなります。おそらく、これはすでに設定されています。ページへのアクセスを許可しますか?
if(Yii::app()->user->rank_id==3)
{
$this->redirect(array("employee/index"));
} else if(Yii::app()->user->rank_id==2)) {
$this->redirect(array("account/index"));
}