2012-04-10 8 views
0

wie der registrierte Benutzer nur seine Daten bearbeiten kann, aber nicht andere. Wenn es ACL (Aro und Aco) eingerichtet wurde. Meine Einstellungen:Wie bearbeite ich nur ihre eigenen Daten in CakePHP 2?

class User erweitert AppModel {

public function bindNode($user) { 

    return array('model' => 'Group', 'foreign_key' => $user['User']['group_id']); 

} 

Klasse AppController erweitert Regler {

public $components = array(
    'Acl', 
    'Auth' => array(
     'authorize' => array(
      'Actions' => array('actionPath' => 'controllers') 
     ) 
    ), 
    'Session' 
); 
+0

Wie definieren Sie "eigene Daten"? Generell gilt: * check * in der Aktion, die das Editieren erlaubt. – deceze

Antwort

1

Sie sollten die isAuthorized Methode, um Ihren Controller hinzuzufügen. Bei dieser Methode überprüfen Sie, ob die Benutzer für die Aktionen autorisiert sind, die sie mit den übergebenen Parametern ausführen möchten. Sie könnten Code verwenden:

switch ($this->action) { 
    case 'delete': 
    case 'edit': 
     // id of what they are trying to edit 
     $this->Topic->id = $this->params['pass'][0]; 
     // id of the owner of what they are trying to edit 
     $ownerId = $this->Topic->field('user_id'); 

     $userId = $this->Auth->user('id'); 
     if ($ownerId == $userId) { 
      // allow users to edit or delete their own topics 
      return TRUE; 
     } else { 
      // allow admin group to edit any topic 
      return $this->Auth->user('group') == 'admin'; 
     } 
} 

Wenn Sie Cake ACL-System verwenden wollen für Berechtigungen, anstatt hart codierten Kontrollen wie „Benutzer ist ein Mitglied der Admin-Gruppe“, siehe das Tutorial hier Überprüfung: http://jonisalonen.com/2010/role-based-acl-in-cakephp/ Es wurde für Cake 1.3 geschrieben, obwohl ich nicht überprüft habe, ob es große Unterschiede gibt.

+0

Danke, mein zweiter Weg, da ich bereits aros_akos eingerichtet habe. –

+0

Hier sind die Dokumente für [rollenbasierte Zugriffskontrolle in CakePHP 2.x] (http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application/part-two .html). –

Verwandte Themen