elrod/laravel-multitenancy-impersonate

There is no license information available for the latest version (v1.0.0) of this package.

Laravel Multitenancy Impersonation from landlord to tenant

v1.0.0 2022-02-23 22:22 UTC

This package is not auto-updated.

Last update: 2024-05-03 07:50:40 UTC


README

Laravel multitenancy impersonation from landlord to tenant.

This package is made to be used with Spatie Laravel Multitenancy.

Installation

You can install the package via composer:

composer require elrod/laravel-multitenancy-impersonate

Publish Config and Migrations

php artisan vendor:publish

You will see list of things to publish: Image text Select what you want to post by giving the package index number

Usage

Landlord Controller

The Landlord controller creates the token and redirects to the tenant for automatic login.

The redirectTenant method can be used after creating a tenant

use elrod\MultitenancyImpersonate\Traits\CanImpersonate;

class ImpersonateController
{
    use CanImpersonate;

    public function redirectTenant($id)
    {
        $tenant = Tenant::find($id);
        
        $redirect_url = "http://{$tenant->domain}/admin";

        $token = $this->createToken($tenant,auth()->user(),$redirect_url);

        $this->impersonate($tenant,$token->token,auth()->user());
            
        $tenant_url = "http://{$tenant->domain}/admin/impersonate";

        return redirect("{$tenant_url}/{$token->token}");
    }

}

Create the routes

Route::get('/admin/impersonate/{token}', function ($token) {

    $impersonate = ImpersonateToken::where('token',$token)->first();

    $user = User::find($impersonate->user_id);

    Auth::login($user);

    return redirect()->route('admin');

});

Route::middleware(['auth:sanctum', 'verified'])->get('/admin', function () {
    return 'Hello World';
})->name('admin');

Credits

License

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