praegune kellaaeg 19.06.2025 01:21:31
|
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 |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|