dxrx:impersonate

v0.2.3Published 2 years ago

- 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