File tree Expand file tree Collapse file tree 7 files changed +85
-11
lines changed Expand file tree Collapse file tree 7 files changed +85
-11
lines changed Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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 ()
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ use Kirby \Permissions \KirbyPermissions ;
4+
5+ return function () {
6+ return KirbyPermissions::from (true );
7+ };
Original file line number Diff line number Diff line change 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+ };
Original file line number Diff line number Diff line change 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+ };
You can’t perform that action at this time.
0 commit comments