PluginsController::_addPermission PHP Method

_addPermission() public method

アクセス制限設定を追加する
public _addPermission ( array $data ) : void
$data array リクエストデータ
return void
    public function _addPermission($data)
    {
        if (ClassRegistry::isKeySet('Permission')) {
            $Permission = ClassRegistry::getObject('Permission');
        } else {
            $Permission = ClassRegistry::init('Permission');
        }
        $userGroups = $Permission->UserGroup->find('all', array('conditions' => array('UserGroup.id <>' => Configure::read('BcApp.adminGroupId')), 'recursive' => -1));
        if ($userGroups) {
            foreach ($userGroups as $userGroup) {
                //$permissionAuthPrefix = $Permission->UserGroup->getAuthPrefix($userGroup['UserGroup']['id']);
                // TODO 現在 admin 固定、今後、mypage 等にも対応する
                $permissionAuthPrefix = 'admin';
                $url = '/' . $permissionAuthPrefix . '/' . Inflector::underscore($data['Plugin']['name']) . '/*';
                $permission = $Permission->find('first', array('conditions' => array('Permission.url' => $url), 'recursive' => -1));
                switch ($data['Plugin']['permission']) {
                    case 1:
                        if (!$permission) {
                            $Permission->create(array('name' => $data['Plugin']['title'] . '管理', 'user_group_id' => $userGroup['UserGroup']['id'], 'auth' => true, 'status' => true, 'url' => $url, 'no' => $Permission->getMax('no', array('user_group_id' => $userGroup['UserGroup']['id'])) + 1, 'sort' => $Permission->getMax('sort', array('user_group_id' => $userGroup['UserGroup']['id'])) + 1));
                            $Permission->save();
                        }
                        break;
                    case 2:
                        if ($permission) {
                            $Permission->delete($permission['Permission']['id']);
                        }
                        break;
                }
            }
        }
    }