| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?php
- /*
- * This file is part of the Fred package.
- *
- * Copyright (c) MODX, LLC
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- require_once dirname(dirname(__FILE__)) . '/index.class.php';
- /**
- * @package fred
- * @subpackage controllers
- */
- class FredACLsManagerController extends FredBaseManagerController
- {
- public function process(array $scriptProperties = array())
- {
- $modx = $this->modx;
-
- $group = $modx->getObject('modAccessPolicyTemplateGroup', ['name' => 'Admin']);
- if (!$group) return;
- /** @var modAccessPolicyTemplate $template */
- $template = $modx->getObject('modAccessPolicyTemplate', ['name' => 'Fred', 'template_group' => $group->get('id')]);
- if (!$template) {
- $template = $modx->newObject('modAccessPolicyTemplate');
- }
- $template->set('name', 'Fred');
- $template->set('template_group', $group->get('id'));
- $template->set('description', 'A policy template to for Fred');
- $template->set('lexicon', 'fred:permissions');
- $template->save();
- $permissions = [
- 'fred',
- 'fred_elements',
- 'fred_element_save',
- 'fred_element_screenshot',
- 'fred_element_rte_config_save',
- 'fred_element_rte_config_delete',
- 'fred_element_rtes',
- 'fred_element_rebuild',
- 'fred_element_option_sets_save',
- 'fred_element_option_sets_delete',
- 'fred_element_option_sets',
- 'fred_element_move',
- 'fred_element_category_delete',
- 'fred_element_category_save',
- 'fred_element_delete',
- 'fred_element_categories',
- 'fred_themes_save',
- 'fred_themes_delete',
- 'fred_themes_build',
- 'fred_themes',
- 'fred_themed_templates_save',
- 'fred_themed_templates_delete',
- 'fred_themed_templates',
- 'fred_settings_tvs',
- 'fred_settings_tags',
- 'fred_settings_advanced',
- 'fred_media_sources',
- 'fred_settings',
- 'fred_blueprint_categories_save',
- 'fred_blueprint_categories_delete',
- 'fred_blueprint_categories_create_public',
- 'fred_blueprints_save',
- 'fred_blueprint_categories',
- 'fred_blueprints_delete',
- 'fred_blueprints_create_public',
- 'fred_blueprints',
- 'new_document_in_root',
- 'view_unpublished',
- 'resource_duplicate',
- 'unpublish_document',
- 'publish_document',
- 'save_document',
- 'undelete_document',
- 'new_document',
- 'delete_document',
- ];
- foreach ($permissions as $permission) {
- /** @var modAccessPermission $obj */
- $obj = $modx->getObject('modAccessPermission', ['template' => $template->get('id'), 'name' => $permission]);
-
- if (!$obj) {
- $obj = $modx->newObject('modAccessPermission');
- }
-
- $obj->set('template', $template->get('id'));
- $obj->set('name', $permission);
- $obj->set('description', "fred.permissions.{$permission}");
- $obj->save();
- }
- /** @var modAccessPolicy $adminPolicy */
- $adminPolicy = $modx->getObject('modAccessPolicy', ['name' => 'Fred Admin']);
- if (!$adminPolicy) {
- $adminPolicy = $modx->newObject('modAccessPolicy');
- $adminPolicy->set('name', 'Fred Admin');
- $adminPolicy->set('description', 'Administrator policy for Fred.');
- $adminPolicy->set('template', $template->get('id'));
- $adminPolicy->set('lexicon', $template->get('lexicon'));
- $data = [];
- foreach ($permissions as $permission) {
- $data[$permission] = true;
- }
- $adminPolicy->set('data', $data);
- $adminPolicy->save();
- }
- /** @var modUserGroup $adminUserGroup */
- $adminUserGroup = $modx->getObject('modUserGroup', ['id' => 1]);
- if ($adminUserGroup) {
- /** @var modContext[] $contexts */
- $contexts = $modx->getIterator('modContext');
- foreach ($contexts as $context) {
- $contextAccess = $modx->getObject('modAccessContext', [
- 'target' => $context->get('key'),
- 'policy' => $adminPolicy->get('id'),
- 'principal_class' => 'modUserGroup',
- ]);
- if (!$contextAccess) {
- $contextAccess = $modx->newObject('modAccessContext');
- }
- $contextAccess->set('target', $context->get('key'));
- $contextAccess->set('principal_class', 'modUserGroup');
- $contextAccess->set('principal', 1);
- $contextAccess->set('policy', $adminPolicy->get('id'));
- $contextAccess->set('authority', 0);
- $contextAccess->save();
- }
- }
- /** @var modAccessPolicy $editorPolicy */
- $editorPolicy = $modx->getObject('modAccessPolicy', ['name' => 'Fred Editor']);
- if (!$editorPolicy) {
- $editorPolicy = $modx->newObject('modAccessPolicy');
- $editorPolicy->set('name', 'Fred Editor');
- $editorPolicy->set('description', 'Editor policy for Fred.');
- $editorPolicy->set('template', $template->get('id'));
- $editorPolicy->set('lexicon', $template->get('lexicon'));
- $data = [
- 'delete_document' => true,
- 'fred' => true,
- 'fred_blueprint_categories' => true,
- 'fred_blueprint_categories_create_public' => true,
- 'fred_blueprint_categories_save' => true,
- 'fred_blueprints' => true,
- 'fred_blueprints_create_public' => true,
- 'fred_blueprints_save' => true,
- 'fred_element_categories' => true,
- 'fred_element_category_save' => true,
- 'fred_element_move' => true,
- 'fred_element_save' => true,
- 'fred_elements' => true,
- 'fred_settings' => true,
- 'fred_settings_advanced' => true,
- 'fred_settings_tags' => true,
- 'fred_settings_tvs' => true,
- 'fred_themed_templates' => true,
- 'new_document' => true,
- 'resource_duplicate' => true,
- 'save_document' => true,
- 'view_unpublished' => true,
- ];
- $editorPolicy->set('data', $data);
- $editorPolicy->save();
- }
- }
- public function getPageTitle()
- {
- return $this->modx->lexicon('fred.menu.fred');
- }
- public function checkPermissions()
- {
- return true;
- }
- }
|