Skip to content

Latest commit

 

History

History
89 lines (70 loc) · 1.98 KB

README.md

File metadata and controls

89 lines (70 loc) · 1.98 KB
- NOTE: This package is not maintained anymore.
- If you want to help, please reach out to [email protected]

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.

<button data-impersonate="{{someUser._id}}">Click to impersonate</button>

Un-impersonate
Set a [data-unimpersonate] attribute to a DOM element.

<button data-unimpersonate>Click to unimpersonate</button>

UI helpers

isImpersonating

{{#if isImpersonating}}
  <button data-unimpersonate>Click to unimpersonate</button>
{{else}}
  <button data-impersonate="{{_id}}">Click to impersonate</button>
{{/if}}

Client Methods

Should you need to use callbacks, use the JS methods directly.

Impersonate.do(userId, callback)

var userId = "...";
Impersonate.do(userId, function(err, userId) {
  if (err) return;
  console.log("You are now impersonating user #" + userId);
});

Impersonate.undo(callback)

Impersonate.undo(function(err, userId) {
  if (err) return;
  console.log("Impersonating no more, welcome back #" + userId);
})

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
Impersonate.admins = ["masters", "bosses"];
  • User group
Impersonate.adminGroups = [
  { role: "masters", group: "group_A" },
  { role: "bosses", group: "group_B" }
];

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