CaiWuXiTong/app/Utilities/FinanceLedgerAccess.php

49 lines
1.2 KiB
PHP

<?php
namespace App\Utilities;
use App\Models\Auth\User;
class FinanceLedgerAccess
{
/**
* 账户映射的写权限:超级管理员,或配置中的财务台账管理员角色。
* 页面查看权限仍由 SidebarPermissions 的页面键控制。
*/
public static function canEditMapping(?User $user = null): bool
{
if (SystemAccess::isSuperAdmin($user)) {
return true;
}
$user ??= user();
if (! $user) {
return false;
}
if (SystemAccess::roleName($user) === SystemAccess::ADMIN) {
return true;
}
$roles = array_values(array_filter(array_map(
'trim',
explode(',', (string) config('finance_ledger.mapping_editor_roles', '财务台账管理员')),
)));
return in_array(SystemAccess::roleName($user), $roles, true);
}
/**
* 账户状态、账户类型与账户映射使用同一组财务台账编辑角色。
*/
public static function canEditAccountStatus(?User $user = null): bool
{
return self::canEditMapping($user);
}
public static function canEditAccountType(?User $user = null): bool
{
return self::canEditMapping($user);
}
}