page: Dynamická správa rolí a zdrojů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
stephanos
Člen | 7
+
0
-

Diskuse ke stránce Dynamická správa rolí a zdrojů


elseif ($r['privilege'] === NULL && $r['resource'] === NULL) { $this->allow($r['role']); }

tento kúsok kódu sa nikdy nevykoná, keďže databáza nikdy nevráti privilege alebo resource ako NULL
Návrh na zmenu:

$rules = dibi::fetchAll("
	(SELECT ro.name AS role,
			pr.name AS privilege,
			re.name AS resource,
			a.allowed AS allowed
	FROM acl AS a
		JOIN roles AS ro ON a.role_id = ro.id
		JOIN privileges AS pr ON a.privilege_id = pr.id
		JOIN resources AS re ON a.resource_id = re.id
	ORDER BY ro.id ASC)
	UNION
	(SELECT  ro.name AS role,
			NULL AS privilege,
			NULL AS resource,
			a.allowed AS allowed
	FROM acl AS a
		JOIN roles AS ro ON a.role_id = ro.id
	WHERE
		a.privilege_id IS NULL
		AND
		a.resource_id IS NULL
	ORDER BY ro.id ASC);"
);

prípadne, ak by sa v tabuľkách resources a privileges nachádzali položky name s hodnotou NULL, tak je potrebné upraviť dopyt na resources tak, aby nevrátil NULL hodnoty

$resources = dibi::fetchAll("SELECT name AS resource FROM resource WHERE name IS NOT NULL ORDER BY id ASC;");
PS: pri odosielaní to nechcelo zobrať predmet "[page dynamicka-sprava-roli-a-zdroju] Dynamická správa rolí a zdrojů", ktorý má vraj cez 70 znakov, aj keď má len 68 ;-)
Inza
Člen | 330
+
0
-

Fixnul jsi to?

stephanos
Člen | 7
+
0
-

Opravené. Keď tak sa na to niekto ešte pozrite..

Inza
Člen | 330
+
0
-

stephanos napsal(a):

Opravené. Keď tak sa na to niekto ešte pozrite..

Vypadá to dobře, díky;-)…