From 980f958bae5c60d78e168402929192a7b550625d Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Wed, 16 Mar 2022 19:51:52 +0100 Subject: [PATCH] Removed depcrecated package com/arsdigita/cms/ui/role from ccm-cms --- .../arsdigita/cms/ui/ContentSectionPage.java | 33 -- .../arsdigita/cms/ui/role/BaseRoleForm.java | 168 -------- .../cms/ui/role/BaseRoleItemPane.java | 273 ------------ .../cms/ui/role/MemberTableModelBuilder.java | 120 ------ .../arsdigita/cms/ui/role/RoleAddForm.java | 87 ---- .../arsdigita/cms/ui/role/RoleAdminPane.java | 215 ---------- .../cms/ui/role/RoleAdminPaneController.java | 402 ------------------ .../arsdigita/cms/ui/role/RoleEditForm.java | 115 ----- .../arsdigita/cms/ui/role/RoleListModel.java | 84 ---- .../cms/ui/role/RolePartyAddForm.java | 131 ------ .../cms/ui/role/RoleRequestLocal.java | 42 -- 11 files changed, 1670 deletions(-) delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleForm.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleItemPane.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAddForm.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAdminPane.java delete mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAdminPaneController.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleEditForm.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleListModel.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RolePartyAddForm.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleRequestLocal.java diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentSectionPage.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentSectionPage.java index c5a2875cf..9434d21b0 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentSectionPage.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentSectionPage.java @@ -39,7 +39,6 @@ import com.arsdigita.cms.ui.category.CategoryAdminPane; import com.arsdigita.cms.ui.cse.ContentSoonExpiredPane; import com.arsdigita.cms.ui.folder.FolderAdminPane; import com.arsdigita.cms.ui.lifecycle.LifecycleAdminPane; -import com.arsdigita.cms.ui.role.RoleAdminPane; import com.arsdigita.cms.ui.workflow.WorkflowAdminPane; import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.toolbox.ui.LayoutPanel; @@ -134,8 +133,6 @@ public class ContentSectionPage extends CMSPage implements ActionListener { private ItemSearch m_searchPane; - private RoleAdminPane m_rolePane; - private WorkflowAdminPane m_workflowPane; private LifecycleAdminPane m_lifecyclePane; @@ -160,7 +157,6 @@ public class ContentSectionPage extends CMSPage implements ActionListener { m_folderPane = getFolderAdminPane(); m_browsePane = getBrowsePane(); m_searchPane = getSearchPane(); - m_rolePane = getRoleAdminPane(); m_workflowPane = getWorkflowAdminPane(); m_lifecyclePane = getLifecycleAdminPane(); m_categoryPane = getCategoryAdminPane(); @@ -205,11 +201,6 @@ public class ContentSectionPage extends CMSPage implements ActionListener { permissionChecker.isPermitted( AdminPrivileges.ADMINISTER_LIFECYLES)); - m_tabbedPane.setTabVisible( - state, - m_rolePane, - permissionChecker.isPermitted( - AdminPrivileges.ADMINISTER_ROLES)); // csePane: should check permission m_tabbedPane.setTabVisible(state, m_csePane, true); // TODO Check for reportPane as well @@ -261,27 +252,6 @@ public class ContentSectionPage extends CMSPage implements ActionListener { return m_searchPane; } -// protected AssetPane getAssetPane() { -// if (m_assetPane == null) { -// m_assetPane = new AssetPane(); -// } -// -// return m_assetPane; -// } -// ToDo NG -// protected ImagesPane getImagesPane() { -// if (m_imagesPane == null) { -// m_imagesPane = new ImagesPane(); -// } -// return m_imagesPane; -// } - protected RoleAdminPane getRoleAdminPane() { - if (m_rolePane == null) { - m_rolePane = new RoleAdminPane(); - } - return m_rolePane; - } - /** * Creates, and then caches, the workflow administration pane. Overriding * this method to return null will prevent this tab from appearing. @@ -365,11 +335,8 @@ public class ContentSectionPage extends CMSPage implements ActionListener { protected TabbedPane createTabbedPane() { final TabbedPane pane = new TabbedPane(); - //tab(pane, "cms.ui.folders", getFolderAdminPane()); tab(pane, "cms.ui.browse", getBrowsePane()); tab(pane, "cms.ui.search", getSearchPane()); -// ToDo NG replace with media tab tab(pane, "cms.ui.images", getImagesPane()); - tab(pane, "cms.ui.roles", getRoleAdminPane()); tab(pane, "cms.ui.workflows", getWorkflowAdminPane()); tab(pane, "cms.ui.lifecycles", getLifecycleAdminPane()); tab(pane, "cms.ui.categories", getCategoryAdminPane()); diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleForm.java deleted file mode 100755 index 63d647634..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleForm.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.role; - -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.event.ParameterEvent; -import com.arsdigita.bebop.event.ParameterListener; -import com.arsdigita.bebop.event.PrintEvent; -import com.arsdigita.bebop.event.PrintListener; -import com.arsdigita.bebop.form.CheckboxGroup; -import com.arsdigita.bebop.form.Option; -import com.arsdigita.cms.CMS; -import com.arsdigita.cms.ui.BaseForm; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.ui.admin.GlobalizationUtil; -import com.arsdigita.util.UncheckedWrapperException; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.security.PermissionManager; -import org.libreccm.security.Role; -import org.librecms.CmsConstants; -import org.librecms.contentsection.ContentSection; -import org.librecms.contentsection.privileges.AdminPrivileges; -import org.librecms.contentsection.privileges.AssetPrivileges; -import org.librecms.contentsection.privileges.ItemPrivileges; - -import java.util.ArrayList; -import java.util.List; -import java.util.TooManyListenersException; - -/** - * For more detailed information see {@link com.arsdigita.bebop.Form}. - * - * @author Yannick Bülter - * @author Justin Ross <jross@redhat.com> - * - */ -class BaseRoleForm extends BaseForm { - - private final Name roleName; - private final Description roleDescription; - private CheckboxGroup privileges; - - BaseRoleForm(final String key, - final GlobalizedMessage message) { - super(key, message); - - roleName = new Name("label", 200, true); - addField(gz("cms.ui.role.name"), roleName); - - roleDescription = new Description("description", 4000, false); - addField(gz("cms.ui.role.description"), roleDescription); - - privileges = new CheckboxGroup("privileges"); - addField(gz("cms.ui.role.privileges"), privileges); - - try { - privileges.addPrintListener(new PrivilegePrinter()); - } catch (TooManyListenersException tmle) { - throw new UncheckedWrapperException(tmle); - } - - addAction(new Finish()); - addAction(new Cancel()); - - addSecurityListener(AdminPrivileges.ADMINISTER_ROLES); - } - - protected Name getRoleName() { - return roleName; - } - - protected Description getRoleDescription() { - return roleDescription; - } - - protected CheckboxGroup getPrivileges() { - return privileges; - } - - private class PrivilegePrinter implements PrintListener { - - @Override - public final void prepare(final PrintEvent event) { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final PermissionManager permissionManager = cdiUtil.findBean( - PermissionManager.class); - - final CheckboxGroup target = (CheckboxGroup) event.getTarget(); - target.clearOptions(); - - final List adminPrivileges = permissionManager - .listDefiniedPrivileges(AdminPrivileges.class); - final List itemPrivileges = permissionManager - .listDefiniedPrivileges(ItemPrivileges.class); - final List assetPrivileges = permissionManager - .listDefiniedPrivileges(AssetPrivileges.class); - - final List possiblePrivileges = new ArrayList<>(); - possiblePrivileges.addAll(adminPrivileges); - possiblePrivileges.addAll(itemPrivileges); - possiblePrivileges.addAll(assetPrivileges); - - for (final String privilege : possiblePrivileges) { - target.addOption(new Option( - privilege, - new Label(new GlobalizedMessage(privilege, - CmsConstants.CMS_BUNDLE)))); - } - } - - } - - class NameUniqueListener implements ParameterListener { - - private final RoleRequestLocal roleRequestLocal; - - NameUniqueListener(final RoleRequestLocal role) { - roleRequestLocal = role; - } - - /** - * Validates that there are no duplicates between the names of roles. - */ - @Override - public final void validate(final ParameterEvent event) - throws FormProcessException { - - final PageState state = event.getPageState(); - final String name = (String) roleName.getValue(state); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final RoleAdminPaneController controller = cdiUtil.findBean( - RoleAdminPaneController.class); - final Role selectedRole; - if (roleRequestLocal == null) { - selectedRole = null; - } else { - selectedRole = roleRequestLocal.getRole(state); - } - - if (!controller.validateRoleNameUniqueness(name, selectedRole)) { - throw new FormProcessException(GlobalizationUtil.globalize( - "cms.ui.role.name_not_unique")); - } - } - - } - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleItemPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleItemPane.java deleted file mode 100755 index 856691fc7..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleItemPane.java +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.role; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.SimpleContainer; -import com.arsdigita.bebop.SingleSelectionModel; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.event.TableActionAdapter; -import com.arsdigita.bebop.event.TableActionEvent; -import com.arsdigita.bebop.table.DefaultTableCellRenderer; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.cms.CMS; -import com.arsdigita.cms.ui.BaseItemPane; -import com.arsdigita.cms.ui.PartySearchForm; -import com.arsdigita.cms.ui.VisibilityComponent; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.toolbox.ui.ActionGroup; -import com.arsdigita.toolbox.ui.Property; -import com.arsdigita.toolbox.ui.PropertyList; -import com.arsdigita.toolbox.ui.Section; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.security.Party; -import org.libreccm.security.PartyRepository; -import org.libreccm.security.PermissionChecker; -import org.libreccm.security.Role; -import org.libreccm.security.RoleManager; -import org.librecms.CmsConstants; -import org.librecms.contentsection.privileges.AdminPrivileges; - -/** - * This pane is for showing the properties of a {@link Role}. That includes - * name, description, permissions and members. The last one is a list of - * {@link Party parties} to which the role corresponds to. - * - * NOTE: There was an AdminTable besides the MemberTable. Since this function - * was/is never used, it was deemed deprecated and was removed. - * - * - * @author Justin Ross <jross@redhat.com> - * @author Yannick Bülter - * @author Jens Pelzetter - */ -class BaseRoleItemPane extends BaseItemPane { - - private final RoleRequestLocal roleRequestLocal; - - private final MemberTable membersTable; - - BaseRoleItemPane(final SingleSelectionModel model, - final RoleRequestLocal role, - final ActionLink editLink, - final ActionLink deleteLink) { - roleRequestLocal = role; - - membersTable = new MemberTable(); - - final ActionLink memberAddLink = new ActionLink(new Label(gz( - "cms.ui.role.member.add"))); - - final SimpleContainer m_detailPane = new SimpleContainer(); - add(m_detailPane); - setDefault(m_detailPane); - - m_detailPane.add(new SummarySection(editLink, deleteLink)); - m_detailPane.add(new MemberSection(memberAddLink)); - - final PartySearchForm memberSearchForm = new PartySearchForm(); - add(memberSearchForm); - - final RolePartyAddForm memberAddForm = new RolePartyAddForm( - model, memberSearchForm.getSearchWidget()); - add(memberAddForm); - - connect(memberAddLink, memberSearchForm); - connect(memberSearchForm, memberAddForm); - memberAddForm.getForm().addSubmissionListener(new CancelListener( - memberAddForm.getForm())); - resume(memberAddForm.getForm(), m_detailPane); - } - - private class SummarySection extends Section { - - SummarySection(final ActionLink editLink, - final ActionLink deleteLink) { - setHeading(gz("cms.ui.role.details")); - - final ActionGroup group = new ActionGroup(); - setBody(group); - - group.setSubject(new Properties()); - group.addAction( - new VisibilityComponent(editLink, - AdminPrivileges.ADMINISTER_ROLES), - ActionGroup.DELETE); - group.addAction( - new VisibilityComponent(deleteLink, - AdminPrivileges.ADMINISTER_ROLES), - ActionGroup.DELETE); - } - - @SuppressWarnings("unchecked") - private class Properties extends PropertyList { - - @Override - protected final java.util.List properties( - final PageState state - ) { - - final java.util.List properties = super.properties( - state - ); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final RoleAdminPaneController controller = cdiUtil - .findBean(RoleAdminPaneController.class); - - final Role role = roleRequestLocal.getRole(state); - - properties.add( - new Property(lz("cms.ui.role.name"), role.getName()) - ); - - // Right now just loads the default locale description. - properties.add( - new Property( - lz("cms.ui.role.description"), - controller.getRoleDescription(role) - ) - ); - - // Since Permissions don't seem to have a "pretty" form, the - // granted privilege is used. - final String permissions = controller - .generateGrantedPermissionsString( - role, - CMS.getContext().getContentSection() - ); - - if (permissions.length() > 0) { - properties.add( - new Property( - lz("cms.ui.role.privileges"), - permissions - ) - ); - } else { - properties.add( - new Property( - lz("cms.ui.role.privileges"), - lz("cms.ui.role.privilege.none") - ) - ); - } - - return properties; - } - - } - - } - - private class MemberSection extends Section { - - MemberSection(final ActionLink memberAddLink) { - setHeading(gz("cms.ui.role.members")); - - final ActionGroup group = new ActionGroup(); - setBody(group); - - group.setSubject(membersTable); - group.addAction( - new VisibilityComponent(memberAddLink, - AdminPrivileges.ADMINISTER_ROLES), - ActionGroup.ADD); - } - - } - - private class MemberTable extends Table { - - private static final int COL_NAME = 0; - - private static final int COL_EMAIL = 1; - - private static final int COL_REMOVE = 2; - - MemberTable() { - super(); - - final TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - COL_NAME, - new Label(new GlobalizedMessage("cms.ui.name", - CmsConstants.CMS_BUNDLE)))); - columnModel.add(new TableColumn( - COL_EMAIL, - new Label(new GlobalizedMessage("cms.ui.role.member.email", - CmsConstants.CMS_BUNDLE)))); - columnModel.add(new TableColumn( - COL_REMOVE, - new Label(new GlobalizedMessage("cms.ui.role.member.remove", - CmsConstants.CMS_BUNDLE)))); - - setEmptyView(new Label(gz("cms.ui.role.member.none"))); - - setModelBuilder(new MemberTableModelBuilder(roleRequestLocal)); - - getColumn(2).setCellRenderer(new DefaultTableCellRenderer(true)); - - addTableActionListener(new Listener()); - } - - private class Listener extends TableActionAdapter { - - @Override - public final void cellSelected(final TableActionEvent e) throws - FormProcessException { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final PageState state = e.getPageState(); - final PermissionChecker permissionChecker = cdiUtil.findBean( - PermissionChecker.class); - - if (!permissionChecker.isPermitted( - AdminPrivileges.ADMINISTER_ROLES)) { - throw new FormProcessException( - new GlobalizedMessage( - "cms.ui.role.insufficient_privileges", - CmsConstants.CMS_BUNDLE)); - } - - if (e.getColumn() == 2) { - final Role role = roleRequestLocal.getRole(state); - long itemId = Long.parseLong(e.getRowKey().toString()); - - final PartyRepository partyRepository = cdiUtil.findBean( - PartyRepository.class); - final RoleManager roleManager = cdiUtil.findBean( - RoleManager.class); - final Party party = partyRepository.findById(itemId).get(); - - roleManager.removeRoleFromParty(role, party); - - getRowSelectionModel().clearSelection(state); - } - } - - } - - } - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java deleted file mode 100755 index 7c912317c..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.role; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.table.AbstractTableModelBuilder; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.ui.admin.GlobalizationUtil; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.security.Party; -import org.libreccm.security.PartyRepository; -import org.libreccm.security.Role; -import org.libreccm.security.RoleManager; - -import java.util.Collection; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Creates a table model based on the {@link Party parties} of the given - * {@link Role role}. - * - * @author Yannick Bülter - * @author Justin Ross <jross@redhat.com> - * @version $Id: MemberTableModelBuilder.java 287 2005-02-22 00:29:02Z sskracic - * $ - */ -class MemberTableModelBuilder extends AbstractTableModelBuilder { - - private final RoleRequestLocal roleRequestLocal; - - MemberTableModelBuilder(final RoleRequestLocal role) { - roleRequestLocal = role; - } - - @Override - public final TableModel makeModel(final Table table, - final PageState state) { - final Role role = roleRequestLocal.getRole(state); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final RoleAdminPaneController controller = cdiUtil.findBean( - RoleAdminPaneController.class); - final List members = controller.createRoleMemberList(role); - - return new Model(members); - } - - private static class Model implements TableModel { - - private Party m_party; - private final Collection m_parties; - private final Iterator iterator; - - Model(final Collection parties) { - m_parties = parties; - iterator = m_parties.iterator(); - } - - @Override - public final int getColumnCount() { - return 3; - } - - @Override - public final boolean nextRow() { - if (iterator.hasNext()) { - m_party = iterator.next(); - return true; - } else { - return false; - } - } - - @Override - public final Object getKeyAt(final int column) { - return m_party.getPartyId(); - } - - @Override - public final Object getElementAt(final int column) { - switch (column) { - case 0: - return m_party.getName(); - case 1: - return lz("cms.ui.none"); - case 2: - return lz("cms.ui.role.member.remove"); - default: - throw new IllegalStateException(); - } - } - - } - - protected static String lz(final String key) { - return (String) GlobalizationUtil.globalize(key).localize(); - } - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAddForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAddForm.java deleted file mode 100755 index 93751117e..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAddForm.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.role; - -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.SingleSelectionModel; -import com.arsdigita.bebop.event.FormProcessListener; -import com.arsdigita.bebop.event.FormSectionEvent; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.security.Role; - -/** - * Provides a {@link com.arsdigita.bebop.Form} for adding {@link Role roles}. - * - * - * @author Michael Pih - * @author Justin Ross <jross@redhat.com> - * @author Yannick Bülter - */ -final class RoleAddForm extends BaseRoleForm { - - private final SingleSelectionModel selectionModel; - - RoleAddForm(final SingleSelectionModel selectionModel) { - super("AddStaffRole", gz("cms.ui.role.add")); - - this.selectionModel = selectionModel; - - getRoleName().addValidationListener(new NameUniqueListener(null)); - - addProcessListener(new ProcessListener()); - } - - /** - * The {@link Role} gets saved to the database and permissions are granted - * as needed. - * - * NOTE: The part about granting and revoking privileges is mostly Copy & - * Paste from {@link RoleEditForm}. If you find any bugs or errors in this - * code, be sure to change it there accordingly. - */ - private class ProcessListener implements FormProcessListener { - - @Override - public final void process(final FormSectionEvent event) - throws FormProcessException { - - final PageState state = event.getPageState(); - final String roleName = (String) getRoleName().getValue(state); - final String roleDesc = (String) getRoleDescription() - .getValue(state); - final String[] selectedPrivileges = (String[]) getPrivileges() - .getValue(state); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final RoleAdminPaneController controller = cdiUtil.findBean( - RoleAdminPaneController.class); - - final Role role = controller.addRole(roleName, - roleDesc, - selectedPrivileges); - - selectionModel - .setSelectedKey(state, Long.toString(role.getRoleId())); - } - - } - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAdminPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAdminPane.java deleted file mode 100755 index 95541f0e0..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAdminPane.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.role; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.List; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SimpleContainer; -import com.arsdigita.bebop.SingleSelectionModel; -import com.arsdigita.bebop.event.ChangeEvent; -import com.arsdigita.bebop.event.ChangeListener; -import com.arsdigita.bebop.event.FormSectionEvent; -import com.arsdigita.bebop.list.ListModel; -import com.arsdigita.bebop.list.ListModelBuilder; -import com.arsdigita.bebop.parameters.StringParameter; -import com.arsdigita.cms.CMS; -import com.arsdigita.cms.ui.BaseAdminPane; -import com.arsdigita.cms.ui.BaseDeleteForm; -import com.arsdigita.cms.ui.VisibilityComponent; -import com.arsdigita.toolbox.ui.ActionGroup; -import com.arsdigita.toolbox.ui.Section; -import com.arsdigita.util.LockableImpl; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.security.Role; -import org.libreccm.security.RoleRepository; -import org.librecms.contentsection.ContentSection; -import org.librecms.contentsection.privileges.AdminPrivileges; - -/** - * Provides the logic to administer {@link Role roles}. - * - * NOTE: Prior, this class managed two {@link ListModelBuilder}. The reason - * being, that roles where differentiated between Viewer and Member groups. - * Since this is no longer the case, there exists only the - * {@link RoleListModelBuilder} now. - * - * - * @author Justin Ross <jross@redhat.com> - * @author Yannick Bülter - * @author Jens Pelzetter - * - */ -public class RoleAdminPane extends BaseAdminPane { - - private static final Logger LOGGER = LogManager.getLogger( - RoleAdminPane.class); - - private final SingleSelectionModel selectionModel; - - private final List rolesList; - - public RoleAdminPane() { - selectionModel = new ParameterSingleSelectionModel<>( - new StringParameter(List.SELECTED)); - setSelectionModel(selectionModel); - - selectionModel.addChangeListener(new SelectionListener()); - - RoleRequestLocal m_role = new SelectionRequestLocal(); - - rolesList = new List(new RoleListModelBuilder()); - rolesList.setSelectionModel(selectionModel); - - final SimpleContainer left = new SimpleContainer(); - setLeft(left); - - final RoleSection roleSection = new RoleSection(); - left.add(roleSection); - - setEdit(gz("cms.ui.role.edit"), new RoleEditForm(m_role)); - setDelete(gz("cms.ui.role.delete"), new DeleteForm()); - - setIntroPane(new Label(gz("cms.ui.role.intro"))); - setItemPane(new BaseRoleItemPane(selectionModel, m_role, - getEditLink(), getDeleteLink())); - } - - private class RoleSection extends Section { - - RoleSection() { - setHeading(gz("cms.ui.role.staff")); - - final ActionGroup group = new ActionGroup(); - setBody(group); - - group.setSubject(rolesList); - - final ActionLink link = new ActionLink(new Label(gz( - "cms.ui.role.staff.add"))); - - group.addAction( - new VisibilityComponent(link, - AdminPrivileges.ADMINISTER_ROLES), - ActionGroup.ADD); - - final RoleAddForm form = new RoleAddForm(selectionModel); - getBody().add(form); - getBody().connect(link, form); - } - - } - - private class SelectionListener implements ChangeListener { - - @Override - public final void stateChanged(final ChangeEvent event) { - LOGGER.debug("Selection state changed; I may change " - + "the body's visible pane"); - - final PageState state = event.getPageState(); - - getBody().reset(state); - - if (selectionModel.isSelected(state)) { - LOGGER.debug("The selection model is selected; displaying " - + "the item pane"); - - getBody().push(state, getItemPane()); - } - } - - } - - private class SelectionRequestLocal extends RoleRequestLocal { - - @Override - protected final Object initialValue(final PageState state) { - final Long id = Long.parseLong(selectionModel.getSelectedKey(state)); - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final RoleRepository roleRepository = cdiUtil.findBean( - RoleRepository.class); - - return roleRepository.findById(id); - } - - } - - /** - * This builder provides a list model of the {@link Role roles} which - * correspond to the {@link ContentSection} in this context. - */ - private static class RoleListModelBuilder extends LockableImpl implements - ListModelBuilder { - - RoleListModelBuilder() { - super(); - } - - @Override - public final ListModel makeModel(final List list, final PageState state) { - final ContentSection section = CMS.getContext().getContentSection(); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final RoleAdminPaneController controller = cdiUtil - .findBean(RoleAdminPaneController.class); - final java.util.List roles = controller - .findRolesForContentSection(section); - - return new RoleListModel(roles); - } - - } - - /** - * Provides a simple delete form to remove a {@link Role}. - */ - private class DeleteForm extends BaseDeleteForm { - - DeleteForm() { - super(gz("cms.ui.role.delete_prompt")); - - addSecurityListener(AdminPrivileges.ADMINISTER_ROLES); - } - - @Override - public final void process(final FormSectionEvent event) - throws FormProcessException { - - final PageState state = event.getPageState(); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final RoleAdminPaneController controller = cdiUtil.findBean( - RoleAdminPaneController.class); - - controller.deleteRole(CMS.getContext().getContentSection(), - selectionModel.getSelectedKey(state)); - - selectionModel.clearSelection(state); - } - - } - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAdminPaneController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAdminPaneController.java deleted file mode 100644 index 2bd4000bb..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleAdminPaneController.java +++ /dev/null @@ -1,402 +0,0 @@ -/* - * Copyright (C) 2017 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.cms.ui.role; - -import com.arsdigita.cms.CMS; -import com.arsdigita.kernel.KernelConfig; - -import org.libreccm.configuration.ConfigurationManager; -import org.libreccm.security.Party; -import org.libreccm.security.PartyRepository; -import org.libreccm.security.Permission; -import org.libreccm.security.PermissionManager; -import org.libreccm.security.Role; -import org.libreccm.security.RoleManager; -import org.libreccm.security.RoleRepository; -import org.librecms.contentsection.ContentSection; -import org.librecms.contentsection.ContentSectionManager; -import org.librecms.contentsection.ContentSectionRepository; -import org.librecms.contentsection.Folder; -import org.librecms.contentsection.privileges.AdminPrivileges; -import org.librecms.contentsection.privileges.AssetPrivileges; -import org.librecms.contentsection.privileges.ItemPrivileges; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Locale; -import java.util.stream.Collectors; - -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.transaction.Transactional; - -/** - * - * @author Jens Pelzetter - */ -@RequestScoped -class RoleAdminPaneController { - - @Inject - private ConfigurationManager confManager; - - @Inject - private PartyRepository partyRepo; - - @Inject - private PermissionManager permissionManager; - - @Inject - private RoleManager roleManager; - - @Inject - private RoleRepository roleRepo; - - @Inject - private ContentSectionManager sectionManager; - - @Inject - private ContentSectionRepository sectionRepo; - - @Transactional(Transactional.TxType.REQUIRED) - public List findRolesForContentSection(final ContentSection section) { - final ContentSection contentSection = sectionRepo - .findById(section.getObjectId()) - .orElseThrow(() -> new IllegalArgumentException(String.format( - "No ContentSection with id %d in the database. " - + "Where did that ID come from?", - section.getObjectId()))); - - return new ArrayList<>(contentSection.getRoles()); - } - - @Transactional - public String getRoleDescription(final Role ofRole) { - final Role role = roleRepo - .findById(ofRole.getRoleId()) - .orElseThrow( - () -> new IllegalArgumentException( - String.format( - "No role with ID %d found.", ofRole.getRoleId() - ) - ) - ); - final KernelConfig config = confManager - .findConfiguration(KernelConfig.class); - return role.getDescription().getValue(config.getDefaultLocale()); - } - - public String[] getGrantedPrivileges(final Role role, - final ContentSection section) { - final List sectionPermissions = permissionManager - .findPermissionsForRoleAndObject(role, section); - final List itemPermissions = permissionManager - .findPermissionsForRoleAndObject(role, - section.getRootDocumentsFolder()); - final List assetPermissions = permissionManager - .findPermissionsForRoleAndObject(role, - section.getRootAssetsFolder()); - final List permissions = new ArrayList<>(); - permissions.addAll(sectionPermissions); - permissions.addAll(itemPermissions); - permissions.addAll(assetPermissions); - final List privileges = permissions.stream() - .map(Permission::getGrantedPrivilege) - .collect(Collectors.toList()); - - return privileges.toArray(new String[]{}); - } - - @Transactional(Transactional.TxType.REQUIRED) - public String generateGrantedPermissionsString(final Role role, - final ContentSection section) { - - final List sectionPermissions = permissionManager - .findPermissionsForRoleAndObject(role, section); - final List itemPermissions = permissionManager - .findPermissionsForRoleAndObject(role, - section.getRootDocumentsFolder()); - final List assetPermissions = permissionManager - .findPermissionsForRoleAndObject(role, - section.getRootAssetsFolder()); - final List permissions = new ArrayList<>(); - permissions.addAll(sectionPermissions); - permissions.addAll(itemPermissions); - permissions.addAll(assetPermissions); - - return permissions.stream() - .map(Permission::getGrantedPrivilege) - .collect(Collectors.joining("; ")); - - } - - @Transactional(Transactional.TxType.REQUIRED) - public List createRoleMemberList(final Role role) { - - final Role theRole = roleRepo - .findById(role.getRoleId()) - .orElseThrow(() -> new IllegalArgumentException(String.format( - "No role with ID %d in the database. Where did that Id come from?", - role.getRoleId()))); - - return theRole.getMemberships() - .stream() - .map(membership -> membership.getMember()) - .sorted((member1, member2) -> { - return member1.getName().compareTo(member2.getName()); - }) - .collect(Collectors.toList()); - } - - @Transactional(Transactional.TxType.REQUIRED) - public void deleteRole(final ContentSection section, - final String roleId) { - - final Role role = roleRepo.findById(Long.parseLong(roleId)) - .orElseThrow(() -> new IllegalArgumentException(String.format( - "No Role with ID %s in the database. Where did that ID come from?", - roleId))); - final ContentSection contentSection = sectionRepo - .findById(section.getObjectId()) - .orElseThrow(() -> new IllegalArgumentException(String.format( - "No ContentSection with ID %d in the database. " - + "Where did that ID come from?", - section.getObjectId()))); - - sectionManager.removeRoleFromContentSection(contentSection, role); - roleRepo.delete(role); - } - - /** - * - * @param name - * @param selectedRole - * - * @return {@code true} if name is unique, {@code false} otherwise. - */ - @Transactional(Transactional.TxType.REQUIRED) - public boolean validateRoleNameUniqueness(final String name, - final Role selectedRole) { - - final ContentSection section = CMS.getContext().getContentSection(); - - final ContentSection contentSection = sectionRepo - .findById(section.getObjectId()) - .orElseThrow(() -> new IllegalArgumentException(String.format( - "No ContentSection with ID %d in the database." - + " Where did that ID come from?", - section.getObjectId()))); - - final Collection roles = contentSection.getRoles(); - boolean result = true; - for (final Role role : roles) { - if (role.getName().equalsIgnoreCase(name) - && (selectedRole == null - || selectedRole.getRoleId() != role.getRoleId())) { - result = false; - break; - } - } - - return result; - } - - public void saveRole(final Role role, - final String roleName, - final String roleDescription, - final String[] selectedPermissions) { - - final Role roleToSave = roleRepo.findById(role.getRoleId()) - .orElseThrow(() -> new IllegalArgumentException(String.format( - "No Role with ID %d in the database. Where did that ID come from?", - role.getRoleId()))); - - final KernelConfig kernelConfig = confManager.findConfiguration( - KernelConfig.class); - final Locale defaultLocale = kernelConfig.getDefaultLocale(); - - roleToSave.setName(roleName); - roleToSave.getDescription().putValue(defaultLocale, roleDescription); - - roleRepo.save(roleToSave); - - final ContentSection contentSection = sectionRepo.findById( - CMS.getContext().getContentSection().getObjectId()) - .orElseThrow(() -> new IllegalArgumentException(String.format( - "No ContentSection with ID %d in the database." - + "Where did that ID come from?", - CMS.getContext().getContentSection().getObjectId()))); - - final List adminPrivileges = permissionManager - .listDefiniedPrivileges(AdminPrivileges.class); - final List itemPrivileges = permissionManager - .listDefiniedPrivileges(ItemPrivileges.class); - final List assetPrivileges = permissionManager - .listDefiniedPrivileges(AssetPrivileges.class); - - final Folder rootDocumentsFolder = contentSection - .getRootDocumentsFolder(); - final Folder rootAssetsFolder = contentSection.getRootAssetsFolder(); - - final List currentPermissionsSection = permissionManager - .findPermissionsForRoleAndObject(roleToSave, contentSection); - final List currentPermissionsDocuments = permissionManager - .findPermissionsForRoleAndObject(roleToSave, rootDocumentsFolder); - final List currentPermissionsAssets = permissionManager - .findPermissionsForRoleAndObject(roleToSave, rootAssetsFolder); - - //Revoke permissions not in selectedPermissions - revokeNotSelectedPrivileges(selectedPermissions, - roleToSave, - currentPermissionsSection); - revokeNotSelectedPrivileges(selectedPermissions, - roleToSave, - currentPermissionsDocuments); - revokeNotSelectedPrivileges(selectedPermissions, - roleToSave, - currentPermissionsAssets); - - // Grant selected privileges - for (final String privilege : adminPrivileges) { - if (isPrivilegeSelected(selectedPermissions, privilege)) { - permissionManager.grantPrivilege(privilege, - roleToSave, - contentSection); - } - } - - for (final String privilege : itemPrivileges) { - if (isPrivilegeSelected(selectedPermissions, privilege)) { - permissionManager.grantPrivilege(privilege, - roleToSave, - rootDocumentsFolder); - } - } - - for (final String privilege : assetPrivileges) { - if (isPrivilegeSelected(selectedPermissions, privilege)) { - permissionManager.grantPrivilege(privilege, - roleToSave, - rootAssetsFolder); - } - } - } - - private void revokeNotSelectedPrivileges(final String[] selectedPrivileges, - final Role role, - final List permissions) { - for (final Permission permission : permissions) { - if (!isPrivilegeSelected(selectedPrivileges, - permission.getGrantedPrivilege())) { - permissionManager.revokePrivilege( - permission.getGrantedPrivilege(), - role, - permission.getObject()); - } - } - } - - private boolean isPrivilegeSelected( - final String[] selectedPrivileges, final String privilege) { - - return Arrays.stream(selectedPrivileges) - .anyMatch(current -> current.equals(privilege)); - - } - - @Transactional(Transactional.TxType.REQUIRED) - public Role addRole(final String name, - final String description, - final String[] selectedPrivileges) { - - final KernelConfig kernelConfig = confManager.findConfiguration( - KernelConfig.class); - final Locale defaultLocale = kernelConfig.getDefaultLocale(); - - final Role role = new Role(); - role.setName(name); - role.getDescription().putValue(defaultLocale, description); - - roleRepo.save(role); - - final List adminPrivileges = permissionManager - .listDefiniedPrivileges(AdminPrivileges.class); - final List itemPrivileges = permissionManager - .listDefiniedPrivileges(ItemPrivileges.class); - final List assetPrivileges = permissionManager - .listDefiniedPrivileges(AssetPrivileges.class); - - final ContentSection contentSection = sectionRepo.findById( - CMS.getContext().getContentSection().getObjectId()) - .orElseThrow(() -> new IllegalArgumentException(String.format( - "No ContentSection with ID %d in the database." - + "Where did that ID come from?", - CMS.getContext().getContentSection().getObjectId()))); - sectionManager.addRoleToContentSection(role, contentSection); - final Folder rootDocumentsFolder = contentSection - .getRootDocumentsFolder(); - final Folder rootAssetsFolder = contentSection.getRootAssetsFolder(); - - for (final String privilege : adminPrivileges) { - if (isPrivilegeSelected(selectedPrivileges, privilege)) { - permissionManager.grantPrivilege(privilege, - role, - contentSection); - } - } - - for (final String privilege : itemPrivileges) { - if (isPrivilegeSelected(selectedPrivileges, privilege)) { - permissionManager.grantPrivilege(privilege, - role, - rootDocumentsFolder); - } - } - - for (final String privilege : assetPrivileges) { - if (isPrivilegeSelected(selectedPrivileges, privilege)) { - permissionManager.grantPrivilege(privilege, - role, - rootAssetsFolder); - } - } - - return role; - } - - @Transactional(Transactional.TxType.REQUIRED) - public void assignRoleToParty(final long roleId, final long partyId) { - - final Role role = roleRepo - .findById(roleId) - .orElseThrow(() -> new IllegalArgumentException(String - .format("No role with ID %d in the database.", - roleId))); - final Party party = partyRepo - .findById(partyId) - .orElseThrow(() -> new IllegalArgumentException(String - .format("No party with ID %d in the database.", - partyId))); - - roleManager.assignRoleToParty(role, party); - } - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleEditForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleEditForm.java deleted file mode 100755 index db0fd80fc..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleEditForm.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.role; - -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.event.FormInitListener; -import com.arsdigita.bebop.event.FormProcessListener; -import com.arsdigita.bebop.event.FormSectionEvent; -import com.arsdigita.cms.CMS; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.security.PermissionManager; -import org.libreccm.security.Role; - -/** - * Represents a {@link com.arsdigita.bebop.Form Form} to edit - * {@link Role roles}. - * - * - * @author Michael Pih - * @author Justin Ross <jross@redhat.com> - * @author Yannick Bülter - * @author Jens Pelzetter - */ -final class RoleEditForm extends BaseRoleForm { - - private final RoleRequestLocal roleRequestLocal; - - RoleEditForm(final RoleRequestLocal role) { - super("EditStaffRole", gz("cms.ui.role.edit")); - - roleRequestLocal = role; - - getRoleName().addValidationListener(new NameUniqueListener( - roleRequestLocal)); - - addInitListener(new InitListener()); - addProcessListener(new ProcessListener()); - } - - /** - * Sets the initial values of a {@link Role} which were received from the - * database. - */ - private class InitListener implements FormInitListener { - - @Override - public final void init(final FormSectionEvent event) { - final PageState state = event.getPageState(); - final Role role = roleRequestLocal.getRole(state); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final RoleAdminPaneController controller = cdiUtil.findBean( - RoleAdminPaneController.class); - - getRoleName().setValue(state, role.getName()); - getRoleDescription().setValue( - state, - controller.getRoleDescription(role) - ); - - final String[] permissions = controller.getGrantedPrivileges( - role, CMS.getContext().getContentSection()); - - getPrivileges().setValue(state, permissions); - } - - } - - /** - * Updates a role and it's permissions. It uses the - * {@link PermissionManager} to grant and revoke permissions as needed. - * - */ - private class ProcessListener implements FormProcessListener { - - @Override - public final void process(final FormSectionEvent event) - throws FormProcessException { - - final PageState state = event.getPageState(); - final String roleName = (String) getRoleName().getValue(state); - final String roleDesc = (String) getRoleDescription() - .getValue(state); - final String[] selectedPermissions = (String[]) getPrivileges() - .getValue(state); - final Role role = roleRequestLocal.getRole(state); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final RoleAdminPaneController controller = cdiUtil.findBean( - RoleAdminPaneController.class); - - controller.saveRole(role, roleName, roleDesc, selectedPermissions); - } - - } - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleListModel.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleListModel.java deleted file mode 100755 index 8d99874d8..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleListModel.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.role; - -import com.arsdigita.bebop.list.ListModel; - -import org.libreccm.security.Role; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -/** - * Provides a {@link ListModel} implementation for Collections of Roles. This - * class is usable like an iterator, with an exception. The {@link #next()} - * method only moves the iterator forward. To get elements you need to first use - * {@link #next()} and afterwards {@link #getRole()}, {@link #getElement()} or - * {@link #getKey()}. - * - * Also remember that the iterator does not move unless {@link #next()} is - * called. - * - * @author Yannick Bülter - */ -class RoleListModel implements ListModel { - - private final List m_roles; - private Iterator iterator; - private Role currentRole; - - RoleListModel(final List roles) { - m_roles = roles; - iterator = roles.iterator(); - } - - @Override - public final boolean next() { - if (iterator.hasNext()) { - currentRole = iterator.next(); - return true; - } else { - return false; - } - } - - @Override - public final Object getElement() { - return currentRole.getName(); - } - - @Override - public final String getKey() { - return Long.toString(currentRole.getRoleId()); - } - - public final boolean isEmpty() { - return m_roles.isEmpty(); - } - - public final Role getRole() { - return currentRole; - } - - public final void reset() { - iterator = m_roles.iterator(); - } - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RolePartyAddForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RolePartyAddForm.java deleted file mode 100755 index 372445bdf..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RolePartyAddForm.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.role; - -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.SingleSelectionModel; -import com.arsdigita.bebop.event.FormSectionEvent; -import com.arsdigita.bebop.form.TextField; -import com.arsdigita.cms.ui.FormSecurityListener; -import com.arsdigita.cms.ui.PartyAddForm; -import com.arsdigita.ui.admin.GlobalizationUtil; -import com.arsdigita.util.Assert; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.libreccm.cdi.utils.CdiUtil; - -import org.libreccm.security.Party; -import org.libreccm.security.PartyRepository; -import org.libreccm.security.Role; -import org.libreccm.security.RoleManager; -import org.libreccm.security.RoleRepository; -import org.libreccm.security.User; -import org.librecms.contentsection.privileges.AdminPrivileges; - -import java.util.Arrays; -import java.util.List; - -/** - * Adds a form which can add {@link Party parties} to {@link Role roles}. Also - * enables searching for parties. - * - * NOTE: In earlier versions it was also possible to filter parties using - * {@link User} attributes such as username, name, last name, etc. This feature - * may be added later if still needed. - * - * - * @author Michael Pih - * @author Uday Mathur - * @author Yannick Bülter - */ -class RolePartyAddForm extends PartyAddForm { - - private static final Logger LOGGER = LogManager - .getLogger(RolePartyAddForm.class); - - private final SingleSelectionModel roleSelectionModel; - - RolePartyAddForm(final SingleSelectionModel roleSelectionModel, - final TextField search) { - - super(search); - - this.roleSelectionModel = roleSelectionModel; - - super - .getForm() - .addSubmissionListener( - new FormSecurityListener(AdminPrivileges.ADMINISTER_ROLES)); - } - - @Override - protected List makeQuery(final PageState state) { - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final PartyRepository partyRepository = cdiUtil.findBean( - PartyRepository.class); - - final String searchQuery = (String) getSearchWidget().getValue(state); - - return partyRepository.searchByName(searchQuery); - } - - @Override - public void process(FormSectionEvent event) throws FormProcessException { - - final FormData data = event.getFormData(); - final PageState state = event.getPageState(); - - final String[] parties = (String[]) data.get("parties"); - LOGGER.debug("PARTIES = " + Arrays.toString(parties)); - if (parties == null) { - throw new FormProcessException(GlobalizationUtil.globalize( - "cms.ui.role.no_party_selected")); - } - - final Long roleId = Long - .parseLong(roleSelectionModel.getSelectedKey(state)); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); -// final RoleRepository roleRepository = cdiUtil.findBean( -// RoleRepository.class); -// final PartyRepository partyRepository = cdiUtil.findBean( -// PartyRepository.class); -// final RoleManager roleManager = cdiUtil.findBean(RoleManager.class); - final RoleAdminPaneController controller = cdiUtil - .findBean(RoleAdminPaneController.class); - -// final Role role = roleRepository.findById(roleId).get(); - - // Add each checked party to the role -// Party party; - for (int i = 0; i < parties.length; i++) { - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("parties[" + i + "] = " + parties[i]); - } -// party = partyRepository.findById(Long.parseLong(parties[i])).get(); -// roleManager.assignRoleToParty(role, party); - controller.assignRoleToParty(roleId, Long.parseLong(parties[i])); - } - } - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleRequestLocal.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleRequestLocal.java deleted file mode 100755 index 6b1f06e0c..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RoleRequestLocal.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.role; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.RequestLocal; - -import org.libreccm.security.Role; - -import java.util.Optional; - -/** - * See {@link RequestLocal} for more information. - * - * @author Yannick Bülter - */ -abstract class RoleRequestLocal extends RequestLocal { - - final Role getRole(final PageState state) { - @SuppressWarnings("unchecked") - final Optional role = (Optional) get(state); - - return role.get(); - } - -}