Nette getUser in component

801 Views Asked by At

I have to ask how to get name of logged user into Nette component (SomethingControl.php). Apparently I can't just do this:

$identity = $this->getUser()->getIdentity();
if ($identity) $this->template->username = $identity->getData()['username'];

So I've tried this:

$this->template->username = $this->user

but that doesn't work either.

1

There are 1 best solutions below

5
On

You cannot get user like this, because UI\Control is not descendant of UI\Presenter. But Nette\Security\User is service registered in DIC so you can get it like this:

class SomethingControl extends \Nette\Application\UI\Control
{

    /**
     * @var \Nette\Security\User
     */
    private $user;

    public function __construct(\Nette\Security\User $user)
    {
        parent::__construct();
        $this->user = $user;
    }

    public function render()
    {
        bdump($this->user); // getIdentity and username
    }

}

Just make sure that you are using Component Factory - means do not create your component in the presenter using new operator.