Skip to content
Snippets Groups Projects
generate-permissions.php 2.35 KiB
<?php
require 'console.php';
echo BASE_URL . "\n";

if(!Class_Permission::findAll()) {
	echo "No permission in DB, stop script\n";
	exit;
}

if (Class_UserGroup_Permission::countBy([])>0) {
	echo "Usergroup permissions detected, stop script\n";
	exit;
}

if(!$group_category = Class_UserGroupCategorie::findFirstBy(['libelle' => 'Droits d\'accès aux articles'])) {
	$group_category = Class_UserGroupCategorie::newInstance(['libelle' => 'Droits d\'accès aux articles']);
	$group_category->save();
}

$all_cms_permissions = Class_Permission::getCmsPermissions();
$redac_permissions = Class_Permission::findAllBy(['module' => 'ARTICLE', 'code' => ['ARTICLE' , 'PENDING', 'CATEGORY' ]]);

$redac_portail = addGroupFor(Class_Bib::getPortail(), ZendAfi_Acl_AdminControllerRoles::MODO_PORTAIL, 'Rédacteurs Portail' ,$group_category,$redac_permissions);

$admin_portail = addGroupFor(Class_Bib::getPortail(), ZendAfi_Acl_AdminControllerRoles::ADMIN_PORTAIL,  'Administrateurs Portail ' ,$group_category,$all_cms_permissions);

foreach(Class_Bib::findAll() as $library) {
  addGroupFor($library,
							ZendAfi_Acl_AdminControllerRoles::MODO_BIB,
							'Rédacteurs ' . $library->getLibelle(),
							$group_category,
							$redac_permissions);

	addGroupFor($library,
							ZendAfi_Acl_AdminControllerRoles::ADMIN_BIB,
							'Administrateurs ' . $library->getLibelle(),
							$group_category,
							$all_cms_permissions);

	allow($redac_permissions,
				$redac_portail,
				$library);

	allow($all_cms_permissions,
				$admin_portail,
				$library);
}


function addGroupFor($library, $level, $label, $categ,$permissions) {
	if(!$group = Class_UserGroup::findFirstBy(['libelle' => $label,
																						 'id_cat' => $categ->getId()]))
		$group = Class_UserGroup::newInstance(['libelle' => $label,
																					 'group_type' => Class_UserGroup::TYPE_DYNAMIC,
																					 'role_level' => $level,
																					 'library' => $library,
																					 'categorie' => $categ]);

  $group->addRight(Class_UserGroup::RIGHT_USER_ACCES_ARTICLES)
				->addRight(Class_UserGroup::RIGHT_USER_PUBLICATION_DIRECTE)
				->addRight(Class_UserGroup::RIGHT_USER_FILE_ACCESS)
				->save();

	allow($permissions,$group,$library);
	return $group;
}


function allow($permissions,$group,$library) {
  foreach($permissions as $permission)
    $permission->permitTo($group, $library);
}