Magento 2: Como obter detalhes do usuário administrador atual?


Respostas:


30

você precisa adicionar isso ao construtor da sua classe

protected $authSession;
public function __construct(
    ....
    \Magento\Backend\Model\Auth\Session $authSession, 
    ....
) {
    ....
    $this->authSession = $authSession;
    ....
}

Em seguida, crie este método

public function getCurrentUser()
{
    return $this->authSession->getUser();
}

isso lhe dará o atual administrador conectado.
Mais tarde, você pode obter os detalhes como $user->getUsername()ou $user->getEmail().


1
Aviso: Após adicionar os códigos, precisamos executar bin/magento setup:di:compile, caso contrário, aparecerá o erro " Sessão não fornecida ".
Key Shang

resposta perfeita com explicação !!! 1 :)
SagarPPanchal

@ Marius Adicionei o login como back-end do formulário do cliente. Mas eu quero detalhes do administrador na página de visualização do produto, que o administrador efetua login no cliente.
Masud Shaikh

você não pode acessar a sessão de administrador do front-end.
Marius

7

Como obter detalhes do usuário administrador atual?

injetar sessão de back-end no seu controlador

public function __construct(
....
\Magento\Backend\Model\Auth\Session $authSession, 
  ....
 ) {
  ....
   $this->authSession = $authSession;
   ....

}

e use isso para obter nome de usuário ou email

 $this->authSession->getUser()->getUsername();
$this->authSession->getUser()->getEmail();

Não é necessário injetar no seu controlador.
MagePsycho

3

O seu Controller já se estende \Magento\Backend\App\Actionpara que ele já tenha o objeto de autorização. Não são necessárias injeções adicionais. Para obter o usuário, basta usar esta função:

    /** @var \Magento\User\Model\User $user*/
    $user = $this->_auth->getUser();

Outras respostas estão sugerindo injeções duplicadas, que não são necessárias.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.