Jak se dostat k identitě uživatele v prezenteru?

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

Ahoj,
mám presenter ve kterém ukládám do databáze záznamy. U záznamu potřebuji mít také id uživatele, který ho vložil.
Jak nejlépe v prezenteru k id uživatele (repektive k jeho identitě) přistupovat?

Je na to dělané rozhraní IUserStorage? Nebo je něco lepšího? Pokud je k tomu IUserStorage nejlepší, máte příklad nějaké vzorové implementace?
Díky.

Jiří Nápravník
Člen | 710
+
0
-

V presenteru

$this->getUser()->getIdentity() //tam mas celou identitu

ale je lepsi tyhle veci resit v modelu

kloban
Člen | 123
+
0
-

Dík. :-)

Ano to jsem taky váhal kde to řešit. Momentálně v presenteru vygeneruji formulář a při zpracování pošlu data do modelu. V modelu je zapíši do databáze.
Teď jsem to tedy vyřešil tak, že v prezenteru si zjistím id uživatele a pošlu ho se všemi daty do modelu.

Jak mohu identitu zjistit v modelu? Tam mi to samo o sobě pomocí $this->getUser() nezafunguje.

CZechBoY
Člen | 3608
+
0
-

Ja si do modelu predavam Security\User a odtamtud si vytahnu ID uzivatele.

kloban
Člen | 123
+
0
-

Znamená to, že si mám v modelu vytvořit instanci třídy user?

Do modelu jsem ho přidal takto:

<?php

namespace App\Models;

use Nette\Security as NS,
    App\entities,
    Nette\Utils\Strings;

class Skola extends \Nette\Object
{
    /**
     * @var \Kdyby\Doctrine\EntityManager
     */
    protected $EntityManager;

    public function __construct(\Kdyby\Doctrine\EntityManager $EntityManager)
    {
        $this->EntityManager = $EntityManager;
    }

    public function add($nazev, $ulice, $co, $cp, $mesto, $psc, $poznamka)
    {

		...

        $testuser = new NS\User;
        $testuser->getId();

		...
...

Končí to ale chybou: Argument 1 passed to Nette\Security\User::__construct() must implement interface Nette\Security\IUserStorage

David Matějka
Moderator | 6445
+
+1
-

Ne, predas si to pres DI: https://doc.nette.org/…dependencies