getMember(); foreach ($objArrayMembers as $strMember) { $pobjRoleDst->addMember($strMember); } return $objArrayMembers->count(); } /** * Copie les permissions d'un role vers un autre * * @param com_borealis_acl_object_Role &$pobjRoleDst Role de destination * @param com_borealis_acl_object_Role &$pobjRoleSrc Role source * * @return int Nombre de permission copier */ function copyPermission(com_borealis_acl_object_Role &$pobjRoleDst, com_borealis_acl_object_Role &$pobjRoleSrc) { $objArrayPermissions = $pobjRoleSrc->getPermission(); foreach ($objArrayPermissions as $objArrayPermission) { $pobjRoleDst->addPermission($objArrayPermission['ressource'], $objArrayPermission['action']); } return $objArrayPermissions->count(); } /** * Ajout un role * * @return void */ function addRole() { global $g_strErrorAddRole; global $g_strInfoMessage; if (isset($_REQUEST['name']) && trim($_REQUEST['name']) != '') { try { $objRoleDst = com_borealis_acl_object_Role::create(trim($_REQUEST['name'])); $iNbCopyMember = 0; $iNbCopyPermission = 0; switch($_REQUEST['copy']) { case '0': // Empty break; case '1': // Member $objRoleSrcMember = com_borealis_acl_object_Role::getByName($_REQUEST['copy_member']); $iNbCopyMember = copyMember($objRoleDst, $objRoleSrcMember); break; case '2': // Permission $objRoleSrcPermission = com_borealis_acl_object_Role::getByName($_REQUEST['copy_permission']); $iNbCopyPermission = copyPermission($objRoleDst, $objRoleSrcPermission); break; case '3': // Member & Permission $objRoleSrcMember = com_borealis_acl_object_Role::getByName($_REQUEST['copy_member']); $objRoleSrcPermission = com_borealis_acl_object_Role::getByName($_REQUEST['copy_permission']); $iNbCopyMember = copyMember($objRoleDst, $objRoleSrcMember); $iNbCopyPermission = copyPermission($objRoleDst, $objRoleSrcPermission); break; } $g_strInfoMessage = sprintf(gettext('info_add_role'), $objRoleDst->getName(), $iNbCopyMember, $iNbCopyPermission); } catch(com_borealis_acl_exception_SQLException $objError) { $g_strErrorAddRole .= sprintf(gettext('error_role_exist'), trim($_REQUEST['name'])); } } else { $g_strErrorAddRole .= gettext('error_role_empty'); } } /** * Ajout des membres à un role * * @return void */ function addMember() { global $g_strErrorAddMember; global $g_strInfoMessage; if (!isset($_REQUEST['role']) || trim($_REQUEST['role']) == '') { $g_strErrorAddMember .= gettext('error_no_role'); return; } if (isset($_REQUEST['username']) && trim($_REQUEST['username']) != '') { $objRole = com_borealis_acl_object_Role::getByName($_REQUEST['role']); $objArrayUsernames = explode(';', trim($_REQUEST['username'])); foreach ($objArrayUsernames as $strUsername) { $strUsername = trim($strUsername); if ($strUsername != '') { try { $objRole->addMember($strUsername); $g_strInfoMessage .= sprintf(gettext('info_add_member').'
', $strUsername, $objRole->getName()); } catch(com_borealis_acl_exception_SQLException $objError) { $g_strErrorAddMember .= sprintf(gettext('error_exist_role_member').'
', $strUsername, $objRole->getName()); } } } } else { $g_strErrorAddMember .= gettext('error_empty_username'); } } /** * Suppression d'un membre à un role * * @return void */ function deleteMember() { global $g_strInfoMessage; $objRole = com_borealis_acl_object_Role::getByName($_REQUEST['role']); $objRole->removeMember($_REQUEST['username']); $g_strInfoMessage = sprintf(gettext('info_delete_member'), $_REQUEST['username'], $objRole->getName()); } /** * Suppression d'un ou plusieurs membres à un role * * @return void */ function deleteMembers() { global $g_strInfoMessage; $objRole = com_borealis_acl_object_Role::getByName($_REQUEST['role']); foreach ($_REQUEST['members'] as $strMember) { $objRole->removeMember($strMember); $g_strInfoMessage .= sprintf(gettext('info_delete_member').'
', $strMember, $objRole->getName()); } } /** * Suppression d'un role * * @return void */ function deleteRole() { global $g_strInfoMessage; $objRole = com_borealis_acl_object_Role::getByName($_REQUEST['role']); try { $objRole->remove(); $g_strInfoMessage = sprintf(gettext('info_delete_role'), $objRole->getName()); } catch(Exception $objError) { global $g_strErrorDeleteMember; $g_strErrorDeleteMember .= sprintf(gettext('error_delete_role'), $objRole->getName()); } } /** * Mise à jour du nom de role * * @return void */ function updateRole() { global $g_strErrorDeleteMember; global $g_strInfoMessage; if (isset($_REQUEST['name']) && trim($_REQUEST['name']) != '') { $strNewRole = trim($_REQUEST['name']); $objRole = com_borealis_acl_object_Role::getByName($_REQUEST['role']); try { $objRole->setName($strNewRole); $g_strInfoMessage = sprintf(gettext('info_update_role'), $_REQUEST['role'], $objRole->getName()); } catch(Exception $objError) { $g_strErrorDeleteMember = sprintf(gettext('error_update_role'), $objRole->getName(), $strNewRole); } } else { $g_strErrorDeleteMember .= gettext('error_role_empty'); } } /** * Ajout de permissions à un role * * @return void */ function addPermission() { global $g_strErrorAddPermission; global $g_strInfoMessage; $objRole = com_borealis_acl_object_Role::getByName($_REQUEST['role']); if (isset($_REQUEST['permission'])) { foreach ($_REQUEST['permission'] as $strPermission) { $objArrayInfo = explode('_', $strPermission); $objRessource = com_borealis_acl_object_Ressource::getByID((int)$objArrayInfo[0]); $objAction = com_borealis_acl_object_Action::getByID((int)$objArrayInfo[1]); try { $objRole->addPermission($objRessource, $objAction); $g_strInfoMessage .= sprintf(gettext('info_add_permission').'
', $objRessource->getName(), $objAction->getName(), $objRole->getName()); } catch(com_borealis_acl_exception_SQLException $objError) { $g_strErrorAddPermission .= sprintf(gettext('error_add_permission').'
', $objRessource->getName(), $objAction->getName(), $objRole->getName()); } } } } /** * Suppression d'une permission à un role * * @return void */ function deletePermission() { global $g_strInfoMessage; $objRole = com_borealis_acl_object_Role::getByName($_REQUEST['role']); $objRessource = com_borealis_acl_object_Ressource::getByID((int)$_REQUEST['ressourceid']); $objAction = com_borealis_acl_object_Action::getByID((int)$_REQUEST['actionid']); $objRole->removePermission($objRessource, $objAction); $g_strInfoMessage = sprintf(gettext('info_delete_permission'), $objRessource->getName(), $objAction->getName(), $objRole->getName()); } /** * Suppression d'une ou plusieurs permissions à un role * * @return void */ function deletePermissions() { global $g_strInfoMessage; $objRole = com_borealis_acl_object_Role::getByName($_REQUEST['role']); foreach ($_REQUEST['permissions'] as $strPermission) { $objArrayPermissions = explode('-', $strPermission, 2); $strRessource = $objArrayPermissions[0]; $strAction = $objArrayPermissions[1]; $objRessource = com_borealis_acl_object_Ressource::getByID((int)$strRessource); $objAction = com_borealis_acl_object_Action::getByID((int)$strAction); $objRole->removePermission($objRessource, $objAction); $g_strInfoMessage .= sprintf(gettext('info_delete_permission').'
', $objRessource->getName(), $objAction->getName(), $objRole->getName()); } } if (isset($_REQUEST['action'])) { switch($_REQUEST['action']) { case 'add_role': addRole(); break; case 'add_member': addMember(); break; case 'delete_member': deleteMember(); break; case 'delete_members': deleteMembers(); break; case 'delete_role': deleteRole(); break; case 'add_permission': addPermission(); break; case 'delete_permission': deletePermission(); break; case 'delete_permissions': deletePermissions(); break; case 'update_role': updateRole(); break; } } // ----------------------------------------------- // --- Smarty display // ----------------------------------------------- $g_objSmarty->assign('ressources', com_borealis_acl_object_Ressource::getAll()); $g_objSmarty->assign('roles', com_borealis_acl_object_Role::getAll()); $g_objSmarty->assign('errorAddRole', $g_strErrorAddRole); $g_objSmarty->assign('errorAddMember', $g_strErrorAddMember); $g_objSmarty->assign('errorDeleteMember', $g_strErrorDeleteMember); $g_objSmarty->assign('errorAddPermission', $g_strErrorAddPermission); $g_objSmarty->assign('infoMessage', $g_strInfoMessage); $g_objSmarty->display('roles.tpl'); ?>