Magento 2: Bagaimana cara mendapatkan detail pengguna admin saat ini?

12

Bagaimana cara mendapatkan detail pengguna admin saat ini di back-end?

Mike Zhang
sumber

Jawaban:

30

Anda perlu menambahkan ini ke konstruktor kelas Anda

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

Kemudian buat metode ini

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

ini akan memberi Anda admin login saat ini.
Anda nanti bisa mendapatkan detail seperti $user->getUsername()atau $user->getEmail().

Marius
sumber
1
Perhatikan: Setelah menambahkan kode, kita perlu menjalankan bin/magento setup:di:compile, jika tidak maka akan muncul kesalahan " Sesi tidak diberikan ".
Key Shang
jawaban sempurna dengan penjelasan !!! +1 :)
SagarPPanchal
@Marius saya telah menambahkan login sebagai backend formulir pelanggan. Tapi saya ingin detail admin di halaman tampilan produk yang admin login ke pelanggan.
Masud Shaikh
Anda tidak dapat mengakses sesi admin dari frontend.
Marius
7

Bagaimana cara mendapatkan detail pengguna admin saat ini?

menyuntikkan sesi backend di controller Anda

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

}

dan gunakan ini untuk mendapatkan nama pengguna atau email

 $this->authSession->getUser()->getUsername();
$this->authSession->getUser()->getEmail();
Surendra Kumar Ahir
sumber
Tidak perlu menyuntikkan di controller Anda.
MagePsycho
3

Pengontrol Anda sudah diperluas \Magento\Backend\App\Actionsehingga sudah memiliki objek otorisasi. Tidak diperlukan suntikan tambahan. Untuk mendapatkan pengguna cukup gunakan fungsi ini:

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

Jawaban lain menyarankan suntikan duplikat, yang tidak diperlukan.

Jacques
sumber