Laravel Prohibitions

Laravel Prohibitions stats

Downloads
2
Stars
0
Open Issues
0
Forks
0

View on GitHub →

Prohibit your models from execute an action in a way similar to spatie/laravel-permission.

Prohibit your models

Description

Laravel Prohibitions is a Laravel package that allows you to prohibit users from executing specific actions for a determined period of time.

Instead of relying on hard-coded checks or ad-hoc flags, this package introduces a sanction-based system where actions can be explicitly denied through well-defined rules.

The package also provides a Sanction model, which works as a preset of prohibited actions, making it easy to group multiple prohibitions under a single disciplinary rule — such as temporary bans, feature restrictions, or full account suspensions.

Installation

You can install the package via composer:

composer require kyrch/laravel-prohibitions

You can publish and run the migrations with:

php artisan vendor:publish --tag="laravel-prohibitions-migrations"
php artisan migrate

You can publish the config file with:

php artisan vendor:publish --tag="laravel-prohibitions-config"

Usage

Setup

Add the HasSanctions trait to your User model:

use Kyrch\Prohibition\Traits\HasSanctions;
 
class User extends Authenticatable
{
use HasSanctions;
}

You need to create your sanctions and prohibitions first. For example:

$prohibition = Prohibition::query()->create(['name' => 'update post']);
 
$sanction = Sanction::query()->create(['name' => 'posts']);
 
$prohibition->sanctions()->attach($sanction);

How to prohibit

Now you can use methods this packages provides, such as:

# Prohibit the user from updating any posts.
$user->prohibit('update post', now()->addWeek());
 
# Similar to roles, you can create a kind of "ban preset" that has a group of prohibitions.
$user->applySanction('posts', now()->addWeek());
 
# Check if user is prohibited from updating any post.
$user->isProhibitedFrom('update post');

It is recommended to use the isProhibitedFrom() method in your Gate::before or the before method in your policy class.

Events

There are two events: ModelProhibitionTriggered and ModelSanctionTriggered. If you don't want them enabled, you can disable it in the published config file.

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

Kyrch photo

21y | Self-taught developer | Discord: kyrch

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Kyrch Laravel Prohibitions Related Articles

Shift logo

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift
Harpoon: Next generation time tracking and invoicing logo

Harpoon: Next generation time tracking and invoicing

The next generation time-tracking and billing software that helps your agency plan and forecast a profitable future.

Harpoon: Next generation time tracking and invoicing
Acquaint Softtech logo

Acquaint Softtech

Acquaint Softtech offers AI-ready Laravel developers who onboard in 48 hours at $3000/Month with no lengthy sales process and a 100 percent money-back guarantee.

Acquaint Softtech
No Compromises logo

No Compromises

Joel and Aaron, the two seasoned devs from the No Compromises podcast, are now available to hire for your Laravel project. ⬧ Flat rate of $9500/mo. ⬧ No lengthy sales process. ⬧ No contracts. ⬧ 100% money back guarantee.

No Compromises
Typesense Search logo

Typesense Search

Typesense is an open source, blazing-fast search engine, optimized for helping you build delightful search experiences for your sites and apps. Natively integrated with Laravel Scout.

Typesense Search
Blastup logo

Blastup

Blastup provides social media enhancement services including buying Instagram likes, followers, and views, with features like instant delivery and a variety of packages to suit different needs.

Blastup