Navrh prihlasovania do modulov,pomozte prosim
- 01laky
- Člen | 18
Ahojte.Presiel som si uz pomaly vsetky clanky vo fore a aj tutorial roli a prihlasovania,no stale som nepochopil par veci.Mam app s adresarovou strukturou kde AdminModule,CustomerModule a PublicModule stoja uplne samostatne.Nepotrebujem vydelovat,ci Customer moze mazat,alebo pridavat,lebo customer module take veci ani neobsahuje.Ako mam spravit prihlasovanie?Popravde chcel by som mat jeden prihlasovaci formular a podla roli presmerovat app tam kam ma.Mozte ma trosku naviest?Chcel by som mat role ⇒ public (len uvodna stranka v PublicModule + prihlasenie a registracia) , Customer (bude mu pristupna len Customer vrstva) a admin (tiez mu bude pristupna len administracna vrstva),prihlasenie som zbuchal,len neviem vydelit pravidla v presenteroch.Za kazdu radu dakujem
- Filip Klimeš
- Nette Blogger | 156
Zkus se podívat jak se v Nette řeší ACL a jako zdroje si nastav jednotlivé moduly. Akce potom řešit nemusíš.
Sám bych postupoval asi tak, že si uděláš pro každý modul
BasePresenter, od kterého budou všechny presentery v daném modulu dědit, a
v metodě startup()
si budeš kontrolovat, jestli má uživatel
právo přistoupit do modulu.
- akadlec
- Člen | 1326
Nevím jestli to pro tebe nebude pro začátek moc složité, ale přístupová práva si můžeš definovat a používat např. pomocí Permission Extension a pak si jen definovat co se má dít když uživatel může/nemůže
- 01laky
- Člen | 18
Tak toto je na zaciatok moc zlozite.Tutorialova teoria tazka neni,az na to,ze
neviem kde zapisat „$acl->addRole…“ , „$acl->addResource…“
V podstate by mi pre zaciatok islo o nieco taketo :
$acl->allow(‚admin‘, ‚AdminModule‘);$acl->deny(‚customer‘,
‚AdminModule‘);
Potrebujem delit v modeloch na userManager a adminManager?BTW. prihlasovaci
form teda v public vrstve,alebo osobitne v customer a osobitne v admin
vrstve?
- Filip Klimeš
- Nette Blogger | 156
ACL role si můžeš přidat v konfiguraci. UserManager stačí mít jeden a SignPresenter mít oddělený od modulů.
- 01laky
- Člen | 18
Staticke ACL som tam nechcel.V App\Model\ som si spravil MyAuthorizator :
<?php
class MyAuthorizator implements Nette\Security\IAuthorizator
{
/**
* @var Nette\Security\Permission
*/
private $acl;
public function __construct()
{
$this->acl = new Nette\Security\Permission();
$this->acl->addRole('public');
$this->acl->addRole('customer');
$this->acl->addRole('admin');
$this->acl->addResource('Manageitem');
$this->acl->allow('admin','Manageitem','change');
}
function isAllowed($role, $resource, $privilege)
{
return $this->acl->isAllowed($role, $resource, $privilege);
}
}
a config.neon som si ho regol :
parameters:
php:
date.timezone: Europe/Prague
nette:
application:
errorPresenter: Error
mapping:
*: App\*Module\Presenters\*Presenter
session:
expiration: 14 days
services:
- App\Model\ItemsManager
- App\Model\UserManager
- App\RouterFactory
- App\Model\SystemManager
router: @App\RouterFactory::createRouter
authorizator: MyAuthorizator
Ako mam vydelit prava,ked aj AdminModule a aj CustomerModule ma napr. ManageitemPresenter?Resp. ako postupovat teraz dalej?Mne ide o to,aby sa celkovo customer nedostal do vrstvy AdminModule a naopak.
Editoval 01laky (31. 1. 2015 16:27)