The Masquerade module allows to switch users and surf the site as that user (no password required). That person can switch back to their own user account at any time.
Two links to switch user (Masquerade) and go back (Unmasquerade)
- ✅ Compatible with Payload v3 beta.102
- ✨ Zero dependencies
- ⚙ Highly customizable
npm install payload-plugin-masquerade
yarn install payload-plugin-masquerade
Integrating to users
collection.
import { masqueradePlugin } from 'payload-plugin-masquerade'
export default buildConfig({
// ...
plugins: [
masqueradePlugin({
enabled: true,
}),
],
// ...
});
Enable the masquerade form block to allow select a user and switch to their account directly from the admin panel. The selection form appears before the navigation links, making it easy to access and use the Masquerade feature.
Block is enable by default, to disable set to false
export default buildConfig({
// ...
plugins: [
masqueradePlugin({
enableBlockForm: false,
}),
],
// ...
});
plugins: [
masqueradePlugin({
authCollection: Users.slug,
enableBlockForm: true,
enabled: true,
onUnmasquerade: async ({ req, originalUserId }) => {
console.log(Object.keys(req || {}))
console.log(`You are: ${originalUserId || 'unknown'}`)
console.log(`Your masquerade user is: ${req.user?.email || 'unknown'}`)
},
onMasquerade: async ({ req, masqueradeUserId }) => {
const { user: originalUser } = req
// Custom logic when masquerading
const { docs } = await req.payload.find({
collection: 'users',
limit: 1,
where: {
id: { equals: masqueradeUserId },
},
})
console.log(`You are: ${originalUser?.email || 'unknown'}`)
console.log(`You are masquerading as user: ${docs[0]?.email || 'unknown'}`)
},
}),
],
Contributions and feedback are very welcome.
To get it running:
- Clone the project.
pnpm install
- Add .env file in dev folder to start payload project
pnpm dev
The MIT License (MIT). Please see License File for more information.
- This package was inspired by a drupal module Masquerade