Guest user library for Laravel
Guest user library for Laravel, (*1)
pseudo adds the ability for guests permissions within Laravel's authentication functionality., (*2)
composer require agilesdesign/pseudo
, (*3)
'providers' => [ Pseudo\Providers\PseudoServiceProvider::class, ];
Comparison to default Laravel behavior, (*4)
Auth::check() // true if User false if Pseudo/Contracts/GuestContract
Auth::user() // returns instance of Pseudo/Contracts/GuestContract instead of null if no user found
@can() // no longer automatically fails if not authenticated, allows Gate to be checked
The only configuration this library requires out of the box is updating the driver
in your auth guard (config/auth.php) to pseudo
., (*5)
An instance of Pseudo\Auth\Guest
is resolved from Laravel's Service Container when Pseudo/Contracts/GuestContract
is requested., (*6)
This binding is registered in the supplied ServiceProvider:, (*7)
public function register() { $this->app->bind(GuestContract::class, Guest::class); }
You may override this by providing your own GuestUser
class that implements Pseudo/Contracts/GuestContract
and rebinding the interface:, (*8)
class GuestUser extends User implements GuestContract { //Here you amy overload anything to be specific to your guest user public function getNameAttribute(){ return 'Guest User'; } }
this->app->bind(\Pseudo\Contracts\GuestContract::class, \App\GuestUser::class);
Policy checks can still be type-hinted for Laravel's App\User
since Pseudo\Auth\Guest
extends it., (*9)
Gate::define('create-article', function ($user, $article) { if($user instanceof Pseudo\Auth\Guest) { // logic for guest } else { // logic for authenticated } });