1. Go to this page and download the library: Download epsjv/acl library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
public function run()
{
// $this->call(UsersTableSeeder::class);
$this->call(AclPapelTableSeeder::class);
$this->call(AclPermissaoTableSeeder::class);
$this->call(AclPapelUserTableSeeder::class);
$this->call(AclPapelPermissaoTableSeeder::class);
}
php artisan migrate --seed
namespace App\Providers;
use EPSJV\Acl\Traits\MakeAuthorizations; // Importar a Trait MakeAuthorizations do pacote
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
use MakeAuthorizations;
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
User::class => 'EPSJV\Acl\Policies\UserPolicy', // Registrar a policy
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->makeAuthorizations(); // Invocar o método makeAuthorizations
}
}
use EPSJV\Acl\Traits\HasPapeis;
use EPSJV\Acl\Traits\WithPapeis;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable, HasPapeis, WithPapeis;
}
/**
* Verifica se a permission encontrada está contida na lista de permissions associada ao papel do usuário
*
* @param Permissao $permissao
* @return true
*
* @example rota - Para usar na rota, basta chamar uma middleware, passando a chave 'can' e o nome da permission que deseja autorizar
*
* Route::get('edit/{curso}', 'CursoController@edit')->name('curso.edit')->middleware('can:editar_curso');
*
*/
/**
* Verifica se a permission encontrada está contida na lista de permissions associada ao papel do usuário
*
* @param Permissao $permissao
* @return true
*
* @example controller - Para usar no controller, basta chamar o método authorize no início de cada action, passando o nome da permission e o $model
*
* public function edit(Curso $curso)
* {
* $this->authorize('editar_curso', $curso);
* }
*/
/**
* Verifica se a permission encontrada está contida na lista de permissions associada ao papel do usuário
*
* @param Permissao $permissao
* @return true
*
* @example view - Para usar na view blade, é necessário envolver o trecho de código que deseja autorizar
* com o nome da permission usando a facade @can ou @cannot
*
* @can('editar_curso', $cursos)
* {{-- código aqui --}}
* @endcan
*/
namespace App\Traits;
use App\User;
use EPSJV\Acl\Permissao;
use Illuminate\Support\Facades\Gate;
trait MakeAuthorizations
{
public function makeAuthorizations()
{
$permissoes = Permissao::with('papeis')->get();
foreach ($permissoes as $permissao) {
Gate::define($permissao->nome, function(User $user) use ($permissao) {
return $permissao->papeis->pluck('id')->contains(session('session_papel_id'));
});
}
}
}
use EPSJV\Acl\Traits\MakeAuthorizations;
use App\Traits\MakeAuthorizations;
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.