2017 © Pedro Peláez
 

library laravel-impersonator

Impersonate users in your Laravel 5.4+ app.

image

genealabs/laravel-impersonator

Impersonate users in your Laravel 5.4+ app.

  • Friday, January 5, 2018
  • by mikebronner
  • Repository
  • 2 Watchers
  • 3 Stars
  • 159 Installations
  • HTML
  • 0 Dependents
  • 0 Suggesters
  • 4 Forks
  • 3 Open issues
  • 8 Versions
  • 270 % Grown

The README.md

Laravel Package codecov, (*1)

Impersonator for Laravel

Impersonator for Laravel masthead image., (*2)

Supporting This Package

This is an MIT-licensed open source project with its ongoing development made possible by the support of the community. If you'd like to support this, and our other packages, please consider becoming a backer or sponsor on Patreon., (*3)

Pre-requisites

  • Laravel 8.0+
  • PHP 7.3+

Installation

composer require genealabs/laravel-impersonator

Configuration

  • genealabs-laravel-impersonator.layout: master blade layout view for your application (default layouts.app).
  • genealabs-laravel-impersonator.content-section: name of content section in master layout blade view (default content).
  • genealabs-laravel-impersonator.user-model: user model of your application (default config('auth.providers.users.model')).
  • genealabs-laravel-impersonator.middleware: the middleware to use for the impersonatee routes (default: ['web', 'auth']). You may specify only or except parameters. E.g. ['web', 'auth', 'password.confirm' => ['except' => 'destroy']]

If you need to customize these settings:, (*4)

php artisan impersonator:publish --config

Usage

  1. Add trait GeneaLabs\LaravelImpersonator\Traits\Impersonatable to your user model.
  2. Override trait method public function getCanImpersonateAttribute() : bool that determines if a given user can impersonate other users.
  3. (optional) Override trait method public function getCanBeImpersonatedAttribute() : bool that determines if a given user can be impersonated.
  4. Use route('impersonatees.index') to view a list of all impersonatable users. You could add something like the following to your menu:, (*5)

    @if ((auth()->user()->canImpersonate ?? false) && ! session('impersonator'))
      <a class="dropdown-item" href="{{ route('impersonatees.index') }}">Impersonator</a>
    @endif
    
  5. (optional) Add something like the following to your menu view to allow imporsonator to stop impersonating:, (*6)

    @if (session('impersonator'))
      <a href="{{ url('/logout') }}"
          class="dropdown-item"
          onclick="event.preventDefault(); document.getElementById('end-personation-session-form').submit();"
      >
          End Impersonation Session
      </a>
      <form action="{{ route('impersonatees.destroy', auth()->user()) }}"
          method="POST"
          style="display: none;"
          id="end-personation-session-form"
      >
          {{ csrf_field () }}
          {{ method_field ('DELETE') }}
      </form>
    @else
      <a href="{!! route('logout') !!}"
          class="dropdown-item"
          onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
          Logout
      </a>
      <form method="POST"
          action="{{ route('logout') }}"
          accept-charset="UTF-8"
          id="logout-form"
          style="display:none;"
      >
          {{ csrf_field () }}
      </form>
    @endif
    

Customization

php artisan impersonator:publish --views

Credits

In large part prodded and inspired by LaraCasts' tutorial: https://laracasts.com/series/how-do-i/episodes/17. Thank you @JeffreyWay!, (*7)

The Versions

10/05 2017

0.1.0

0.1.0.0

Impersonate users in your Laravel 5.4+ app.

  Sources   Download

MIT

The Requires

  • php >=7.0.0

 

by GeneaLabs, LLC