Newscoop\Services\Plugins\PluginsService::savePluginPermissions PHP Метод

savePluginPermissions() публичный Метод

Save plugin permissions in Newscoop ACL
public savePluginPermissions ( array $pluginPermissions ) : void
$pluginPermissions array Plugin permissions
Результат void
    public function savePluginPermissions(array $pluginPermissions)
    {
        try {
            foreach ($pluginPermissions as $permissionArray) {
                foreach ($permissionArray as $permission => $permissionLabel) {
                    $this->addRight(array('area_id' => 0, 'right_define_name' => $permission, 'has_implied' => 1));
                    $permissionsArray = explode('_', $permission);
                    $values = array('role' => 1, 'type' => 'allow', 'resource' => $permissionsArray[0] . '-' . $permissionsArray[1], 'action' => $permissionsArray[2]);
                    $this->em->getRepository('Newscoop\\Entity\\Acl\\Rule')->save($values);
                }
            }
        } catch (\Exception $e) {
            throw new \Exception("Error setting up plugin permissions", 1);
        }
    }

Usage Example

 /**
  * Save plugin permissions into database
  */
 private function setPermissions()
 {
     $this->pluginsService->savePluginPermissions($this->pluginsService->collectPermissions($this->translator->trans('plugin.ingest.permissions.label')));
 }