public function grant() {
        $aro_id = isset($this->request->params['named']['aro_id']) ? $this->request->params['named']['aro_id'] : null;
        $aco_id = isset($this->request->params['named']['aco_id']) ? $this->request->params['named']['aco_id'] : null;

        if (!$aro_id || !$aco_id) {
            throw new BadRequestException(__d('admin', 'Invalid ARO/ACO IDs'));
        }

        $aro = $this->Aro->getById($aro_id);
        $aco = $this->Aco->getById($aco_id);

        if (!$aro || !$aco) {
            throw new NotFoundException(__d('admin', 'Invalid ARO/ACO Records'));
        }

        $aroAlias = $aro['RequestObject']['alias'];
        $acoAlias = $aco['ControlObject']['alias'];

        if (!empty($aro['Parent']['alias'])) {
            $aroAlias = $aro['Parent']['alias'] . '/' . $aroAlias;
        }

        if ($this->Acl->allow($aroAlias, $acoAlias)) {
            $this->AdminToolbar->logAction(ActionLog::CREATE, $this->Permission, $this->Acl->adapter()->Permission->id, sprintf('Granted %s access to %s', $aroAlias, $acoAlias));
            $this->AdminToolbar->setFlashMessage(__d('admin', 'Successfully granted %s permission to %s', array($aroAlias, $acoAlias)));
        } else {
            $this->AdminToolbar->setFlashMessage(__d('admin', 'Failed to grant %s permission to %s', array($aroAlias, $acoAlias)), 'is-error');
        }

        $this->redirect(array('action' => 'index'));
    }