Kam přesně vložit kód pro ACL

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

Zdravím všechny, a předem se omlouvám za stupidní dotaz, ale od toho už je forum, viďte? :)

Ješte pořád nejsem zcela konformní se strukturou Nette tříd, dostávám se do toho, a momentálně na své první aplikaci řeším ACL.

V DB mám tabulku uživatelů – username, pass, role. Role je např. „admin“ či „editor“, a pro přihlášení používám normální autentikátor dle dokumentace, po přihlášení v pořádku získám identitu.

Náhled mé souborové struktury

Problém je, že nevím, kam přesně ACL kód mám dát. Nevím, zda založit vlastní Class, či zda ho vložit do Presenteru „Sign“ hned poté, co uživatele autentikuju. Nějak jsem nikde nenašel komplexní příklad s celým kódem aplikace (s presentery atd.), která by ACL používala. Vše jsou vždy jen kousky kódu vytžené u kontextu.

Mluvím o tomto kódu

Samozřejmě potřebuju v aplikaci poté k různým zdrojům řešit práva (read, write atd.). Potřebuju jen trošku postrčit :-)

Používám aktuální verzi Nette 2.0 beta, PHP 5.3, namespaces.

Předem díky za pomoc a pardon za stupidní dotaz.

uestla
Backer | 799
+
0
-

Vřele doporučuji návod od srigiho: https://doc.nette.org/…thentication

Pudlík
Člen | 8
+
0
-

Ahaa! Tento jsem pročetl, avšak asi jsem nebyl dosti pozorný, a přehlédl jsem část, kde se vkládá Authorizator do Configu, aby byl takto dostupný po celou dobu běhu aplikace.

Díky, teď už to snad zmastím :)

radikus
Člen | 11
+
0
-

uestla napsal(a):

Vřele doporučuji návod od srigiho: https://doc.nette.org/…thentication

Tak přesně téhle odpovědi jsem se bál. Uvedený odkaz je na postup ve staré verzi. Error 500 to jistí. Zase budu 2 dny rozjíždět něco co tu mohlo být někde popsáno. Obecné věci v dokumentaci mi taky nepomohou, takže opravdu moc poděkuji někomu, kdo by mohl poskytnout FUNKČNÍ postup a doporučenou adresářovou strukturu pro přihlašování uživatelů ;-).

tatyalien
Člen | 239
+
0
-

Já jsem si to rozjel dle návodu, jen jsem měl problémy s neonem (s ním ještě moc neumím), ale to jsem pak dořeil. Acl mám uložené v libs/AclProj/Security/ jak to je v návodu…

neon:

<?php
common:
	php: # PHP configuration
		date.timezone: Europe/Prague
		session.save_path: "%tempDir%/sessions"
		# zlib.output_compression: yes
		# default_charset: "UTF-8"

	services:
		authenticator:
			class: AclProj\Security\Authenticator
		authorizator:
			class: AclProj\Security\Acl

		robotLoader:
			run: true

	database:
		driver: mysql
		host: localhost
		database: xxx
		username: xxx
		password: xxx

	security:
		salt: NejakyRuznyRetezec
?>

Editoval tatyalien (25. 7. 2011 11:57)

radikus
Člen | 11
+
0
-

Díky, tohle jsem třeba nikde nevyčuchal. Teď ale bojuju pravděpodobně se sessions. Hází mi to server error 500 a v logu mám: [2011–07–25 13–50–14] PHP Fatal error: Uncaught exception Nette\InvalidStateException with message ‚session_start(): session_start(): open(/var/www/clients/client10/web15/tmp/sess_beei6scldfaioushoold0t25g4, O_RDWR) failed: No such file or directory (2)‘ in /var/www/clients/client10/web15/libs/Nette/Http/Session.php:91…

Problém bude asi v ukládání nebo samotném startování session. V php session.auto_start:Off, adresář ..temp/sessions s potřebnými právy mám, cestu nastavenou v neonu. Co mi ještě chybí nebo kde může být problém?? Díky za rady.

Claudie1
Člen | 21
+
0
-

No, napadaá mě (ale nemusí to být tím): píše, že nemůže najít: /var/www/clients/client10/web15/tmp/sess_beei6scldfaioushoold0t25g4.
Nemáš někde v nastavení překlep (tmp místo temp)?