topshelfcraft / impersonator
Who do you want to be?
Installs: 55
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 3
Forks: 1
Open Issues: 0
Type:craft-plugin
Requires
- craftcms/cms: ^4.0
README
a plugin for Craft CMS
A Top Shelf Craft creation
Michael Rog, Proprietor
Who do you want to be?
TL;DR.
Impersonator provides convenient controller actions for authorized users to impersonate, and un-impersonate, other users.
Installation
Visit the Plugin Store in your Craft control panel, search for Impersonator, and click to Install the plugin.
Alternatively, install via Composer:
composer require topshelfcraft/impersonator
Configuration
You can configure the form parameter name and the impersonation session duration, via an impersonator.php
file in your config
directory:
use craft\helpers\App; use TopShelfCraft\Impersonator\Settings; return Settings::create() ->accountParamName('accountToImpersonate') ->impersonatorSessionDuration('P1H');
Usage
Impersonation
From an authorized user session, submit a POST request to the impersonator/impersonator/impersonate
action with an identifier (Username, Email, or ID) of the account to impersonate:
<form method="post"> {{ csrfInput() }} {{ actionInput('impersonator/impersonator/impersonate') }} {{ redirectInput('my/start/page/path') }} <input name="impersonate" placeholder="ID, username, or email"> <button type="submit">Impersonate!</button> </form>
(You can customize the form input name
by setting the accountParamName
config item.)
Template Tags
When an impersonation session is active, the plugin provides some useful info for you to use in your templates:
-
The ID of the user performing the impersonation:
{{ impersonator.getImpersonatorId() }}
-
The user performing the impersonation:
{{ impersonator.getImpersonatorIdentity().fullName }} is impersonating {{ currentUser.fullName }}
Un-impersonation
The plugin keeps track of the session that initiated the impersonation, so you can provide your user a convenient way to end the impersonation and assume their original identity, without needing to log in again (as long as their original session is still valid):
{% if impersonator.getImpersonatorId() %} <form method="post"> {{ csrfInput() }} {{ actionInput('impersonator/impersonator/unimpersonate') }} {{ redirectInput('my/return/page/path') }} <button type="submit">Stop Impersonating</button> </form> {% endif %}
Support
Version 4.x
is compatible with Craft 4.0+.
If you've found a bug, or have a question, please open a GitHub Issue, and if you're feeling ambitious, submit a PR.
Contributors:
- Plugin development: Michael Rog / @michaelrog
- "Disguise" icon: Adrien Coquet, via The Noun Project