robbevw/pseudo

Laravel 的访客用户库

v1.0.0-alpha.1 2016-11-22 02:11 UTC

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)中的 driverpseudo

当需要 Pseudo/Contracts/GuestContract 时,从 Laravel 的服务容器中解析出 Pseudo\Auth\Guest 的实例。

这个绑定在提供的 ServiceProvider 中注册

public function register()
{
    $this->app->bind(GuestContract::class, Guest::class);
}

你可以通过提供自己的实现 Pseudo/Contracts/GuestContractGuestUser 类并重新绑定接口来覆盖它

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
    }
});