Guest user library for Laravel

Maintainers

Details

github.com/jrseliga/pseudo

Source

Installs: 12 148

Dependents: 0

Suggesters: 0

Security: 0

Stars: 13

Watchers: 1

Forks: 6

v1.0.0-rc.1 2017-07-29 23:03 UTC

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