رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از isAdmin در آموزش yii1 در Yii2
#1
سلام

استاد ما در آموزش  های شما در 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 )
پاسخ
تشکر شده توسط:
#2
از 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'],
               ],
           ],
       ];
   }
پاسخ
تشکر شده توسط: mehdi king




کاربران در حال بازدید این موضوع: 1 مهمان