49 lines
1.2 KiB
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);
|
|
}
|
|
}
|