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:
Zudem wurde die Methode isAuthorized() im App-Controller wie folgt angepasst:
Wenn ich mir nun $check ausgeben lassen, erhalte ich folgende Fehlermeldung:
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:
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.
Danke und viele Grüße
M3Y3R
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:
Plugin::load('Acl', ['bootstrap' => true]);
Zudem wurde die Methode isAuthorized() im App-Controller wie folgt angepasst:
PHP:
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:
[B]Warning[/B] (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:
--
-- 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.
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
Zuletzt bearbeitet: