pinetco-dev/laravel-impersonate

Laravel Impersonate - A package that allows for easy and secure user impersonation within a Laravel application.

2.0.0 2024-03-07 10:19 UTC

This package is auto-updated.

Last update: 2024-11-08 07:07:12 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Laravel Impersonate is a package that allows you to easily and securely impersonate other users within a Laravel application. This can be particularly useful for debugging problems and generating scenarios after deploying your application to production.

Installation

You can install the package via composer:

composer require pinetco-dev/laravel-impersonate

Once you have installed the package, you can publish and run the migrations with the following command:

php artisan vendor:publish --tag="impersonate-migrations"
php artisan migrate

Usage

The package comes with a configuration file that allows you to customize its settings according to your needs. You can publish the configuration file using the following command:

php artisan vendor:publish --tag="impersonate-config"

After publishing the configuration file, you need to specify the URL where impersonate webhooks should hit your application. To do this, add the following line to your routes file:

Route::impersonation();

Middleware

If you want to protect specific pages against user impersonation, you can use the impersonate.protect middleware. For example:

Router::get('/payment', function() {
    echo "This page cannot be accessed by an impersonator.";
})->middleware('impersonate.protect');

Blade

There are some blade directives available that allow you to customize the behavior of your application depending on whether the user can impersonate or is being impersonated.

When the user can impersonate

@canImpersonate
    <a href="{{ route('impersonate', $user) }}">Login as {{ $user->name }}</a>
@endCanImpersonate

When the user is being impersonated

@impersonating
    <a href="{{ route('impersonate.leave', ['impersonate' => get_impersonate_session_value()]) }}">
        Leave impersonation mode
    </a>
@endImpersonating

Testing

You can run the tests using the following command:

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.