Prihlasenie admina do uzivatelskeho konta

japlavaren
Člen | 404
+
0
-

ahoj,

mam na projekte funkciu kde sa admin dokaze prihlasit za hociktoreho uzivatela v systeme a vidiet tam, co vidi uzivatel. Mal som to vyriesene ze ak je v query uid tak sa v BasePresenter pretazila metoda getUser a vratila inu identitu.

Nette 3.0 ma metodu getUser oznacenu ako final takze uz ju nedokazem pretazit. Napada niekoho jednoduchy sposob ako toto vyriesit?

Toto je kod, ktory som tam mal povodne:

public function getUser(): Security\User
    {
        $user = parent::getUser();

        // Admin user can sign in like normal user when there is uid parameter
        if ($this->uid && $user->isInRole(IRegistrationType::REGISTRATION_ADMIN)) {
            $userEntity = $this->userRepository->getById($this->uid);
            $identity = $user->authenticator->authenticate([$userEntity]);

            $user = new Security\User(new DisposableUserStorage());
            $user->getStorage()->setIdentity($identity);
        }

        return $user;
    }
Martk
Člen | 661
+
+2
-

Chtěl jsem popsat složitější a lepší cestu, ale to by bylo na dlouho, tak to zjednoduším takhle: přesuň logiku do startup metody a tam měň identitu.

n3t
Člen | 37
+
-5
-

A co to vyřešit přímo v Authenticator. Pokud např. přijde uživatelské jméno s lomítkem, přihlásit uživatel s username před lomítkem, ale ověřit heslo uživatele za lomítkem (nebo jiným znakem dle libosti).