SilverStripeはかなりいいですpermission managementです。コードでアクセス許可を作成し、手動でユーザーグループに追加することができます。 DataObjectのか、あなたのページのタイプで
<?php
class Foo extends DataObject implements PermissionProvider
{
/**
* Return a map of permission codes to add to the dropdown
* shown in the Security section of the CMS.
* array(
* 'VIEW_SITE' => 'View the site',
*);
*/
public function providePermissions()
{
return [
'FOO_MANAGE' => [
'name' => _t('FOO.PERMISSION_MANAGE_DESCRIPTION', 'Create, edit and delete Foo Items'),
'category' => _t('Permissions.FOO_CATEGORY', 'Foo'),
],
'FOO_CREATE' => [
'name' => _t('FOO.PERMISSION_CREATE_DESCRIPTION', 'Create Foo Items'),
'category' => _t('Permissions.FOO_CATEGORY', 'Foo'),
]
];
}
}
は、あなたがして...などを削除することができ、編集することができ、閲覧することができますどのようなユーザーを定義することを別の
can
方法を確認することができます。
canView()
は、フロントエンドでページにアクセスするためのもので、バックエンドで編集する場合はcanEdit()
です。
/**
* @param null $member
* @return bool
*/
public function canView($member = null)
{
//this method is for accessing/viewing the page.
return true;
}
/**
* @param null $member
* @return bool
*/
public function canCreate($member = null)
{
$parent = parent::canCreate($member);
$manage = Permission::check('FOO_MANAGE', 'any', $member);
$create = Permission::check('FOO_CREATE', 'any', $member);
return $parent || $manage || $create;
}
/**
* @param null $member
* @return bool
*/
public function canEdit($member = null)
{
$member = $member ?: Member::currentUser();
$parent = parent::canCreate($member);
$manage = Permission::check('FOO_MANAGE', 'any', $member);
//you can check everyting here...
$owner = $member ? $this->OwnerID == $member->ID : false;
return $parent || $manage || $owner;
}
/**
* @param null $member
* @return bool
*/
public function canDelete($member = null)
{
$parent = parent::canCreate($member);
$manage = Permission::check('FOO_MANAGE', 'any', $member);
return $parent || $manage;
}
出典
2016-06-02 06:39:19
wmk
ありがとうございます。私が現時点で頭を抱えようとしているのは、特定の 'GymLocationPage'にメンバーを割り当てる方法だけです。ボブはニューヨークのジムのジムマネージャーです。私が「Gym Manger」グループのすべてのメンバーに同じ許可を与えても、彼らはみんな自分のものを見るのではなく、他のジムの場所のページを見ることができませんか? – ifusion