Magento 2: Как узнать подробности текущего пользователя-администратора?

12

Как получить детали текущего пользователя-администратора в бэк-энде?

Майк Чжан
источник

Ответы:

30

вам нужно добавить это в конструктор вашего класса

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

Затем создайте этот метод

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

это даст вам текущий авторизованный администратор.
Позже вы можете получить детали, как $user->getUsername()или $user->getEmail().

Мариус
источник
1
Примечание: после добавления кодов нам нужно запустить bin/magento setup:di:compile, иначе может появиться ошибка « Session none учитывая ».
Ключ Шан
идеальный ответ с объяснением !!! +1 :)
SagarPPanchal
@Marus Я добавил логин в качестве бэкенда формы клиента. Но я хочу узнать подробности администратора на странице просмотра продукта, чтобы администратор мог войти к клиенту.
Масуд Шейх
Вы не можете получить доступ к сеансу администратора из внешнего интерфейса.
Мариус
7

Как узнать подробности текущего администратора?

добавить бэкэнд-сессию в ваш контроллер

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

}

и использовать это, чтобы получить имя пользователя или адрес электронной почты

 $this->authSession->getUser()->getUsername();
$this->authSession->getUser()->getEmail();
Сурендра Кумар Ахир
источник
Не обязательно вводить в ваш контроллер, хотя.
MagePsycho
3

Ваш контроллер уже расширяется, \Magento\Backend\App\Actionпоэтому у него уже есть объект авторизации. Никаких дополнительных инъекций не требуется. Чтобы получить пользователя просто используйте эту функцию:

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

Другие ответы предлагают повторные инъекции, которые не нужны.

Жак
источник