Access Control List (ACL)
Let's start creating files in the folder access.xml com_helloworld.
com_helloworld/access.xml
<?xml version="1.0" encoding="utf-8" ?>
<access component="com_helloworld">
<section name="com_helloworld">
<action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" />
<action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" />
<action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" />
<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" />
<action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" />
</section>
</access>
In the config.xml file in the code must have permissions.
com_helloworld/config.xml
<fieldset
name="permissions"
label="JCONFIG_PERMISSIONS_LABEL"
description="JCONFIG_PERMISSIONS_DESC"
>
<field
name="rules"
type="rules"
label="JCONFIG_PERMISSIONS_LABEL"
class="inputbox"
validate="rules"
filter="rules"
component="com_helloworld"
section="component" />
</fieldset>
For configuring an ACL, it's set in the Config Component.
For ACL
First we need to create a function for checking ACL will be created in the Class Helper helper.php file to put the code.
com_helloworld/helpers/helper.php
protected static $actions;
public static function getActions()
{
if (empty(self::$actions))
{
$user = JFactory::getUser();
self::$actions = new JObject;
$actions = JAccess::getActions('com_helloworld');
foreach ($actions as $action)
{
self::$actions->set($action->name, $user->authorise($action->name, 'com_helloworld'));
}
}
return self::$actions;
}
Then open view.html.php in a fix folder hellos
com_helloworld/views/hellos/view.html.php
function addToolbar()
{
$helper = new Helper();
$canDo = $helper->getActions();
JToolbarHelper::title(JText::_('COM_HELLOWORLD_HELLO_HELLO_LIST'));
if($canDo->get('core.create')) {
JToolbarHelper::addNew('add');
}
if($canDo->get('core.edit')) {
JToolbarHelper::editList('edit');
}
if($canDo->get('core.delete')) {
JToolbarHelper::deleteList('Are you sure?', 'delete');
}
if($canDo->get('core.admin')) {
JToolbarHelper::preferences('com_helloworld');
}
JHtmlSidebar::setAction('index.php?option=com_content&view=articles');
JHtmlSidebar::addFilter(
JText::_('JOPTION_SELECT_PUBLISHED'),
'filter_published',
JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true)
);
}