2017-02-01 10 views
0

Я создал Yii2 app. В моем приложении три роли. 1. admin 2. client 3. userYii2: логин как собственная дочерняя роль

Теперь user является потомком client и client является потомком admin. , так admin является родителем обязанности роль i.e client and user.

Теперь у меня есть интерфейс для user-management от admin может видеть всех пользователей. Теперь, если admin хочет войти в систему в любой учетной записи, тогда он может зайти в систему напрямую, зная его password. Итак, как я могу достичь этого, используя yii2 или php.

Или я хочу добавить что-нибудь вроде, если администратор хочет получить доступ к своей дочерней панели, а затем как он может получить доступ?

Пожалуйста, помогите. Спасибо.

+0

, если он уже вошел в систему как администратор, то как он может повторно войдите как пользователь или любой другой? –

+0

, поэтому я хочу добавить somthing, как если бы администратор хотел получить доступ к своей дочерней панели, то как он может получить доступ? –

+1

Я лично добавлю опцию на панель администратора, чтобы переключиться на другую панель пользователя, выбрав его/ее из списка всех пользователей. Вам просто нужно проверить роль администратора и показать эти параметры. – marche

ответ

0

ли что-то вроде этого

  • Использование RBAC для аутентификации пользователя
  • Создание отдельного контроллера и действия для детей данных и других функциональных
  • Проверить, если пользователь админ включите доступ для этих контроллеров действий используя RBAC
0

Я бы сказал, что вам нужно использовать RBAC в yii2.

  • Настройка таблиц RBAC как в в ссылке Yii2 Rbac
  • Вы можете на основе либо использовать дб/файл. Сохранение ваших отношений в БД было бы лучше.
  • Как только вы настроите свои таблицы, как в ссылке, вам нужно установить отношения в таблице.
  • У вас есть auth_item, auth_item_child, auth_assignment и auth_rule child.
  • Я не использую auth_rule, поскольку предопределяю свои роли действия в контроллере.
  • Сначала создайте роли в auth_item
  • В вашем случае это будет админ, клиент и пользователь.
  • Далее в auth_item_child у вас есть родительские дочерние столбцы.
  • Ваш родитель будет администратором, а дочерний для него будет клиентом.
  • Следующий родитель - клиент, а дочерний элемент для этого будет пользователем.
  • Теперь клиент имеет доступ ко всему, что имеет пользователь.
  • И администратор может иметь доступ к тому, к которому имеет доступ клиент. enter image description here
  • Если вы видите изображение, то здесь пользователь может ездить на велосипеде, но клиент может также ездить на велосипеде и водить автомобиль, в то время как администратор может ездить на велосипеде, вести машину и автобус.
  • После установки отношений вы можете назначить user_id для ролей в таблице auth_assignment.

Применение

  • После того, как ваша установка будет сделано, теперь в вашем контроллере вы можете роли и действия.

    функция поведение общественного() {

    return [ 
        'access' => [ 
         'class' => \yii\filters\AccessControl::className(), 
         'rules' => [ 
    
          [ 
           'allow' => true, 
           'roles' => ['Admin'], 
           'actions' => ['index','create','update','view','delete','driveBus'], 
          ], 
    
          [ 
           'allow' => true, 
           'roles' => ['client'], 
           'actions' => ['driveCar'], 
          ] 
           [ 
           'allow' => true, 
           'roles' => ['user'], 
           'actions' => ['rideBike'], 
          ] 
    
         ], 
        ], 
    ]; 
    

    }

  • Теперь у вас есть поведения set.As администратора вы можете войти и получить доступ ко всему, и другим будут иметь доступ к тому, что действиям Тому был назначен.

  • Теперь у вас может быть логин как клиент или пользовательский вариант.
  • Вы можете настроить его так, как если бы вошедший в систему пользователь был администратором, он может использовать параметр login as.
  • Создайте метод, в котором он проверяет, является ли пользователь администратором или нет. Что-то вроде приведенного ниже кода.

    $auth = AuthAssignment::find()->where(['user_id' => Yii::$app->user->identity>user_id])->one(); 
        if($auth->item_name == 'Admin'){ 
         //Get the user email and password here and apply login method here. 
         //Now you will be signed in with that user session 
        } 
    

 Смежные вопросы

  • Нет связанных вопросов^_^