Skip to content

Commit dbe0813

Browse files
More sandbox code
1 parent d3a1767 commit dbe0813

File tree

7 files changed

+85
-11
lines changed

7 files changed

+85
-11
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Kirby\Permissions\Roles;
4+
5+
use Kirby\Permissions\KirbyPermissions;
6+
7+
class ClientRolePermissions extends KirbyPermissions
8+
{
9+
public static function make(): static
10+
{
11+
$permissions = static::from(true);
12+
13+
$permissions->file->delete = false;
14+
$permissions->language->delete = false;
15+
$permissions->languageVariable->delete = false;
16+
$permissions->page->delete = false;
17+
$permissions->user->delete = false;
18+
19+
return $permissions;
20+
}
21+
}

src/Permissions/Sandbox/Page.php

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,12 @@ public function isHomePage(): bool
2424
public function permissions(User|null $user = null): PagePermissions
2525
{
2626
// get the default page permissions for the user
27-
$permissions = User::ensure($user)->role()->permissions()->page();
27+
$role = User::ensure($user)->role();
28+
$permissions = $role->permissions()->page();
2829

29-
// the unauthenticated user must not get any additional positive permissions later by accident
30-
if ($user->role()->isNobody() === true) {
31-
return $permissions::from(false);
32-
}
33-
34-
// the kirby superuser will always get full access
35-
if ($user->role()->isKirby() === true) {
36-
return $permissions::from(true);
30+
// the permissions for the generic power or weak users cannot be adjusted
31+
if ($role->isNobody() === true || $role->isKirby() === true) {
32+
return $permissions;
3733
}
3834

3935
// apply page-specific rules and permissions

src/Permissions/Sandbox/Role.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ public function name(): string
3434
public function permissions(): KirbyPermissions
3535
{
3636
return match (true) {
37-
$this->isAdmin() => KirbyPermissions::forAdmin(),
38-
$this->isNobody() => KirbyPermissions::forNobody(),
37+
$this->isAdmin() => (new KirbyPermissions())->wildcard(true),
38+
$this->isKirby() => (new KirbyPermissions())->wildcard(true),
39+
$this->isNobody() => (new KirbyPermissions())->wildcard(false),
3940

4041
// load permissions from role/user blueprint here
4142
default => new KirbyPermissions()
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
use Kirby\Permissions\KirbyPermissions;
4+
5+
class ClientRolePermissions extends KirbyPermissions
6+
{
7+
public static function factory(): static
8+
{
9+
$permissions = static::from(true);
10+
11+
$permissions->file->delete = false;
12+
$permissions->language->delete = false;
13+
$permissions->languageVariable->delete = false;
14+
$permissions->page->delete = false;
15+
$permissions->user->delete = false;
16+
17+
return $permissions;
18+
}
19+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
use Kirby\Permissions\KirbyPermissions;
4+
5+
return function () {
6+
return KirbyPermissions::from(true);
7+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
use Kirby\Permissions\KirbyPermissions;
4+
5+
return function () {
6+
$permissions = KirbyPermissions::from(true);
7+
8+
$permissions->file->delete = false;
9+
$permissions->language->delete = false;
10+
$permissions->languageVariable->delete = false;
11+
$permissions->page->delete = false;
12+
$permissions->user->delete = false;
13+
14+
return $permissions;
15+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
use Kirby\Permissions\KirbyPermissions;
4+
5+
return function () {
6+
$permissions = KirbyPermissions::from(true);
7+
8+
$permissions->file->delete = false;
9+
$permissions->language->delete = false;
10+
$permissions->languageVariable->delete = false;
11+
$permissions->page->delete = false;
12+
$permissions->user->delete = false;
13+
14+
return $permissions;
15+
};

0 commit comments

Comments
 (0)