agilesdesign / pseudo
Guest user library for Laravel
Requires
- php: 7.*
Requires (Dev)
- laravel/laravel: ^5.4
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^6.2
This package is auto-updated.
Last update: 2024-11-22 22:46:47 UTC
README
Guest user library for Laravel
Description
pseudo adds the ability for guests permissions within Laravel's authentication functionality.
Installation
Include through composer
composer require agilesdesign/pseudo
Add to provider list
'providers' => [ Pseudo\Providers\PseudoServiceProvider::class, ];
Overview
Comparison to default Laravel behavior
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
Configuration
Update Guard Driver(s)
config/auth.php
'guards' => [ // To use with web guard 'web' => [ 'driver' => 'pseudo', 'provider' => 'users', ], // To use with api guard 'api' => [ 'driver' => 'pseudo-token', 'provider' => 'users', ], ],
Register Service Provider
Manually registering the ServiceProvider is only necessary if your Laravel application is version 5.4.* or before.
config/app.php
'providers' => [ /* * Package Service Providers... */ \Pseudo\Providers\PseudoServiceProvider::class, ],
Usage
An instance of Pseudo\Auth\Guest
is resolved from Laravel's Service Container when Pseudo/Contracts/GuestContract
is requested.
This binding is registered in the supplied ServiceProvider:
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:
class GuestUser extends User implements GuestContract { //You can override any attribute by using Eloquent Accessors 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.
Example
Gate::define('create-article', function ($user, $article) { if($user instanceof Pseudo\Auth\Guest) { // logic for guest } else { // logic for authenticated } });