- NOTE: This package is not maintained anymore. - If you want to help, please reach out to gwendall.esnault@gmail.com
Meteor Impersonate
Let admins impersonate other users
Installation
meteor add gwendall:impersonate
DOM helpers
Impersonate
Set a [data-impersonate] attribute with the id of the user to impersonate on a DOM element.
1<button data-impersonate="{{someUser._id}}">Click to impersonate</button>
Un-impersonate
Set a [data-unimpersonate] attribute to a DOM element.
1<button data-unimpersonate>Click to unimpersonate</button>
UI helpers
isImpersonating
1{{#if isImpersonating}} 2 <button data-unimpersonate>Click to unimpersonate</button> 3{{else}} 4 <button data-impersonate="{{_id}}">Click to impersonate</button> 5{{/if}}
Client Methods
Should you need to use callbacks, use the JS methods directly.
Impersonate.do(userId, callback)
1var userId = "..."; 2Impersonate.do(userId, function(err, userId) { 3 if (err) return; 4 console.log("You are now impersonating user #" + userId); 5});
Impersonate.undo(callback)
1Impersonate.undo(function(err, userId) { 2 if (err) return; 3 console.log("Impersonating no more, welcome back #" + userId); 4})
Server Methods
By default, the package will grant users in the "admins" group (through alanning:roles) the possibility to impersonate other users. You can also set any of the two following parameters to define your own impersonation roles.
- User role
1Impersonate.admins = ["masters", "bosses"];
- User group
1Impersonate.adminGroups = [ 2 { role: "masters", group: "group_A" }, 3 { role: "bosses", group: "group_B" } 4];
Notes
- Uses alanning:roles. If the user trying to impersonate is not an admin, a server error will be returned.
- Built upon David Weldon's post