Package Data | |
---|---|
Maintainer Username: | glowdemon1 |
Maintainer Contact: | jseliga@agilesdesign.com (Justin Seliga) |
Package Create Date: | 2017-05-15 |
Package Last Update: | 2017-05-15 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2025-02-06 03:15:51 |
Package Statistics | |
---|---|
Total Downloads: | 18 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 0 |
Total Watchers: | 2 |
Total Forks: | 0 |
Total Open Issues: | 0 |
Guest user library for Laravel
pseudo adds the ability for guests permissions within Laravel's authentication functionality.
composer require agilesdesign/pseudo
'providers' => [
Pseudo\Providers\PseudoServiceProvider::class,
];
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
The only configuration this library requires out of the box is updating the driver
in your auth guard (config/auth.php) to pseudo
.
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
{
//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.
Gate::define('create-article', function ($user, $article) {
if($user instanceof Pseudo\Auth\Guest)
{
// logic for guest
}
else
{
// logic for authenticated
}
});