실버 스트라이프는 꽤 좋은 permission management을 가지고 있습니다. 코드에서 사용 권한을 만들고 수동으로 사용자 그룹에 추가 할 수 있습니다. 데이터 객체 또는 페이지 유형에
<?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'에만 할당하는 것입니다. 예 : Bob은 뉴욕 체육관 체육관 관리자입니다. '체육관 관리자'그룹의 모든 회원에게 동일한 권한을 부여하면 체육관 위치 페이지를 볼 수있는 대신 다른 사람들이 볼 수 있습니다. – ifusion