spotonlive / sl-assertions
Assertions for Laravel 5.1
Installs: 1 693
Dependents: 0
Suggesters: 1
Security: 0
Stars: 2
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: >=5.4.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- laravel/framework: ~5.1
- phpmd/phpmd: 1.4.*
- phpunit/phpunit: ~4.0
- squizlabs/php_codesniffer: 2.*
This package is not auto-updated.
Last update: 2024-10-26 18:59:56 UTC
README
THIS PACKAGE IS UNDER DEVELOPMENT
Configuration
Installation
Run $ composer require spotonlive/sl-assertions
config/app.php
Insert the provider and helper alias into your application configuration
'providers' => [ \SpotOnLive\Assertions\Providers\Services\AssertionServiceProvider::class, \SpotOnLive\Assertions\Providers\Helpers\AssertionHelperProvider::class, ] 'aliases' => [ 'AssertionHelper' => \SpotOnLive\Assertions\Facades\Helpers\AssertionHelperFacade::class, ]
Configuration
run $ php artisan vendor:publish
to create the configuration file.
A configuration file is now available in config/assertions.php
.
Assertions
To create new examples create a new assertion file implementing the assertion interface. For example:
EditAssertion.php
<?php namespace App\Assertions\Users; use SpotOnLive\Assertions\AssertionInterface; use App\Entities\User; class EditAssertion implements AssertionInterface { /** * @param User $user * @param array $data * @return bool */ public function assert($user, array $data = []) { /** @var User $userToEdit */ $userToEdit = $data['user']; return $user == $userToEdit || $user->hasRole(['superadmin', 'admin']); } }
And then register the assertion in your configuration file:
config/assertions.php
<?php return [ 'users.edit' => \App\Assertions\Users\EditAssertion::class, ];
Usage
Service
Use the assertion service by injecting AssertionService
.
app::make('AssertionService')
Example:
<?php namespace App\Controllers; use \SpotOnLive\Assertions\Services\AssertionServiceInterface; class Controller { /** @var AssertionServiceInterface **/ protected $assertionService; public function __construct(AssertionServiceInterface $assertionService) { $this->assertionService = $assertionService; } public function admin() { if (!$this->assertionService->isGranted('admin.page', Auth::user())) { return redirect()->route('not-granted'); } return view('admin.page'); } }
Helper
Use the AssertionHelper
directly in your views.
Example: view.blade.php
@if(AssertionHelper::isGranted('user.edit', Auth::user(), ['user' => $user])) <a href="{{URL::route('user.edit')}}">{{_('Edit user')}}</a> @endif