Skip to content

Commit

Permalink
【システム】BcBaserHelper->getLinkでPermissionsServiceに渡されるURLが正しくない fix #2608
Browse files Browse the repository at this point in the history
  • Loading branch information
ryuring committed Jul 25, 2023
1 parent ef422e4 commit 20a696e
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
1 change: 1 addition & 0 deletions plugins/baser-core/src/Service/PermissionsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,7 @@ private function checkGroup(
*/
public function isAuthorized(int $permissionType, string $url, string $method, array $groupPermission)
{
list($url) = explode('?', $url);
$ret = ($permissionType === 2);
foreach($groupPermission as $permission) {
$pattern = $this->convertRegexUrl($permission->url);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -332,17 +332,17 @@ public function testIsAuthorized()
{
$this->truncateTable('permissions');

// ホワイトリスト
// ブラックリスト
$this->assertTrue($this->PermissionsService->isAuthorized(2, '/', 'GET', []));
$this->assertTrue($this->PermissionsService->isAuthorized(2, '/', 'POST', []));
$this->assertTrue($this->PermissionsService->isAuthorized(2, '/', 'PUT', []));
$this->assertTrue($this->PermissionsService->isAuthorized(2, '/', 'PATCH', []));
$this->assertTrue($this->PermissionsService->isAuthorized(2, '/', 'DELETE', []));

// ブラックリスト(データなし)
// ホワイトリスト(データなし)
$this->assertFalse($this->PermissionsService->isAuthorized(1, '/', 'GET', []));

// ブラックリスト(/ に対し 表示 のみ許可)
// ホワイトリスト(/ に対し 表示 のみ許可)
PermissionFactory::make(['url' => '/', 'method' => 'GET', 'auth' => true])->persist();
$permissions = PermissionFactory::find()->all()->toArray();
$this->assertTrue($this->PermissionsService->isAuthorized(1, '/', 'GET', $permissions));
Expand All @@ -351,7 +351,7 @@ public function testIsAuthorized()
$this->assertFalse($this->PermissionsService->isAuthorized(1, '/', 'PATCH', $permissions));
$this->assertFalse($this->PermissionsService->isAuthorized(1, '/', 'DELETE', $permissions));

// ブラックリスト(/ に対し表示と編集を許可)
// ホワイトリスト(/ に対し表示と編集を許可)
// ※ 現在、* と挙動が同じになっている。DELETE を * の場合だけ許可するか検討が必要
$this->truncateTable('permissions');
PermissionFactory::make(['url' => '/', 'method' => 'POST', 'auth' => true])->persist();
Expand All @@ -362,7 +362,7 @@ public function testIsAuthorized()
$this->assertTrue($this->PermissionsService->isAuthorized(1, '/', 'PATCH', $permissions));
$this->assertTrue($this->PermissionsService->isAuthorized(1, '/', 'DELETE', $permissions));

// ブラックリスト(/ に対し全て許可)
// ホワイトリスト(/ に対し全て許可)
$this->truncateTable('permissions');
PermissionFactory::make(['url' => '/', 'method' => '*', 'auth' => true])->persist();
$permissions = PermissionFactory::find()->all()->toArray();
Expand All @@ -371,6 +371,9 @@ public function testIsAuthorized()
$this->assertTrue($this->PermissionsService->isAuthorized(1, '/', 'PUT', $permissions));
$this->assertTrue($this->PermissionsService->isAuthorized(1, '/', 'PATCH', $permissions));
$this->assertTrue($this->PermissionsService->isAuthorized(1, '/', 'DELETE', $permissions));

// ホワイトリスト(クエリパラメーター付き)
$this->assertTrue($this->PermissionsService->isAuthorized(1, '/?test=1', 'GET', $permissions));
}

/**
Expand Down

0 comments on commit 20a696e

Please sign in to comment.