User Rating: 2 / 5

Star ActiveStar ActiveStar InactiveStar InactiveStar Inactive
 
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)
    );
}