New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

rails_admin_pretender

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rails_admin_pretender

  • 0.0.2
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Why not using RailsAdminImpersonate?

I found that the rails_admin_impersonate is missing an important feature, to allow Admin to sign out of the current impersonated user and restore the Admin session. It is a bit annoying to sign in after I have finished impersonating someone.

Using Pretender gem seems to be a solution, but integrating it with RailsAdmin is not straightforward (and no tutorial for doing that so far). This gem is for that purpose. It is inspired by RailsAdminImpersonate.

RailsAdminPretender

Add an ability to rails_admin to impersonate as any user or actually any member that is devise authenticatable.

Installation

Add this line to your application's Gemfile:

gem 'rails_admin_pretender'

And then execute:

$ bundle

Usage

Add to your config/initializers/rails_admin.rb an action impersonate to actions:

config.actions do
  # root actions
  dashboard                     # mandatory
  # collection actions
  index                         # mandatory
  new
  export
  history_index
  bulk_delete
  # member actions
  show
  edit
  delete
  history_show
  show_in_app
  impersonate
end

At the bottom of config/initializers/rails_admin.rb, add the following line:

RailsAdminPretender.init

Finally, in your ApplicationController, include the following module:

include RailsAdminPretender

Now restart the application and visit User table in the admin. You should see home icon and Impersonate link for every model that uses Devise. In your views, you can use the helper is_impersonating? to check whether current_user is an impersonated user or not.

For example:

<% if is_impersonating? %>
  <li class="nav-item">
    <%= link_to "Sign out of this user", stop_impersonating_path, method: :post, class: "nav-link" %>
  </li>
<% else %>
  <li class="nav-item">
    <%= link_to "Sign out", destroy_user_session_path, method: :delete, class: "nav-link" %>
  </li>
<% end %>

Note: by default impersonation is disabled for model Admin. If you want to disable it for some other model you can modify the above code like this:

config.actions do
  ...
  impersonate do
    authorized do
      'ModelName' != bindings[:abstract_model].model_name
    end
  end

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

© 2019 [Chien Tran]

FAQs

Package last updated on 16 Apr 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc