From 73b2681e94bba684cb2bc7311f813fb1c0901ad4 Mon Sep 17 00:00:00 2001 From: shanshi <3316401569@qq.com> Date: Wed, 21 Oct 2026 14:25:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A2=E5=8A=A1=E5=8F=B0=E8=B4=A6=EF=BC=9A?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E7=AE=A1=E7=90=86=E5=91=98=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Utilities/FinanceLedgerAccess.php | 4 ++ .../Business/FinanceLedgerAccessTest.php | 46 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 tests/Feature/Business/FinanceLedgerAccessTest.php diff --git a/app/Utilities/FinanceLedgerAccess.php b/app/Utilities/FinanceLedgerAccess.php index 68ed953e..194ca1c8 100644 --- a/app/Utilities/FinanceLedgerAccess.php +++ b/app/Utilities/FinanceLedgerAccess.php @@ -21,6 +21,10 @@ class FinanceLedgerAccess 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', '财务台账管理员')), diff --git a/tests/Feature/Business/FinanceLedgerAccessTest.php b/tests/Feature/Business/FinanceLedgerAccessTest.php new file mode 100644 index 00000000..7d69a700 --- /dev/null +++ b/tests/Feature/Business/FinanceLedgerAccessTest.php @@ -0,0 +1,46 @@ +account('user'); + $admin = $this->account('admin'); + $superAdmin = $this->account('super_admin'); + + $this->assertFalse(FinanceLedgerAccess::canEditMapping($regularUser)); + $this->assertFalse(FinanceLedgerAccess::canEditAccountStatus($regularUser)); + $this->assertFalse(FinanceLedgerAccess::canEditAccountType($regularUser)); + + $this->assertTrue(FinanceLedgerAccess::canEditMapping($admin)); + $this->assertTrue(FinanceLedgerAccess::canEditAccountStatus($admin)); + $this->assertTrue(FinanceLedgerAccess::canEditAccountType($admin)); + + $this->assertTrue(FinanceLedgerAccess::canEditMapping($superAdmin)); + $this->assertTrue(FinanceLedgerAccess::canEditAccountStatus($superAdmin)); + $this->assertTrue(FinanceLedgerAccess::canEditAccountType($superAdmin)); + } + + private function account(string $role): User + { + $name = 'finance-ledger-access-' . $role . '-' . User::count(); + $user = User::create([ + 'name' => $name, + 'email' => $name . '@example.test', + 'password' => 'fixture-only-password', + 'enabled' => true, + 'locale' => 'zh-CN', + 'landing_page' => 'dashboard', + ]); + $user->roles()->attach(Role::where('name', $role)->firstOrFail()->id); + + return $user; + } +} -- 2.47.2