diff --git a/src/admin/LocationAdmin.php b/src/admin/LocationAdmin.php index 7d772ca..691f88d 100644 --- a/src/admin/LocationAdmin.php +++ b/src/admin/LocationAdmin.php @@ -5,11 +5,14 @@ use SilverStripe\Admin\ModelAdmin; use SilverStripe\Dev\CsvBulkLoader; use SilverStripe\Forms\Form; +use SilverStripe\Security\Permission; +use SilverStripe\Security\PermissionProvider; +use SilverStripe\Security\Security; /** * Class LocationAdmin */ -class LocationAdmin extends ModelAdmin +class LocationAdmin extends ModelAdmin implements PermissionProvider { /** @@ -37,6 +40,13 @@ class LocationAdmin extends ModelAdmin */ private static $url_segment = 'locator'; + private static $tree_class = Location::class; + + /** + * @var string + */ + private static $required_permission_codes = 'CMS_ACCESS_LocatorAdmin'; + /** * @return array */ @@ -80,4 +90,32 @@ public function getEditForm($id = null, $fields = null) } return $form; } + + public function providePermissions() + { + return array( + "CMS_ACCESS_LocatorAdmin" => array( + 'name' => "Access to 'Locator' section", + 'category' => 'CMS Access' + ) + ); + } + + /** + * @param null $member + * @return bool + */ + public function canView($member = null) + { + if (!$member && $member !== false) { + $member = Security::getCurrentUser(); + } + + if (Permission::checkMember($member, 'CMS_ACCESS_LocatorAdmin')) { + return true; + } + + // Default permissions + //return parent::canView($member); + } }