Files
CFDivePlatform/app/Models/AdminProfile.php
T
2025-05-11 03:45:17 +08:00

132 lines
2.5 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AdminProfile extends Model
{
use HasFactory;
/**
* 與模型關聯的資料表
*
* @var string
*/
protected $table = 'admin_profiles';
/**
* 可以被批量賦值的屬性
*
* @var array
*/
protected $fillable = [
'user_id',
'position',
'department',
'permissions',
];
/**
* 應該被轉換的屬性
*
* @var array
*/
protected $casts = [
'permissions' => '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 ?? [];
}
}