Добър ден,
Все още съм нов в 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 %>
Благодаря ви за помощта.