تالار گفتمان nCIS.ir

نسخه‌ی کامل: استفاده از isAdmin در آموزش yii1 در Yii2
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام

استاد ما در آموزش  های شما در Yii1 با IsAdmin() در Rules اکشن ها رو کنترل میکردم برای دسترسی ادمین به اکشن

حالا یکم در Yii2 گیج شدم چطوری میتونم همین دسترسی ادمین را در Yii2 هم اوکی کنم روی اکشن هام ؟


/**
    * @inheritdoc
    */
   public function behaviors()
   {
       return [
           'access' => [
               'class' => AccessControl::className(),
               'only' => ['logout', 'signup', 'login'],
               'rules' => [
                   [
                       'actions' => ['signup', 'login'],
                       'allow' => true,
                       'roles' => ['?'],
                   ],
                   [
                       'actions' => ['logout', 'panel'],
                       'allow' => true,
                       'roles' => ['@'],
                   ],
               ],
           ],
           'verbs' => [
               'class' => VerbFilter::className(),
               'actions' => [
                   'logout' => ['post'],
               ],
           ],
       ];
   }

در کد بالا که برای Rules های اکشن هاست چه تغییراتی باید ایجاد کنم تا اکشن های مورد نیاز فقط قابل دسترسی برای ادمین باشه .

( ادمین فقط 1 نفره با ای دی 1 )
از matchCallback استفاده کنید:
/**
    * @inheritdoc
    */
   public function behaviors()
   {
       return [
           'access' => [
               'class' => AccessControl::className(),
               'only' => ['logout', 'signup', 'login'],
               'rules' => [
                   [
                       'actions' => ['signup', 'login'],
                       'allow' => true,
                       'roles' => ['?'],
                   ],
                   [
                       'actions' => ['logout', 'panel'],
                       'allow' => true,
                       'matchCallback' => function() {
                           return Yii::$app->user->id == 1;
                       },
                   ],
               ],
           ],
           'verbs' => [
               'class' => VerbFilter::className(),
               'actions' => [
                   'logout' => ['post'],
               ],
           ],
       ];
   }