Completes (?) work on BaseRoleItemPane.
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4345 8810af33-2d31-482b-a856-94f89814c4dfpull/2/head
parent
d3b72c0dec
commit
dfdffda3b7
|
|
@ -28,18 +28,21 @@ import com.arsdigita.bebop.Table;
|
||||||
import com.arsdigita.bebop.event.TableActionAdapter;
|
import com.arsdigita.bebop.event.TableActionAdapter;
|
||||||
import com.arsdigita.bebop.event.TableActionEvent;
|
import com.arsdigita.bebop.event.TableActionEvent;
|
||||||
import com.arsdigita.bebop.table.DefaultTableCellRenderer;
|
import com.arsdigita.bebop.table.DefaultTableCellRenderer;
|
||||||
import com.arsdigita.cms.CMS;
|
|
||||||
import com.arsdigita.cms.ui.BaseItemPane;
|
import com.arsdigita.cms.ui.BaseItemPane;
|
||||||
|
import com.arsdigita.cms.ui.PartySearchForm;
|
||||||
import com.arsdigita.cms.ui.VisibilityComponent;
|
import com.arsdigita.cms.ui.VisibilityComponent;
|
||||||
import com.arsdigita.cms.util.SecurityConstants;
|
import com.arsdigita.kernel.KernelConfig;
|
||||||
import com.arsdigita.toolbox.ui.ActionGroup;
|
import com.arsdigita.toolbox.ui.ActionGroup;
|
||||||
import com.arsdigita.toolbox.ui.PropertyList;
|
import com.arsdigita.toolbox.ui.PropertyList;
|
||||||
import com.arsdigita.toolbox.ui.Section;
|
import com.arsdigita.toolbox.ui.Section;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.libreccm.security.Role;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.librecms.contentsection.ContentSection;
|
import org.libreccm.configuration.ConfigurationManager;
|
||||||
|
import org.libreccm.core.CoreConstants;
|
||||||
|
import org.libreccm.security.*;
|
||||||
|
import org.librecms.CmsConstants;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO Needs a description
|
* TODO Needs a description
|
||||||
|
|
@ -56,8 +59,8 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
private final RoleRequestLocal m_role;
|
private final RoleRequestLocal m_role;
|
||||||
private final SingleSelectionModel m_model;
|
private final SingleSelectionModel m_model;
|
||||||
|
|
||||||
//private final MemberTable m_members;
|
private final MemberTable m_members;
|
||||||
//private final AdminTable m_admins;
|
private final AdminTable m_admins;
|
||||||
|
|
||||||
private final SimpleContainer m_detailPane;
|
private final SimpleContainer m_detailPane;
|
||||||
|
|
||||||
|
|
@ -68,8 +71,8 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
m_model = model;
|
m_model = model;
|
||||||
m_role = role;
|
m_role = role;
|
||||||
|
|
||||||
//m_members = new MemberTable();
|
m_members = new MemberTable();
|
||||||
//m_admins = new AdminTable();
|
m_admins = new AdminTable();
|
||||||
|
|
||||||
final ActionLink memberAddLink = new ActionLink
|
final ActionLink memberAddLink = new ActionLink
|
||||||
(new Label(gz("cms.ui.role.member.add")));
|
(new Label(gz("cms.ui.role.member.add")));
|
||||||
|
|
@ -85,7 +88,7 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
m_detailPane.add(new MemberSection(memberAddLink));
|
m_detailPane.add(new MemberSection(memberAddLink));
|
||||||
m_detailPane.add(new AdminSection(adminAddLink));
|
m_detailPane.add(new AdminSection(adminAddLink));
|
||||||
|
|
||||||
/*
|
|
||||||
final PartySearchForm memberSearchForm = new PartySearchForm();
|
final PartySearchForm memberSearchForm = new PartySearchForm();
|
||||||
add(memberSearchForm);
|
add(memberSearchForm);
|
||||||
|
|
||||||
|
|
@ -111,18 +114,12 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
adminAddForm.getForm().addSubmissionListener
|
adminAddForm.getForm().addSubmissionListener
|
||||||
(new CancelListener(adminAddForm.getForm()));
|
(new CancelListener(adminAddForm.getForm()));
|
||||||
resume(adminAddForm.getForm(), m_detailPane);
|
resume(adminAddForm.getForm(), m_detailPane);
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
}
|
||||||
private boolean hasAdmin(final PageState state) {
|
|
||||||
return CMS.getContext().getSecurityManager()..canAccess
|
|
||||||
(state.getRequest(), SecurityConstants.STAFF_ADMIN);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
private class AdminVisible extends VisibilityComponent {
|
private class AdminVisible extends VisibilityComponent {
|
||||||
AdminVisible(final Component child) {
|
AdminVisible(final Component child) {
|
||||||
super(child, SecurityConstants.STAFF_ADMIN);
|
super(child, CmsConstants.PRIVILEGE_ADMINISTER_ROLES);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -139,35 +136,30 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
group.addAction(new AdminVisible(deleteLink), ActionGroup.DELETE);
|
group.addAction(new AdminVisible(deleteLink), ActionGroup.DELETE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
private class Properties extends PropertyList {
|
private class Properties extends PropertyList {
|
||||||
protected final java.util.List properties(final PageState state) {
|
protected final java.util.List properties(final PageState state) {
|
||||||
final java.util.List props = super.properties(state);
|
final java.util.List props = super.properties(state);
|
||||||
|
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final ConfigurationManager manager = cdiUtil.findBean(ConfigurationManager.class);
|
||||||
|
final KernelConfig config = manager.findConfiguration(KernelConfig.class);
|
||||||
|
|
||||||
final Role role = m_role.getRole(state);
|
final Role role = m_role.getRole(state);
|
||||||
|
|
||||||
props.add(new Property(lz("cms.ui.name"),
|
props.add(new Property(lz("cms.ui.name"),
|
||||||
role.getName()));
|
role.getName()));
|
||||||
//props.add(new Property(lz("cms.ui.description"),
|
// Right now just loads the default locale description.
|
||||||
// role.getDescription()));
|
props.add(new Property(lz("cms.ui.description"),
|
||||||
|
role.getDescription().getValue(config.getDefaultLocale())));
|
||||||
|
|
||||||
final StringBuffer buffer = new StringBuffer();
|
// Since Permissions don't seem to have a "pretty" form, the granted privilege is used.
|
||||||
final ContentSection section = CMS.getContext
|
final String permissions = role.getPermissions().stream()
|
||||||
().getContentSection();
|
.map(Permission::getGrantedPrivilege)
|
||||||
/*
|
.collect(Collectors.joining(", "));
|
||||||
final DataQuery privs = RoleFactory.getRolePrivileges
|
|
||||||
(section.getID(), role.getGroup().getID());
|
|
||||||
|
|
||||||
while (privs.next()) {
|
if (permissions.length() > 0) {
|
||||||
buffer.append((String) privs.get("prettyName") + ", ");
|
props.add(new Property(lz("cms.ui.role.privileges"), permissions));
|
||||||
}
|
|
||||||
|
|
||||||
privs.close();*/
|
|
||||||
|
|
||||||
final int length = buffer.length();
|
|
||||||
|
|
||||||
if (length > 0) {
|
|
||||||
props.add(new Property(lz("cms.ui.role.privileges"),
|
|
||||||
buffer.toString().substring
|
|
||||||
(0, length - 2)));
|
|
||||||
} else {
|
} else {
|
||||||
props.add(new Property(lz("cms.ui.role.privileges"),
|
props.add(new Property(lz("cms.ui.role.privileges"),
|
||||||
lz("cms.ui.role.privilege.none")));
|
lz("cms.ui.role.privilege.none")));
|
||||||
|
|
@ -185,7 +177,7 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
final ActionGroup group = new ActionGroup();
|
final ActionGroup group = new ActionGroup();
|
||||||
setBody(group);
|
setBody(group);
|
||||||
|
|
||||||
//group.setSubject(m_members);
|
group.setSubject(m_members);
|
||||||
group.addAction(new AdminVisible(memberAddLink), ActionGroup.ADD);
|
group.addAction(new AdminVisible(memberAddLink), ActionGroup.ADD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -197,18 +189,18 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
final ActionGroup group = new ActionGroup();
|
final ActionGroup group = new ActionGroup();
|
||||||
setBody(group);
|
setBody(group);
|
||||||
|
|
||||||
//group.setSubject(m_admins);
|
group.setSubject(m_admins);
|
||||||
group.addAction(new AdminVisible(adminAddLink), ActionGroup.ADD);
|
group.addAction(new AdminVisible(adminAddLink), ActionGroup.ADD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX globz
|
|
||||||
private static final String[] s_memberColumns = new String[] {
|
private static final String[] s_memberColumns = new String[] {
|
||||||
lz("cms.ui.name"),
|
lz("cms.ui.name"),
|
||||||
lz("cms.ui.role.member.email"),
|
lz("cms.ui.role.member.email"),
|
||||||
lz("cms.ui.role.member.remove")
|
lz("cms.ui.role.member.remove")
|
||||||
};
|
};
|
||||||
/*
|
|
||||||
private class MemberTable extends Table {
|
private class MemberTable extends Table {
|
||||||
MemberTable() {
|
MemberTable() {
|
||||||
super(new MemberTableModelBuilder(m_role), s_memberColumns);
|
super(new MemberTableModelBuilder(m_role), s_memberColumns);
|
||||||
|
|
@ -223,22 +215,25 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
|
|
||||||
private class Listener extends TableActionAdapter {
|
private class Listener extends TableActionAdapter {
|
||||||
public final void cellSelected(final TableActionEvent e) {
|
public final void cellSelected(final TableActionEvent e) {
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final PageState state = e.getPageState();
|
final PageState state = e.getPageState();
|
||||||
|
final PermissionChecker permissionChecker = cdiUtil.findBean(PermissionChecker.class);
|
||||||
|
|
||||||
if (e.getColumn().intValue() == 2 && hasAdmin(state)) {
|
if (e.getColumn() == 2 && permissionChecker.isPermitted(CmsConstants.PRIVILEGE_ADMINISTER_ROLES)) {
|
||||||
final Role role = m_role.getRole(state);
|
final Role role = m_role.getRole(state);
|
||||||
final Party party = (Party) DomainObjectFactory.newInstance
|
long itemId = Long.parseLong(e.getRowKey().toString());
|
||||||
(new OID(Party.BASE_DATA_OBJECT_TYPE,
|
|
||||||
new BigDecimal(e.getRowKey().toString())));
|
|
||||||
|
|
||||||
role.remove(party);
|
final PartyRepository partyRepository = cdiUtil.findBean(PartyRepository.class);
|
||||||
role.save();
|
final RoleManager roleManager = cdiUtil.findBean(RoleManager.class);
|
||||||
|
final Party party = partyRepository.findById(itemId);
|
||||||
|
|
||||||
|
roleManager.removeRoleFromParty(role, party);
|
||||||
|
|
||||||
getRowSelectionModel().clearSelection(state);
|
getRowSelectionModel().clearSelection(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
|
||||||
private static final String[] s_adminColumns = new String[] {
|
private static final String[] s_adminColumns = new String[] {
|
||||||
lz("cms.ui.name"),
|
lz("cms.ui.name"),
|
||||||
|
|
@ -246,7 +241,7 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
lz("cms.ui.role.admin.remove")
|
lz("cms.ui.role.admin.remove")
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
private class AdminTable extends Table {
|
private class AdminTable extends Table {
|
||||||
AdminTable() {
|
AdminTable() {
|
||||||
super(new AdminTableModelBuilder(m_role), s_adminColumns);
|
super(new AdminTableModelBuilder(m_role), s_adminColumns);
|
||||||
|
|
@ -261,25 +256,20 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
|
|
||||||
private class Listener extends TableActionAdapter {
|
private class Listener extends TableActionAdapter {
|
||||||
public final void cellSelected(final TableActionEvent e) {
|
public final void cellSelected(final TableActionEvent e) {
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final PageState state = e.getPageState();
|
final PageState state = e.getPageState();
|
||||||
|
final PermissionChecker permissionChecker = cdiUtil.findBean(PermissionChecker.class);
|
||||||
|
|
||||||
if (e.getColumn().intValue() == 2 && hasAdmin(state)) {
|
if (e.getColumn() == 2 && permissionChecker.isPermitted(CmsConstants.PRIVILEGE_ADMINISTER_ROLES)) {
|
||||||
final Role role = m_role.getRole(state);
|
final Role role = m_role.getRole(state);
|
||||||
final Party party = (Party) DomainObjectFactory.newInstance
|
final PermissionManager permissionManager = cdiUtil.findBean(PermissionManager.class);
|
||||||
(new OID(Party.BASE_DATA_OBJECT_TYPE,
|
|
||||||
new BigDecimal(e.getRowKey().toString())));
|
|
||||||
|
|
||||||
final PermissionDescriptor perm =
|
permissionManager.revokePrivilege(CoreConstants.ADMIN_PRIVILEGE, role);
|
||||||
new PermissionDescriptor(PrivilegeDescriptor.ADMIN,
|
|
||||||
role.getGroup(),
|
|
||||||
party);
|
|
||||||
|
|
||||||
PermissionService.revokePermission(perm);
|
|
||||||
|
|
||||||
getRowSelectionModel().clearSelection(state);
|
getRowSelectionModel().clearSelection(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue