## 定義授權
路徑:app/Policies
示例:
**定義授權**
app/Policies/BlockPolicy.php
```php
namespace App\Policies;
use App\Models\User;
use App\Models\Block;
/**
* 區塊授權策略
*
* Class BlockPolicy
* @package Wanglelecc\Laracms\Policies
*/
class BlockPolicy extends Policy
{
public function index(User $user, Block $block)
{
return $user->can('manage_block');
}
public function create(User $user, Block $block)
{
return false;
}
public function update(User $user, Block $block)
{
return $user->can('manage_block');
}
public function destroy(User $user, Block $block)
{
return false;
}
}
```
> 可通過 Laravel 提供的 `php artisan make:policy` 自動生成;檢查的權限節點需要預先添加。
**注冊授權**
在 `AuthServiceProvider` 服務提供者的 policies 屬性中:
```php
.
.
.
protected $policies = [
.
.
.
\App\Models\Block::class => \App\Policies\BlockPolicy::class,
.
.
.
]
.
.
.
```
**使用授權**
一般在控制器中使用
BlocksController:
```php
.
.
.
public function create(Block $block, Request $request){
# 調用授權
$this->authorize('create', $block);
$type = config('blocks.types.'.$request->type) ? $request->type : '';
return backend_view('blocks.create_and_edit', compact('block', 'type'));
}
.
.
.
```