Alt 22.07.2015, 15:34:14   #1 (permalink)
M3Y3R
Erfahrener Benutzer
Benutzerbild von M3Y3R

ID: 336361
Lose senden

Reg: 08.05.2006
Beiträge: 1.613
Standard [CakePHP 3.x] Access Control List / Erbitte unterstützung

Hallo,

ich versuche mich gerade ein wenig an CakePHP 3.x und habe schon so einige Dinge wie Layout und einige Controller/Actions erstellt. Auch ein Login-Bereich ist nach der Anleitung integriert. Dieses funktioniert auch, allerdings benötige ich eine Aufsplittung auf verschiedene Rollen (User, Admin, etc.).

Hierzu möchte ich das zur Verfügung stehende Plugin nutzen. Das Plugin selbst ist via composer installiert worden. Es liegt bereits im Verzeichnis vendor/cakephp/acl. Auch die Einbindung in die Bootstrap-Datei ist wie folgt erfolgt:
PHP-Code:
1:
Plugin::load('Acl', ['bootstrap' => true]); 
Zudem wurde die Methode isAuthorized() im App-Controller wie folgt angepasst:
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public function isAuthorized($user)
{
    
$Collection = new ComponentRegistry();
    
$acl= new AclComponent($Collection);
    
$username=$user['username'];
    
$controller=$this->request->controller;
    
$action=$this->request->action;
    
$check=$acl->check($user['username'],"$controller/$action");
    return 
$check;

Wenn ich mir nun $check ausgeben lassen, erhalte ich folgende Fehlermeldung:
Code:
1:
2:
3:
Warning (512): DbAcl::check() - Failed ARO node lookup in permissions check. Node references: Aro: M3Y3R Aco: Users/index [ROOT/vendor/cakephp/acl/src/Model/Table/PermissionsTable.php, line 77]
Ohne die Ausgabe werde ich auf die Login-Seite weitergeleitet...
Dies liegt Vermutlich nun daran, dass die dazugehörigen Datenbanktabellen noch nicht befüllt sind:
Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
-- -- Tabellenstruktur für Tabelle `acos` -- CREATE TABLE IF NOT EXISTS `acos` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) DEFAULT NULL, `model` varchar(255) DEFAULT NULL, `foreign_key` int(11) DEFAULT NULL, `alias` varchar(255) DEFAULT NULL, `lft` int(11) DEFAULT NULL, `rght` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `lft` (`lft`,`rght`), KEY `alias` (`alias`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `aros` -- CREATE TABLE IF NOT EXISTS `aros` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) DEFAULT NULL, `model` varchar(255) DEFAULT NULL, `foreign_key` int(11) DEFAULT NULL, `alias` varchar(255) DEFAULT NULL, `lft` int(11) DEFAULT NULL, `rght` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `lft` (`lft`,`rght`), KEY `alias` (`alias`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `aros_acos` -- CREATE TABLE IF NOT EXISTS `aros_acos` ( `id` int(11) NOT NULL AUTO_INCREMENT, `aro_id` int(11) NOT NULL, `aco_id` int(11) NOT NULL, `_create` varchar(2) NOT NULL DEFAULT '0', `_read` varchar(2) NOT NULL DEFAULT '0', `_update` varchar(2) NOT NULL DEFAULT '0', `_delete` varchar(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `aro_id` (`aro_id`,`aco_id`), KEY `aco_id` (`aco_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Allerdings weiß ich nicht wie diese befüllt werden müssen. Ich habe auch auch schon versucht über Google die entsprechenden Infos in Erfahrung zu bringen, allerdings konnte ich hierzu bisher nichts brauchbares finden.

Ich habe nun die Hoffnung, dass der ein oder andere hier aus dem Klamm-Forum sich mit dem aktuellen CakePHP-Framework und den ACL´s auskennt und mich hier ein wenig unterstützen oder anleiten kann.

Sofern weitere Infos fehlen, bitte kurz bescheid geben, ich liefere diese dann nach.

Zitat:
Hinweis:
Das Projekt selbst wird lokal über VirtualBox auf einem "Ubuntu-Server" betrieben. Es steht daher noch nicht im Internet zur Verfügung.

Danke und viele Grüße
M3Y3R
 

Geändert von M3Y3R (22.07.2015 um 15:42:49 Uhr)
M3Y3R ist offline   Mit Zitat antworten
Alt 30.03.2016, 11:56:45   #2 (permalink)
olli1986
Neuer Benutzer

Reg: 30.03.2016
Beiträge: 2
Standard

Hi,

ich weiß dieser Beitrag ist schon ein wenig älter, aber das Thema noch aktuell .

Beschäftige mich auch seid kurzem mit CakePHP 3 und ACL, M3Y3R bist du schon an einer lösung gekommen?

Gruß Olli
 
olli1986 ist offline   Mit Zitat antworten
Alt 31.03.2016, 22:41:18   #3 (permalink)
M3Y3R
Erfahrener Benutzer
Benutzerbild von M3Y3R

ID: 336361
Lose senden

Reg: 08.05.2006
Beiträge: 1.613
Standard

Zitat:
Zitat von olli1986 Beitrag anzeigen
bist du schon an einer lösung gekommen?
In der Tat hab ich es hinbekommen...
Folgende Anleitung hatte mir geholfen: Klick hier!
 
M3Y3R ist offline Threadstarter   Mit Zitat antworten
Alt 01.04.2016, 19:51:26   #4 (permalink)
olli1986
Neuer Benutzer

Reg: 30.03.2016
Beiträge: 2
Standard

Bin dem Link gefolgt und habe es auch hinbekommen damit die ACL zu gestallten.

Hast du eventuell schon eine möglichkeit die ACL über einen Controller zu verwalten, denn mit "cake acl..." usw. ist das doch recht umständlich.
Schön wäre eine Grafische Oberfläche, ist mit Sicherheit nicht schwer stehe da aber noch ein wenig auf dem Schlauch, weil CakePHP neu für mich ist.

Gruß Olli
 
olli1986 ist offline   Mit Zitat antworten
Antwort

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kann man MS Access nur mit Access-Programm öffnen? NWsimon1702 Software/Windows 10 09.04.2009 21:59:08
cakePHP anyone? PlaciD Programmierung 0 28.12.2008 17:42:14


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51:15 Uhr.