Navrh prihlasovania do modulov,pomozte prosim

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

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
+
0
-

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.

01laky
Člen | 18
+
0
-

Kde tie role definovat?Ako pridam moduly ako zdroje?

akadlec
Člen | 1326
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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)