Jak na zprovoznění ACL modelu?

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

Zdravím,

mohl by mi prosím někdo vysvětlit, jak funguje ACL model. Procházím různé příspěvky a tutoriáli, ale stále z toho nejsem moudrý.

Chápu jak si vytvořit nějaký list, kde si vytvořím role a předám pravidla, ale nevím jak to mám dále používat.

Děkuji.

Pavel Janda
Člen | 977
+
+3
-

@Vorel12 Procházel jsi všechny tutoriály? https://play.nette.org/…i-acl-vrstvy

Editoval Pavel Janda (7. 5. 2016 7:22)

Vorel12
Člen | 7
+
0
-

@PavelJanda Super, podle návodu mi to funguje. Ale mám ještě jeden problém. Mám místnosti ke které může mazat a editovat pouze administrátor to by mi fungovalo, ale potřeboval bych poradit s tím, jak udělat to, aby místnost mohl smazat a editovat i zakladatel dané místnosti (právo editovat a mazat by měl zakladatel pouze pro místnost, kterou založil).
V databázi mám tabulku která propojuje id místnosti a id osoby, která je jejím zakladatelem, ale nevím jak to nějak přidat do ACL modelu.

Děkuji.

GEpic
Člen | 566
+
+3
-

Pokud s Nette začínáš, tak nejspíš využíváš Nette Database. A pokud máš správně nastavené relace, tak je zde řešení např toto:

public function handleDeleteRoom($room_id)
{
	$room = $this->database->table('rooms')->get($room_id);

	if ($this->user->isInRole('admin') || $this->user->id == $room->owner->id) {
		# Alohoruma smaž místnost awesome kód
		$this->flashMessage('Smazáno', 'success');
	} else {
		$this->flashMessage('You shall not scrub', 'danger');
	}
	$this->redirect("this");
}

A v šabloně poté:

<a n:href="deleteRoom! $room->id">Smazat místnost</a>

Editoval GEpic (24. 5. 2016 4:15)