robbevw / pseudo
v1.0.0-alpha.1
2016-11-22 02:11 UTC
Requires
- php: 7.*
This package is not auto-updated.
Last update: 2024-09-20 20:11:03 UTC
README
Laravel 的访客用户库
描述
pseudo 为 Laravel 的认证功能增加了访客权限的能力。
安装
通过 composer 包管理器安装
composer require agilesdesign/pseudo
添加到提供者列表
'providers' => [ Pseudo\Providers\PseudoServiceProvider::class, ];
概览
与默认 Laravel 行为的比较
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
使用方法
该库默认只要求更新你的认证守护者(config/auth.php)中的 driver 为 pseudo。
当需要 Pseudo/Contracts/GuestContract 时,从 Laravel 的服务容器中解析出 Pseudo\Auth\Guest 的实例。
这个绑定在提供的 ServiceProvider 中注册
public function register() { $this->app->bind(GuestContract::class, Guest::class); }
你可以通过提供自己的实现 Pseudo/Contracts/GuestContract 的 GuestUser 类并重新绑定接口来覆盖它
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);
仍然可以对 Laravel 的 App\User 进行策略检查,因为 Pseudo\Auth\Guest 扩展了它。
示例
Gate::define('create-article', function ($user, $article) { if($user instanceof Pseudo\Auth\Guest) { // logic for guest } else { // logic for authenticated } });