CakeImpersonate Plugin
, (*1)
Impersonate Component
A component that stores the current authentication session and creates new session for impersonating Users. User can revert back to original authentication sessions without the need to re-login., (*2)
Warning
Always double check that an attacker cannot "spoof" other users in the controller actions. To prevent hijacking of users accounts that the current request User shouldn't/wouldn't have normal access to. You should enable CsfrComponent and SecurityComponent in your Controller when loading this component., (*3)
This Plugin does circumvent default authentication mechanisms, (*4)
Requirement
- CakePHP 3.7 and above.
Installation/Upgrading
composer require jomweb/cake-impersonate:"^3.0"
, (*5)
Plugin Load
Open \src\Application.php add, (*6)
$this->addPlugin('CakeImpersonate');
to your bootstrap() method or call bin/cake plugin load CakeImpersonate
, (*7)
Component Load
Load the component from controller, (*8)
$this->loadComponent('CakeImpersonate.Impersonate');
Open configure\app.php
and add, (*9)
'Impersonate' => [
'sessionKey' => 'OriginalAuth'
]
to the return [];
or use Configure::write('Impersonate.sessionKey', 'OriginalAuth');
when loading the component., (*10)
Usage
Impersonate user
This requires the request to be a POST
, PUT
, DELETE
so it can be protected by SecurityComponent
and CsrfComponent
, (*11)
$this->Impersonate->login($userIdToImpersonate);
Check current user is impersonated
$this->Impersonate->isImpersonated();
Logout from impersonating
$this->Impersonate->logout();