财务台账:允许管理员编辑台账 #429
@ -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', '财务台账管理员')),
|
||||
|
||||
46
tests/Feature/Business/FinanceLedgerAccessTest.php
Normal file
46
tests/Feature/Business/FinanceLedgerAccessTest.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature\Business;
|
||||
|
||||
use App\Models\Auth\Role;
|
||||
use App\Models\Auth\User;
|
||||
use App\Utilities\FinanceLedgerAccess;
|
||||
use Tests\Feature\FeatureTestCase;
|
||||
|
||||
class FinanceLedgerAccessTest extends FeatureTestCase
|
||||
{
|
||||
public function test_super_admin_and_admin_can_edit_finance_ledger_but_regular_users_cannot(): void
|
||||
{
|
||||
$regularUser = $this->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;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user