https://github.com/flightphp/permissions
Library for managing permissions in Flight Applications
https://github.com/flightphp/permissions
Last synced: 9 months ago
JSON representation
Library for managing permissions in Flight Applications
- Host: GitHub
- URL: https://github.com/flightphp/permissions
- Owner: flightphp
- License: mit
- Created: 2024-06-04T05:23:09.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-22T04:14:49.000Z (about 1 year ago)
- Last Synced: 2025-04-15T01:54:32.499Z (9 months ago)
- Language: PHP
- Size: 7.81 KB
- Stars: 7
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Flight Permissions Plugin
[](https://packagist.org/packages/flightphp/permissions)
[](https://packagist.org/packages/flightphp/permissions)
[](https://packagist.org/packages/flightphp/permissions)
[](https://packagist.org/packages/flightphp/permissions)
Permissions are an important part to any application. Even in a RESTful API you'll need to check that the API key has permission to perform the action requested. In some cases it makes sense to handle authentication in a middleware, but in other cases, it's more helpful to have a standard set of permissions.
This library follows a CRUD based permissions systems. See [basic example](#basic-example) for example on how this is accomplished.
## Basic Example
Let's assume you have a feature in your application that checks if a user is logged in. You can create a permissions object like this:
```php
// index.php
require 'vendor/autoload.php';
// some code
// then you probably have something that tells you who the current role is of the person
// likely you have something where you pull the current role
// from a session variable which defines this
// after someone logs in, otherwise they will have a 'guest' or 'public' role.
$current_role = 'admin';
// setup permissions
$permission = new \flight\Permission($current_role);
$permission->defineRule('loggedIn', function($current_role) {
return $current_role !== 'guest';
});
// You'll probably want to persist this object in Flight somewhere
Flight::set('permission', $permission);
```
Then in a controller somewhere, you might have something like this.
```php
has('loggedIn')) {
// do something
} else {
// do something else
}
}
}
```
You can also use this to track if they have permission to do something in your application.
For instance, if your have a way that users can interact with posting on your software, you can
check if they have permission to perform certain actions.
```php
$current_role = 'admin';
// setup permissions
$permission = new \flight\Permission($current_role);
$permission->defineRule('post', function($current_role) {
if($current_role === 'admin') {
$permissions = ['create', 'read', 'update', 'delete'];
} else if($current_role === 'editor') {
$permissions = ['create', 'read', 'update'];
} else if($current_role === 'author') {
$permissions = ['create', 'read'];
} else if($current_role === 'contributor') {
$permissions = ['create'];
} else {
$permissions = [];
}
return $permissions;
});
Flight::set('permission', $permission);
```
Then in a controller somewhere...
```php
class PostController {
public function create() {
$permission = Flight::get('permission');
if ($permission->can('post.create')) {
// do something
} else {
// do something else
}
}
}
```
See how much fun this is? Let's install it and get started!
## Installation
Simply install with Composer
```php
composer require flightphp/permissions
```
## Documentation
Head over to the [documentation page](https://docs.flightphp.com/awesome-plugins/permissions) to learn more about usage and how cool this thing is! :)
## License
MIT