Skip to content

Jeroen-G/GuestPass

Repository files navigation

GuestPass for Laravel

Latest Version on Packagist Build Status Quality Score

Installation

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:

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

Usage

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.

GuestPass::getKeysOf($user);

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).

GuestPass::getGuestPass($key);

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.

Changelog

Please see changelog.md for what has changed recently.

Contributing

Please see contributing.md for details.

Credits

License

The EU Public License. Please see license.md for more information.