Flickr-like Guest Pass system for Laravel.

v1.0 2017-08-16 14:01 UTC

This package is auto-updated.

Last update: 2024-06-25 06:36:54 UTC


GuestPass for Laravel

Latest Version on Packagist Build Status Quality Score


Via Composer

$ composer require jeroen-g/guestpass

If you run Laravel 5.5, the service provider and facade are autodiscovered. If not then add them manually:

// ...
'GuestPass' => JeroenG\GuestPass\GuestPassFacade::class,


To use Guest Passes, you will need two models: one that is the owner granting guest access (typically a user) and another that is the object to which access is being granted. In the examples below, a photo is used for this.

Creating new Guest Passes

Requires the owner and object models.

GuestPass::create($user, $photo);

Returns true if successfull, false otherwise.

Retrieving Guest Pass data

A Guest Pass contains the following data: owner_model, owner_id; object_model, object_id; key (unique); view (nullable).

Getting all keys of the owner

Requires the owner model.


Returns a collection of all Guest Pass keys and their corresponding data is attached as well.

Finding a Guest Pass for corresponding owner and object

Requires the owner and object model.

GuestPass::findGuestPass($user, $photo);

Returns an Eloquent model (or throws an exception).

Get one specific Guest Pass by its key

Requires the key (string).


Returns an Eloquent model (or throws an exception).

Checking ownership

Requires the owner and Guest Pass models.

GuestPass::isOwner($user, $guestpass);

Returns true or false.

Access controller

The package ships with a controller that checks for the /gp/{owner id}/{key} route and when valid it returns the view (404 otherwise). Each view is passed the object and the Guest Pass models. The views will be sought in the resources/views/guests/ directory.

Custom views

When creating a Guest Pass it is possible to pass a custom view as the third parameter

GuestPass::create($user, $photo, 'album');

In this case, the access controller will not use photo.blade.php (which would be the default) but album.blade.php but the directory remains the same and it is not necessary to add the file extension.


Please see for what has changed recently.


Please see for details.



The EU Public License. Please see for more information.