Download the PHP package scif/laravel-pretend without Composer
On this page you can find all versions of the php package scif/laravel-pretend. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download scif/laravel-pretend
More information about scif/laravel-pretend
Files in scif/laravel-pretend
Package laravel-pretend
Short Description Symfony style impersonation for the Laravel Framework.
License MIT
Informations about the package laravel-pretend
Impersonate package for the Laravel Framework
На русском
What is that?
Laravel has no default impersonation wrapper for low-level methods. This package highly inspired by Symfony impersonation which looks much more flexible rather than several inspected Laravel implementations. Package fully implement GET-parameter-driven behavior. Also, this package does not restrict you in using custom user providers (for instance, if you use Propel), guards and can be used with Twig as view templater. Some ideas inspired by existing impersonation packages for Laravel (:+1: thanks to those authors!).
Installation
Add service provider to config/app.php
after Laravel service providers but before your own:
Add middleware handling impersonation:
-
to your
Kernel
class:This way is most common and covers all cases I can assume.
- or by any suitable methods for some especial cases.
The latest step of installation is a configuring authorization gate. Package bundled with gate called impersonate
.
This gate checks if your user model implements Scif\LaravelPretend\Interfaces\Impersonable
and check method canImpersonate(): bool
.
So your model can looks like:
:point_up: You can use out of box implementation of this gate or override it in your own AuthServiceProvider. You can override name of gate used to check permissions in configuration as well.
Configuration
Configuration file can be easily copied to your project by vendor:publish
command:
Configuration consist of just two options:
user_identifier
— this string will be used as name of field using to retrieve user object from user provider (methodretrieveByCredentials()
). The default valueemail
makes your impersonation urls beauty:[email protected]
is much clear rather than?_switch_user=43
. But it's up to youauth_check
— this string is a name of Gate used to check ability of user to impersonate. In fact the default Gate could be easily overriden inAuthServiceProvider
of your application.
Usage
As mentioned above, this package repeats Symfony style of using GET-parameters to manage impersonation.
Blade using is pretty straightforward:
And here is a simple example using in twig:
Events
On entering and exitting impersontaion this package raises events: Scif\LaravelPretend\Event\Unimpersontated
.
Name of events is their fully qualified class names, so simplest event listener will looks like:
Forbid impersonation
You can use bundled ForbidImpersonation
middleware to forbid using of impersonation for some route groups, routes or controllers.
PHP7? Ugh! Wtf??
Yes, PHP7 is awesome! So, if you want to use it with PHP5 — create an issue and I will think about a separate branch or other suitable solution.
Contribution
Any type of contributions is highly appreciated. Don't be a shy — help this project become even better!