- Vào app tạo foder Services tạo file PermissionGateAndPolicyAccess.php
- Vào AuthServiceProvider.php sửa lại mã nguồn
<?php
namespace App\Providers;
use App\Product;
use App\Services\PermissionGateAndPolicyAccess;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
// 'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
$permissionGateAndPolicy = new PermissionGateAndPolicyAccess();
$permissionGateAndPolicy->setGateAndPolicyAccess();
}
}
- Vào PermissionGateAndPolicyAccess.php
<?php
namespace App\Services;
use Illuminate\Support\Facades\Gate;
class PermissionGateAndPolicyAccess{
public function setGateAndPolicyAccess(){
$this->defineGateCategory();
$this->defineGateMenu();
$this->defineGateSlider();
$this->defineGateSetting();
$this->defineGateUser();
$this->defineGateRole();
$this->defineGateProduct();
}
public function defineGateCategory(){
Gate::define('category_list','App\Policies\CategoryPolicy@view');
Gate::define('category_add','App\Policies\CategoryPolicy@create');
Gate::define('category_edit','App\Policies\CategoryPolicy@update');
Gate::define('category_delete','App\Policies\CategoryPolicy@delete');
}
public function defineGateMenu(){
Gate::define('menu_list','App\Policies\MenuPolicy@view');
Gate::define('menu_add','App\Policies\MenuPolicy@create');
Gate::define('menu_edit','App\Policies\MenuPolicy@update');
Gate::define('menu_delete','App\Policies\MenuPolicy@delete');
}
public function defineGateSlider(){
Gate::define('slider_list','App\Policies\SliderPolicy@view');
Gate::define('slider_add','App\Policies\SliderPolicy@create');
Gate::define('slider_edit','App\Policies\SliderPolicy@update');
Gate::define('slider_delete','App\Policies\SliderPolicy@delete');
}
public function defineGateSetting(){
Gate::define('setting_list','App\Policies\SettingPolicy@view');
Gate::define('setting_add','App\Policies\SettingPolicy@create');
Gate::define('setting_edit','App\Policies\SettingPolicy@update');
Gate::define('setting_delete','App\Policies\SettingPolicy@delete');
}
public function defineGateUser(){
Gate::define('user_list','App\Policies\UserPolicy@view');
Gate::define('user_add','App\Policies\UserPolicy@create');
Gate::define('user_edit','App\Policies\UserPolicy@update');
Gate::define('user_delete','App\Policies\UserPolicy@delete');
}
public function defineGateRole(){
Gate::define('role_list','App\Policies\RolePolicy@view');
Gate::define('role_add','App\Policies\RolePolicy@create');
Gate::define('role_edit','App\Policies\RolePolicy@update');
Gate::define('role_delete','App\Policies\RolePolicy@delete');
}
public function defineGateProduct(){
Gate::define('product_list','App\Policies\ProductPolicy@view');
Gate::define('product_add','App\Policies\ProductPolicy@create');
Gate::define('product_edit','App\Policies\ProductPolicy@update');
Gate::define('product_delete','App\Policies\ProductPolicy@delete');
}
}
- Muốn với tài khoản nào truy cập vào có những chức năng gì thì mới hiện chức năng đó:
- Vào admin => category sửa lại mã nguồn: (tương tự với các màn hình khác)
<!-- Stored in resources/views/child.blade.php -->
@extends('layouts.admin')
@section('title')
<title>Trang chủ</title>
@endsection
@section('content')
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
@include('partials.content-header',['name'=>'category', 'key'=>'List'])
<!-- /.content-header -->
<!-- Main content -->
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
@can('category_add')
<a href="{{ route('categories.create') }}" class="btn btn-success float-right mr-2">add</a>
@endcan
</div>
<div class="col-md-12">
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Tên danh mục sản phẩm</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
@foreach($categories as $category)
<tr>
<th scope="row">{{$category->id}}</th>
<td>{{ $category->name }}</td>
<td>
@can('category_edit')
<a href="{{ route('categories.edit', ['id'=>$category->id]) }}"
class="btn btn-default">Edit</a>
@endcan
@can('category_delete')
<a href="{{ route('categories.delete', ['id'=>$category->id]) }}"
class="btn btn-danger">Delete
</a>@endcan
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="col-md-12">
{{ $categories->links() }}
</div>
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</div>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
@endsection

0 Nhận xét