Empfehlungen: Erweiterte Suche

ACL - Rechte nur für eigene Beiträge

Daten auslesen, verarbeiten und den Views übergeben

ACL - Rechte nur für eigene Beiträge

Beitragvon khan » So 18. Jul 2010, 20:25

Hallo zusammen,
wäre unglaublich glücklich, wenn mir jemand auf die Sprünge helfen könnte...

Ich möchte, dass User einer Gruppe die Rechte erhalten, ihre jeweils eigenen Beiträge zu editieren, zu löschen etc. - nicht aber die der anderen User in derselben Gruppe. Ich konnte dazu einfach nichts finden!

Es gibt immer nur Beispiele mit
$this->Auth->allow('add');
$this->Auth->allow('edit');

aber ich weiß nicht, wie ich das 'add' bzw. 'edit' mit CakePHP-Mitteln dahingehend beschränken kann, dass nur solche Beiträge editiert werden dürfen, die der eigenen user_id zugeordnet sind...

Ich verstehe überhaupt nicht, dass das nirgendwo (auffindbar) thematisiert wird, es kann doch nicht sein, dass ich für jeden User eigene Einträge in der DB brauche?! Das muss doch irgendwo, irgendwie durch eine entsprechende Abfrage lösbar sein??!!!!

Wenn Ihr Tipps oder gerne auch links habt, wo ich fündig werden könnte, VIELEN DANK!!!
khan
 
Beiträge: 10
Registriert: Sa 10. Jul 2010, 18:52

Re: ACL - Rechte nur für eigene Beiträge

Beitragvon khan » Sa 24. Jul 2010, 13:39

Nochmal eine Idee: wäre es denn vielleicht sinnvoll, dafür entsprechende andere views zu definieren, also z.B. personal_index / personal_view o.ä., wo dann klar ist, dass nur die eigenen Datensätze angezeigt werden und dafür dann die Rechte zu vergeben?
Ich frage mich nur, ob damit bereits sicherheitstechnisch ausgeschlossen ist, dass man doch irgendwie auf die Seiten anderer User zugreifen könnte?! Ob es reichen würde, da nochmal eine if-Abfrage einzubauen, irgendsowas wie wenn die user-id des anzuzeigenden / zu editierenden Views mit der des angemeldeten (Session-) Users übereinstimmt, dann 'darf der das'...!?!
khan
 
Beiträge: 10
Registriert: Sa 10. Jul 2010, 18:52

Re: ACL - Rechte nur für eigene Beiträge

Beitragvon euromark » Sa 24. Jul 2010, 14:55

es ist absoluter standard bzw viel zu trivial und simpel, als dass dies irgendwo thematisiert sein müsste...

Code: Alles auswählen
function edit($id = null) {
    if (empty($id) || !($contest = $this->Contest->find('first', array('conditions'=>array('Contest.id'=>$id, 'Contest.user_id'=>$currentUserId))))) {
        $this->Common->flashMessage(__('invalid record', true), 'error');
        $this->redirect(array('action' => 'index'));
    }
    ...
}

wobei $currentUserId aus der Session befüllt werden muss!
euromark
 
Beiträge: 644
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: ACL - Rechte nur für eigene Beiträge

Beitragvon khan » Sa 24. Jul 2010, 15:31

Hallo!
euromark hat geschrieben:es ist absoluter standard bzw viel zu trivial und simpel, als dass dies irgendwo thematisiert sein müsste...

Damit hast Du sicher recht, nichtsdestotrotz hab ich da irgendwie ne Blockade oder eben einfach zuwenig Erfahrung. Daher danke für Deine Antwort. Hab mich wohl erstmal zu sehr an Fertiglösungen gehalten und dabei den Überblick über meine eigenen Anforderungen verloren.
euromark hat geschrieben:
Code: Alles auswählen
function edit($id = null) {
    if (empty($id) || !($contest = $this->Contest->find('first', array('conditions'=>array('Contest.id'=>$id, 'Contest.user_id'=>$currentUserId))))) {
        $this->Common->flashMessage(__('invalid record', true), 'error');
        $this->redirect(array('action' => 'index'));
    }
    ...
}

wobei $currentUserId aus der Session befüllt werden muss!

Sowas meinte ich als if-Abfrage. Analog würde ich dann wohl einfach meinem View ebenfalls die id übergeben, um sicherzustellen, dass nur die eigenen Beiträge angezeigt werden! Und parallel einen admin_view o.ä. anlegen, der dann alles angezeigt bekommt und auch editieren kann etc...
Wenn ich die view-, edit- und delete-Funktionen entprechend beschränke, muss ich dann keine Extra-Auth-Festlegungen in meiner DB haben? Also reicht es dann, pauschal für alle User den (personalisierten) View, Edit etc. zu 'erlauben'? Ich denke mal, JA!
khan
 
Beiträge: 10
Registriert: Sa 10. Jul 2010, 18:52

Re: ACL - Rechte nur für eigene Beiträge

Beitragvon euromark » Sa 24. Jul 2010, 23:08

genauso ist es

PS: ich "backe" mir bereits ALLE controller in dieser art - das spart viel zeit!
=> http://www.dereuromark.de/2010/06/22/ca ... templates/

man muss jetzt nur noch das "user_id=>$uid" etc einbauen und fertig
euromark
 
Beiträge: 644
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: ACL - Rechte nur für eigene Beiträge

Beitragvon khan » Mi 28. Jul 2010, 22:00

Hallo euromark,
das sieht sehr klasse aus!! Werde mir das mal in Ruhe zu Gemüte führen.
ViIELEN DANK!
khan
 
Beiträge: 10
Registriert: Sa 10. Jul 2010, 18:52


Zurück zu Controller

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron