|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
| autor |
|
kpihus
Kreisi kasutaja

liitunud: 14.04.2003
|
29.12.2011 15:27:52
PHP: Zend_Acl resurtsi majandus |
|
|
Vaatamata tutorialitele on Zendi ACL majandus jäänud veidi segaseks.
Oletame et me defineerime ACL'i lihtsuse huvides käsitsi:
class Model_ExamplerAcl extends Zend_Acl {
public function __construct() {
//Lisame ressursi
$this->add(new Zend_Acl_Resource('index'));
//Lisame rolli
$this->addRole(new Zend_Acl_Role('user'));
// ja anname rollile õiguse kasutada ressurssi
$this->allow('user', 'index');
} |
ressurss 'index' siinkohal tähendab index kontrollerit, õigus ?
Aga kui meil index kontrolleri sees on erinevad actionid, ning erinevatele rollidele tahame anda erinevad õigused erinevatele actionitele, kuidas siis toimida ?
|
|
| Kommentaarid: 26 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
25 |
|
| tagasi üles |
|
 |
neros
HV Guru

liitunud: 26.11.2003
|
29.12.2011 15:38:22
|
|
|
"Index" peaks siiski tähendama actionit. Vähemalt loogika ütleb, et kusagil peaks Zendil olema mingi option mille järgi sa sätid mille peale õigused säetakse.
_________________ GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt. |
|
| Kommentaarid: 48 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
40 |
|
| tagasi üles |
|
 |
kpihus
Kreisi kasutaja

liitunud: 14.04.2003
|
30.12.2011 02:33:27
|
|
|
| madedog kirjutas: |
| "Index" peaks siiski tähendama actionit. Vähemalt loogika ütleb, et kusagil peaks Zendil olema mingi option mille järgi sa sätid mille peale õigused säetakse. |
Katse meetod tõestas, et see index seal on siiski kontroller. Seega küsimus endiselt õhus.
|
|
| Kommentaarid: 26 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
25 |
|
| tagasi üles |
|
 |
mirko27
HV veteran

liitunud: 29.06.2002
|
30.12.2011 02:42:06
|
|
|
Vaata dokumentatsiooni, siis vaata API dokumentatsiooni, kenasti kõikides näidetes näha, et deny/allow võtab lisaks ka kolmanda parameetri, mis on siis action.
Mis konkreetselt ressursse puudutab, siis nede puhul kehtib hierarhia:
$acl->addResource(new Zend_Acl_Resource('announcement'), 'news');
|
|
| Kommentaarid: 12 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
11 |
|
| tagasi üles |
|
 |
kpihus
Kreisi kasutaja

liitunud: 14.04.2003
|
30.12.2011 11:58:57
|
|
|
| mirko27 kirjutas: |
Vaata dokumentatsiooni, siis vaata API dokumentatsiooni, kenasti kõikides näidetes näha, et deny/allow võtab lisaks ka kolmanda parameetri, mis on siis action.
Mis konkreetselt ressursse puudutab, siis nede puhul kehtib hierarhia:
$acl->addResource(new Zend_Acl_Resource('announcement'), 'news'); |
Ok, seega mõistliku lahenduse puhul peaksime lubama sedasi:
class Model_ExamplerAcl extends Zend_Acl {
public function __construct() {
//Lisame ressursi
$this->add(new Zend_Acl_Resource('controller'));
$this->add(new Zend_Acl_Resource('action'));
//Lisame rolli
$this->addRole(new Zend_Acl_Role('user'));
// ja anname rollile õiguse kasutada ressurssi
$this->allow('user', 'controller','action');
}
|
[/code]
|
|
| Kommentaarid: 26 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
25 |
|
| tagasi üles |
|
 |
EagerFish
HV vaatleja

liitunud: 08.11.2011
|
30.12.2011 14:40:41
|
|
|
Ise olen ka kasutanud sellist varianti mis annab kontroller/tegevus "paaridena" õigusi. Aga tundub, et natuke teistmoodi vist kui ülemine näide- ma ei tekita resursse action'itest. Ma ei oska kommenteerida kui õige see on, aga enda vajadused viimati kattis. Postitan kogu õiguste süsteemi ülesehituse mida kasutanud olen.
Oodatud kõik kommentaarid.
class Application_Acl extends Zend_Acl {
public function __construct() {
//Lisame rollid, user pärib guest'i ja admin pärib user'i õigused
$this->addRole(new Zend_Acl_Role('guest'));
$this->addRole(new Zend_Acl_Role('user'), 'guest');
$this->addRole(new Zend_Acl_Role('admin'), 'user');
//Moodustame ressursid kontrolleri nimede põhjal
$this->add(new Zend_Acl_Resource('users'));
$this->add(new Zend_Acl_Resource('profile'));
$this->add(new Zend_Acl_Resource('error'));
$this->add(new Zend_Acl_Resource('index'));
//lubame guest'il profile kontrolleris login ja register actionit, samuti avalehte võiks näha
$this->allow('guest', 'profile', array('login', 'register'));
$this->allow('guest', 'index');
//sisse loginud kasutaja saab välja logida ja ka oma profiili näha
$this->allow('user', 'profile', array('index', 'logout', 'settings'));
//admin saab kõigele ligi
$this->allow('admin');
}
} |
Siis vaja ka pluginat kus saadakse kätte kasutaja roll ning siis vaadatakse kas on õigust saada ligi
päritavale kontrolleri/tegevuse'i paarile.
class Application_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract {
private $_acl = null;
public function __construct(Zend_Acl $acl) {
$this->_acl = $acl;
}
public function preDispatch(Zend_Controller_Request_Abstract $request) {
//eeldan, et kasutajal on olemas roll
if(Zend_Auth::getInstance()->hasIdentity()){
$user = Zend_Auth::getInstance()->getIdentity();
$role = $user->role;
} else {
$role = 'guest';
}
//saame kontrolleri ja tegevuse nime ning kontrollime ligipääsu õigust
$controller = $request->getControllerName();
$action = $request->getActionName();
//Kui ligipääsu pole suuname logimise lehele
if(!$this->_acl->isAllowed($role, $controller, $action)) {
$request->setControllerName('profile')->setActionName('login');
}
}
} |
Ja nüüd lihtsalt Application_Acl põhjal objekt luua ning see plugina parameetriks anda.
Kogu kupatus lisada front kontrollerile.
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
public function _initMain()
{
//lisame ligipääsu kontrolli
$acl = new Application_Acl();
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new Application_Controller_Plugin_Acl($acl));
}
} |
Kogu nodi mul demona ka githubis brausitav. https://github.com/janar/zfw-basic-example
Ehk kellelegi abiks.
_________________ give.ee - klientidele, kes hindavad disaini |
|
| tagasi üles |
|
 |
kpihus
Kreisi kasutaja

liitunud: 14.04.2003
|
30.12.2011 15:40:26
|
|
|
| EagerFish kirjutas: |
. Postitan kogu õiguste süsteemi ülesehituse mida kasutanud olen.
|
Aitäh, oli abiks Katsetan järgi, aga heetkel tundub asi selge olevat.
|
|
| Kommentaarid: 26 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
25 |
|
| tagasi üles |
|
 |
|