## Laravel Routes Authorization Library

View Documentation

# YesAuthority

YesAuthority is flexible authorization system for Laravel, It checks the `route` permission to access a certain portion of the site or application. To add Permissions `User-based`, `Role-based`, `Conditionally`. It uses `authority.checkpost` middleware for filter permission of current accessing route, Under this middleware checked every permission of the user login.

## Installation

Require this package in your `composer.json` or install it by running:

        composer require livelyworks/laravel-yes-authority

Now, insert into your `config/app.php`.

        "provider" => [
            LivelyWorks\YesAuthority\YesAuthorityServiceProvider::class
        ];

Now, run this command after that `config/yes-authority.php` and `app/Http/Middleware/YesAuthorityCheckpostMiddleware.php` files are publish.

        php artisan vendor:publish  --tag="yesauthority"

Now, insert into your `app/Http/Kernel.php`.

        protected $routeMiddleware = [
            'authority.checkpost'  => \App\Http\Middleware\YesAuthorityCheckpostMiddleware::class
        ];

Use `authority.checkpost` middleware for handle permission base routes.

        Route::group(['middleware' => 'authority.checkpost'], function () {
            // Place all those routes here which needs authentication and authorization.
        });

Now, the basic setup is ready you need to configure rules of permissions using `config/yes-authority`.

## Configuration

The structure of permissions given below, but it's highly recommended to read more on docs`.

        [
            'allow' => ['*'], // Allowed permission to user. Priority is less than deny.
            'deny'  => ['temp1'], // Deny permission to user. Priority is higher than allow.
        ]

        canAccess('temp1');
        // false

## Usage - Helpers

- ##### canAccess($accessId = null);

  Check the access, By default it check current route and return response in boolean value.

        canAccess('temp1');
        // true or false

- ##### canPublicAccess($accessId = null); - `Authentication not required`

  Check the public access, By default it check current route and return response in boolean value.

        canPublicAccess();
        // true or false

## Usage - Facade

- ##### YesAuthority::check($accessId = null, $requestForUserId = null)

  Check the access of `$accessId`, By default it check current route and return response in boolean value, And it can check access of perticular user by passing user id `($requestForUserId)` parameter.

        YesAuthority::check('temp1');
        // true or false

- ##### YesAuthority::isPublicAccess($accessId = null); - `Authentication not required`

  Check the access of `$accessId`, By default it check current route and return response in boolean value.

        YesAuthority::isPublicAccess('temp1');
        // true or false

## Usage - Directives

- ##### @canAccess($accessId = null);

  Check the access, By default it check current route and return response in boolean value.

        @canAccess()
           // your logic here.
        @endAccess;

- ##### @canPublicAccess($accessId = null); - `Authentication not required`

  Check the public access, By default it check current route and return response in boolean value.

        @canPublicAccess()
           // your logic here.
        @endAccess;