Добрый день,
Я все еще новичок в silverstripe и пытаюсь решить несколько действительно простых задач.
В настоящее время я пытаюсь реализовать ограничения безопасности с помощью функции контроллера моей страницы, которая уже была создана в моем DataObject и настроена через CMS.
Однако независимо от того, предоставляю ли я пользователю доступ для просмотра объекта, пользователь все равно его видит.
См. Пример ниже:
class MyComponent extends DataObject implements PermissionProvider{
///>... this is just a snippet not the full class ...
///>@Override
public function canView($member = null){
return Permission::check('COMPONENT_VIEW');
}//canView
/**
* \brief the rest of the permission functions follow the same format as above
* i.e: canEdit, canDelete, canCreate
*/
///>@Override
function providePermissions(){
return array(
'COMPONENT_VIEW' => 'Can view a component object',
'COMPONENT_EDIT' => 'Can edit a component object',
'COMPONENT_DELETE' => 'Can delete a component object',
'COMPONENT_CREATE' => 'Can create a component object',
);
}//providePermissions
}//class
Хорошо, класс выше работает отлично; Я могу включить / выключить разрешения в группе для пользователя в разделе администратора CMS.
Вот где проблема, см. Код ниже:
///>Controller class snippet
class My_Controller extends Page_Controller{
public function ListMyComponents(){
$components = MyComponent::get()->filter(array('Status' => 'Enable'));
///>NOTE: How can I check to see if the user has access to view the component???
///> I've even tried, Member::canView(Member::currentUser()); It doesn't work!
return $components;
}//ListMyComponents
}//class
///>ss template file snippet
<% if ListMyComponents %>
<% loop ListMyComponents %>
$Title
<% end_loop %>
<% end_if %>
Спасибо за вашу помощь.