Paket impersonate (login as other user) untuk rakit framework
Jalankan perintah ini via rakit console:
php rakit package:install impersonateTambahkan kode berikut ke file application/packages.php:
'impersonate' => ['autoboot' => true],Contoh penggunaan pada controller anda:
defined('DS') or exit('No direct script access.');
// Impor kelas
use Esyede\Impersonate;
class Impersonate_Controller extends Base_Controller
{
public function action_impersonate()
{
// Proteksi dengan middleware
$this->middleware('before', ['auth', 'admin_only']);
$target_id = 2; // Ubah sesuai kebutuhan
$impersonated = Impersonate::login($target_id);
if (! $impersonated) {
return Redirect::back()
->with('error', 'Gagal login ke akun user');
}
// dd($impersonated);
// Berhasil login ke user pemilik id '2'
return Redirect::to('member/dashboard')
->with('success', 'Anda sedang login sebagai user');
}
public function action_leave()
{
// Proteksi dengan middleware
$this->middleware('before', ['auth', 'admin_only']);
$leave = Impersonate::leave();
if (! $leave) {
return Redirect::back()
->with('error', 'Gagal kembali ke admin');
}
// dd($leave);
// Berhasil login kembali sebagai admin
return Redirect::to('admin/dashboard')
->with('success', 'Anda kembali login sebagai admin');
}
}- Method
Impersonate::login()danImpersonate::leave()akan mereturnNULLjika dieksekusi dalam keadaan belum login. - Method
Impersonate::login()danImpersonate::leave()akan mereturn object dariAuth::user()jika operasi login/leave berhasil dilakukan. - Pastikan untuk menerapkan middleware sebagai proteksi route anda sebelum menggunakan paket ini.