2017-02-01 3 views
0

Ich habe Yii2 app erstellt. Es gibt drei Rollen in meiner App. 1. admin 2. client 3. userYii2: Melden Sie sich als eigene untergeordnete Rolle an

Jetzt ist die user Kind von client und client ist Kind von admin. , so admin ist Elternteil der Störungsrolle, d. H. client and user.

Jetzt habe ich eine Schnittstelle für user-management von Admin kann alle Benutzer sehen. Nun, wenn admin in einem Benutzerkonto anmelden möchten, dann kann er sich direkt mit seinem password einloggen. Wie kann ich dies erreichen mit yii2 oder php.

Oder möchte ich etwas hinzufügen, wie wenn Admin Zugriff auf seine Kind-Panel dann zugreifen möchte?

Bitte helfen. Danke.

+0

wenn er bereits als Administrator angemeldet ist wie kann er dann wieder melden Sie sich als Benutzer oder jede andere? –

+0

also möchte ich etwas hinzufügen, wie wenn Admin Zugriff auf seine Kind-Panel dann, wie er zugreifen kann? –

+1

Ich persönlich würde die Option im Admin-Panel hinzufügen, um zum Panel eines anderen Benutzers zu wechseln, indem Sie ihn aus einer Liste aller Benutzer auswählen. Sie müssen nur nach der Administratorrolle suchen und diese Optionen anzeigen. – marche

Antwort

0

Sie so etwas wie dieses

  • Verwenden RBAC für die Benutzerauthentifizierung
  • Erstellen Sie separate Controller und die Aktion für Kinder Daten und andere Funktionalitäten
  • Überprüfen Sie, ob Benutzer admin ist dann Zugang für die Aktionen Reglerfreigabe mit RBAC
0

Ich würde sagen, Sie müssen RBAC in yii2 verwenden.

  • Richten Sie Ihre RBAC Tabellen in der Verbindung Yii2 Rbac
  • Sie entweder db/Datei-basierte Anwendung kann. Die Pflege Ihrer Beziehungen in der DB wäre besser.
  • Sobald Sie Ihre Tabellen wie in der Verknüpfung eingerichtet haben, müssen Sie Beziehungen in der Tabelle einrichten.
  • Sie haben auth_item, auth_item_child, auth_assignment und auth_rule child.
  • Ich benutze nicht auth_rule, da ich meine Aktion Rollen in der Steuerung vordefinieren.
  • Zuerst erstellen Sie die Rollen in auth_item
  • In Ihrem Fall wird es Admin, Client und Benutzer sein.
  • Als nächstes im auth_item_child haben Sie übergeordnete untergeordnete Spalten.
  • Ihre Eltern werden Admin und Kind für die gleichen wird der Client sein.
  • Der nächste Elternteil ist der Client, und das Kind wird der Benutzer sein.
  • Jetzt hat ein Client Zugriff auf alles, was der Benutzer hat.
  • Und Admin kann Zugriff auf was auch immer der Client zugreifen kann. enter image description here
  • Wenn Sie das Bild hier sehen, kann der Benutzer nur das Fahrrad fahren, aber der Kunde kann Fahrrad fahren und Auto fahren, während der Admin Fahrrad fahren, Auto fahren und Bus fahren kann.
  • Sobald die Beziehungen eingerichtet sind, können Sie user_id's den Rollen in der auth_assignment Tabelle zuweisen.

Anwendung

  • Sobald das Setup abgeschlossen ist, jetzt in Ihrem Controller Sie können Rollen und Handeln.

    public function Verhalten() {

    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'], 
          ] 
    
         ], 
        ], 
    ]; 
    

    }

  • Jetzt können Sie Ihr Verhalten set.As Admin haben Sie sich anmelden und alles zugreifen können und andere werden den Zugang haben, welche Maßnahmen Thay haben Zugewiesen an.

  • Jetzt können Sie sich als Client oder Benutzer anmelden.
  • Sie können es einrichten, als ob angemeldeter Benutzer ein Administrator ist, er kann die Anmeldung als Option verwenden.
  • Erstellen Sie eine Methode, wo es überprüft, ob der Benutzer Admin ist oder nicht. Etwas wie der unten eingefügte Code.

    $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 
        } 
    
Verwandte Themen