2017-08-21 3 views
0

Ich verwende yii2 basic und implementiert RBAC.Wie können Datensätze angezeigt werden, die von diesen Benutzern auf der Indexseite in yii2 erstellt wurden?

Ich habe zwei Rollen Admin und Fieldofficer und erstellte Berechtigungen und Regeln und zugewiesene Benutzer. Wenn sich der Administrator jetzt anmeldet, sollte er auf der Indexseite alle Datensätze sowie seine erstellten Datensätze im Raster sehen können.

Während sich der Fieldofficer anmeldet, sollte er in der Lage sein, nur seine erstellten Datensätze in der Indexseite zu sehen.

Wie wird das erreicht?

Antwort

0

Sie müssen die ID des Benutzers im Suchmodell vorladen. Wenn die Sicherheit ein Problem darstellt (dh Sie möchten nicht, dass andere Benutzer dies umgehen können, egal was passiert), müssen Sie feststellen, ob die Benutzer-ID an die Abfrage übergeben wurde, und sie dem Benutzer zurückgeben Sie wollen (dh: der eingeloggte). In meisten Situationen, werden Sie die zusätzliche Sicherheit benötigen, und sollten.

Ersetzen Sie UserPlan mit Ihrem Modell. Da Sie keinen Code schreiben habe, habe ich keine Ahnung, was es ist :)

Bevor: Original-Index Beispiel (wie durch Gii generiert):

public function actionIndex() 
{ 
    $searchModel = new UserPlanSearch(); 
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

    return $this->render('index', [ 
     'searchModel' => $searchModel, 
     'dataProvider' => $dataProvider, 
    ]); 
} 

Nach: auf die derzeit gesperrt angemeldete Benutzer:

public function actionIndex() 
{ 
    $searchModel = new UserPlanSearch(); 
    $searchModel->user_id = Yii::$app->user->id; 

    // override (so users can't bypass) 
    $queryParams = Yii::$app->request->queryParams; 
    if (isset($queryParams['UserPlan']['user_id'])) { 
     $queryParams['UserPlan']['user_id'] = Yii::$app->user->id; 
    } 

    $dataProvider = $searchModel->search($queryParams); 
    return $this->render('index', [ 
     'searchModel' => $searchModel, 
     'dataProvider' => $dataProvider, 
    ]); 
} 

Außerdem sollten Sie Code schreiben, wenn zu veröffentlichen, es sei denn Sie Stackoverflow ein Bündel wollen von Down-Stimmen. Nur Fragen zu stellen, verstößt gegen die Regeln. Sie wollen sehen, was Sie bisher versucht haben, und einen Code, um zu gehen.

Verwandte Themen