Odhlášení uživatelů po změně oprávnění

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

Zdravím všechny, chci se zeptat, jak odhlásit uživatele tak, aby se musel znovu přihlásit? Jde o to, že uživateli se změnila uživatelská role, má tedy přístup k jiným věcem, mám otestováno, když uživatel klikne na odhlásit (přes nette jej odhlásím) a znovu se přihlásí, tak se mu již načtou nové věci, nicméně jak vynutit odhlášení když existuje session? Tedy když uživateli změním oprávnění, aby když přijde z kteréhokoliv zařízení, aby viděl rovnou login screen, popř rovnou nové věci?

Editoval Webster.K (26. 7. 2017 16:31)

David Matějka
Moderator | 6445
+
+3
-

nejlepsi je ukladat do identity jen ID a vzdy vytahnout z db aktualni data

matopeto
Člen | 395
+
0
-

Niekde na zaciatku zivotenho cyklu prezentra si vytiahni nove opravnenia. A bude to fungovat automaticky, teda na co pristup nema to nebude mat a na co dostal bude mat. Netreba odhlasovat.

Pokial by si chcel odhlasovat pravdepodobne budes musiet urobit to ze si budes drzat tabulku prihlaseni a po zmene prav z tejto tabulky pre daheho uzivatela zmazat vsetky zaznamy, potom pri overeni zistis ze prihlasenie je neplatne – (id prihlasenia si drzis v session), teda nie je v databaze uzivatela odhlasis

Osobne by som isiel prvou moznostou. Teda preverit ako testujes/cachujes rolu (asi sa ti to nacachuje do session pri prihlaseni do identity a potom uz sa s tym nic nerobi) a pod. a upravil to aby sa to preverovalo pred kazdym requestom. – v session by som drzal iba id uzivatela a vsetko vytahoval vzdy pri kazdom requeste pre neho.

Editoval matopeto (26. 7. 2017 16:37)

Webster.K
Člen | 212
+
0
-

Mám nastavení pro role v config.neon souboru, kde má každá role své přiřazené oprávnění na určité věci. Co se uživatele týče, tak jeho role je zapsaná v databázi a v BasePresenteru je funkce startup kde je switch na jednotlivé prezentery, takže v každym tom switchi mám navíc mít třeba podmínku $user->isAllowed(„files“, „view“) a podle toho buď pokračovat v otevření nebo směrovat na třeba homepage/přístupOdepřenPage?

Webster.K
Člen | 212
+
0
-

Mám tam toto v BasePresenteru ve funkci startup():

		switch ($this->getName()) {
    case "Homepage":
        if (!$user->isLoggedIn()) {
            $this->forward("Sign:in");
        }
        break;
    case "Files":
        if (!$user->isLoggedIn()) {
            $this->forward("Sign:in");
        } else {
            if (!$user->isAllowed("files", "view")) {
                $this->redirect("Homepage:default");
            }
        }
        break;
			default:
        break;
}

Nicméně pokud uživatel zůstane přihlášen a já v roli, kterou mám nastaveno takto:

setup:
            - addRole('guest')
            - addRole('admin','guest')
			- addResource('files')
			- allow('guest','files','view')
			- allow('admin','files','edit')

Když v DB změním uživatele místo guest na admin, tak pořád vidí to samé, tedy jen vše na view, ale neobjeví se tlačítka na edit:

{if $user->isAllowed("files","edit")}BUTTON NA EDITACI{/if}

Stejně tak když otevře uživatel /files aby se pustil presenter ale je v roli Admin, stejně se neukáže editace… a když se odhlásí a znova přihlásí, vše funguje tak jak má, potřebuji eliminovat tu nutnost přihlášení/odhlášení :/ ale nenapadá mě už jak jinak :/

Editoval Webster.K (31. 7. 2017 10:01)