An open API service indexing awesome lists of open source software.

https://github.com/mooxphp/permission

[READ-ONLY] Roles and Permissions for Filament, Moox and Laravel
https://github.com/mooxphp/permission

Last synced: 11 months ago
JSON representation

[READ-ONLY] Roles and Permissions for Filament, Moox and Laravel

Awesome Lists containing this project

README

          

![Moox Permission](https://github.com/mooxphp/moox/raw/main/art/banner/permission.jpg)

# Moox Permission

This is my package permission

## Quick Installation

These two commmands are all you need to install the package:

```bash
composer require moox/permission
php artisan mooxpermission:install
```

Curious what the install command does? See manual installation below.

## What it does

Here are some things missing, like an overview with screenshots about this package, or simply a link to the package's docs.

## Manual Installation

Instead of using the install-command `php artisan mooxpermission:install` you are able to install this package manually step by step:

```bash
// Publish and run the migrations:
php artisan vendor:publish --tag="permission-migrations"
php artisan migrate

// Publish the config file with:
php artisan vendor:publish --tag="permission-config"
```

## Using the Default Policy

The default policy handles all defaults for Moox Resources in Filament:

```php
hasPermissionTo('view all');
}

public function editAll(User $user)
{
return $user->hasPermissionTo('edit all');
}

public function deleteAll(User $user)
{
return $user->hasPermissionTo('delete all');
}

public function create(User $user)
{
return $user->hasPermissionTo('create');
}

public function viewOwn(User $user, $model)
{
return $user->hasPermissionTo('view own') && $model->user_id === $user->id;
}

public function editOwn(User $user, $model)
{
return $user->hasPermissionTo('edit own') && $model->user_id === $user->id;
}

public function deleteOwn(User $user, $model)
{
return $user->hasPermissionTo('delete own') && $model->user_id === $user->id;
}

public function emptyTrash(User $user)
{
return $user->hasPermissionTo('empty trash');
}

public function changeSettings(User $user)
{
return $user->hasPermissionTo('change settings');
}
}
```

The default policy is used by most Moox packages.

If you use Moox Builder to create a package, the default policy works out of the box and all default permissions are pre-configured to sane defaults.

## Extending the Default Policy

If you need to create a policy for a specific resource, you can extend the DefaultPolicy and override any methods where custom logic is required.

```php
use Moox\Permission\Policies\DefaultPolicy;

class ItemPolicy extends DefaultPolicy
{
// Custom logic for editing own items
public function editOwn(User $user, $item)
{
// Maybe add additional checks here
return parent::editOwn($user, $item);
}

// Additional custom methods if needed
}

```

You then need to register the policy in the published Moox Core config (/config/core.php):

```php
return [
'packages' => [
'audit' => [
'package' => 'Moox Audit',
'models' => [
'Audit' => [
'policy' => \Moox\Audit\Policies\AuditPolicy::class,
],
],
],
// more packages
```

## Changelog

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

## Security Vulnerabilities

Please review [our security policy](https://github.com/mooxphp/moox/security/policy) on how to report security vulnerabilities.

## Credits

- [All Contributors](../../contributors)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.