Paket impersonate (login as other user) untuk rakit framework
Jalankan perintah ini via rakit console:
php rakit package:install impersonate
Tambahkan 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 mereturnNULL
jika 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.