'array', ]; /** * 獲取擁有此管理員資料的用戶 */ public function user() { return $this->belongsTo(User::class); } /** * 檢查管理員是否擁有特定權限 * * @param string $permission * @return bool */ public function hasPermission($permission) { if (empty($this->permissions)) { return false; } return in_array($permission, $this->permissions); } /** * 添加權限給管理員 * * @param string $permission * @return void */ public function addPermission($permission) { $permissions = $this->permissions ?? []; if (!in_array($permission, $permissions)) { $permissions[] = $permission; $this->permissions = $permissions; $this->save(); } } /** * 移除管理員的權限 * * @param string $permission * @return void */ public function removePermission($permission) { if (empty($this->permissions)) { return; } $permissions = array_filter($this->permissions, function($p) use ($permission) { return $p !== $permission; }); $this->permissions = array_values($permissions); $this->save(); } /** * 設定多個權限 * * @param array $permissions * @return void */ public function setPermissions(array $permissions) { $this->permissions = $permissions; $this->save(); } /** * 清除所有權限 * * @return void */ public function clearPermissions() { $this->permissions = []; $this->save(); } /** * 獲取所有權限 * * @return array */ public function getPermissions() { return $this->permissions ?? []; } }