Fixed another Lazy Init Exception
parent
d08d49c79f
commit
39fae3139c
|
|
@ -35,16 +35,12 @@ import com.arsdigita.cms.ui.BaseItemPane;
|
||||||
import com.arsdigita.cms.ui.PartySearchForm;
|
import com.arsdigita.cms.ui.PartySearchForm;
|
||||||
import com.arsdigita.cms.ui.VisibilityComponent;
|
import com.arsdigita.cms.ui.VisibilityComponent;
|
||||||
import com.arsdigita.globalization.GlobalizedMessage;
|
import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
import com.arsdigita.kernel.KernelConfig;
|
|
||||||
import com.arsdigita.toolbox.ui.ActionGroup;
|
import com.arsdigita.toolbox.ui.ActionGroup;
|
||||||
import com.arsdigita.toolbox.ui.Property;
|
import com.arsdigita.toolbox.ui.Property;
|
||||||
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.logging.log4j.LogManager;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.configuration.ConfigurationManager;
|
|
||||||
import org.libreccm.security.Party;
|
import org.libreccm.security.Party;
|
||||||
import org.libreccm.security.PartyRepository;
|
import org.libreccm.security.PartyRepository;
|
||||||
import org.libreccm.security.PermissionChecker;
|
import org.libreccm.security.PermissionChecker;
|
||||||
|
|
@ -129,40 +125,53 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final java.util.List<Property> properties(
|
protected final java.util.List<Property> properties(
|
||||||
final PageState state) {
|
final PageState state
|
||||||
|
) {
|
||||||
|
|
||||||
final java.util.List<Property> properties = super.properties(
|
final java.util.List<Property> properties = super.properties(
|
||||||
state);
|
state
|
||||||
|
);
|
||||||
|
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final ConfigurationManager manager = cdiUtil.findBean(
|
final RoleAdminPaneController controller = cdiUtil
|
||||||
ConfigurationManager.class);
|
.findBean(RoleAdminPaneController.class);
|
||||||
final KernelConfig config = manager.findConfiguration(
|
|
||||||
KernelConfig.class);
|
|
||||||
|
|
||||||
final Role role = roleRequestLocal.getRole(state);
|
final Role role = roleRequestLocal.getRole(state);
|
||||||
|
|
||||||
properties.add(new Property(lz("cms.ui.role.name"),
|
properties.add(
|
||||||
role.getName()));
|
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"),
|
|
||||||
role.getDescription().getValue(config.getDefaultLocale())));
|
|
||||||
|
|
||||||
// Since Permissions don't seem to have a "pretty" form, the granted privilege is used.
|
// Right now just loads the default locale description.
|
||||||
final RoleAdminPaneController controller = cdiUtil.findBean(
|
properties.add(
|
||||||
RoleAdminPaneController.class);
|
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
|
final String permissions = controller
|
||||||
.generateGrantedPermissionsString(
|
.generateGrantedPermissionsString(
|
||||||
role,
|
role,
|
||||||
CMS.getContext().getContentSection());
|
CMS.getContext().getContentSection()
|
||||||
|
);
|
||||||
|
|
||||||
if (permissions.length() > 0) {
|
if (permissions.length() > 0) {
|
||||||
properties.add(new Property(lz("cms.ui.role.privileges"),
|
properties.add(
|
||||||
permissions));
|
new Property(
|
||||||
|
lz("cms.ui.role.privileges"),
|
||||||
|
permissions
|
||||||
|
)
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
properties.add(new Property(lz("cms.ui.role.privileges"),
|
properties.add(
|
||||||
lz("cms.ui.role.privilege.none")));
|
new Property(
|
||||||
|
lz("cms.ui.role.privileges"),
|
||||||
|
lz("cms.ui.role.privilege.none")
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
|
|
@ -192,7 +201,9 @@ class BaseRoleItemPane extends BaseItemPane {
|
||||||
private class MemberTable extends Table {
|
private class MemberTable extends Table {
|
||||||
|
|
||||||
private static final int COL_NAME = 0;
|
private static final int COL_NAME = 0;
|
||||||
|
|
||||||
private static final int COL_EMAIL = 1;
|
private static final int COL_EMAIL = 1;
|
||||||
|
|
||||||
private static final int COL_REMOVE = 2;
|
private static final int COL_REMOVE = 2;
|
||||||
|
|
||||||
MemberTable() {
|
MemberTable() {
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ class RoleAdminPaneController {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private RoleManager roleManager;
|
private RoleManager roleManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private RoleRepository roleRepo;
|
private RoleRepository roleRepo;
|
||||||
|
|
||||||
|
|
@ -88,6 +88,22 @@ class RoleAdminPaneController {
|
||||||
return new ArrayList<>(contentSection.getRoles());
|
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,
|
public String[] getGrantedPrivileges(final Role role,
|
||||||
final ContentSection section) {
|
final ContentSection section) {
|
||||||
final List<Permission> sectionPermissions = permissionManager
|
final List<Permission> sectionPermissions = permissionManager
|
||||||
|
|
@ -217,10 +233,10 @@ class RoleAdminPaneController {
|
||||||
KernelConfig.class);
|
KernelConfig.class);
|
||||||
final Locale defaultLocale = kernelConfig.getDefaultLocale();
|
final Locale defaultLocale = kernelConfig.getDefaultLocale();
|
||||||
|
|
||||||
role.setName(roleName);
|
roleToSave.setName(roleName);
|
||||||
role.getDescription().addValue(defaultLocale, roleDescription);
|
roleToSave.getDescription().addValue(defaultLocale, roleDescription);
|
||||||
|
|
||||||
roleRepo.save(role);
|
roleRepo.save(roleToSave);
|
||||||
|
|
||||||
final ContentSection contentSection = sectionRepo.findById(
|
final ContentSection contentSection = sectionRepo.findById(
|
||||||
CMS.getContext().getContentSection().getObjectId())
|
CMS.getContext().getContentSection().getObjectId())
|
||||||
|
|
@ -241,28 +257,28 @@ class RoleAdminPaneController {
|
||||||
final Folder rootAssetsFolder = contentSection.getRootAssetsFolder();
|
final Folder rootAssetsFolder = contentSection.getRootAssetsFolder();
|
||||||
|
|
||||||
final List<Permission> currentPermissionsSection = permissionManager
|
final List<Permission> currentPermissionsSection = permissionManager
|
||||||
.findPermissionsForRoleAndObject(role, contentSection);
|
.findPermissionsForRoleAndObject(roleToSave, contentSection);
|
||||||
final List<Permission> currentPermissionsDocuments = permissionManager
|
final List<Permission> currentPermissionsDocuments = permissionManager
|
||||||
.findPermissionsForRoleAndObject(role, rootDocumentsFolder);
|
.findPermissionsForRoleAndObject(roleToSave, rootDocumentsFolder);
|
||||||
final List<Permission> currentPermissionsAssets = permissionManager
|
final List<Permission> currentPermissionsAssets = permissionManager
|
||||||
.findPermissionsForRoleAndObject(role, rootAssetsFolder);
|
.findPermissionsForRoleAndObject(roleToSave, rootAssetsFolder);
|
||||||
|
|
||||||
//Revoke permissions not in selectedPermissions
|
//Revoke permissions not in selectedPermissions
|
||||||
revokeNotSelectedPrivileges(selectedPermissions,
|
revokeNotSelectedPrivileges(selectedPermissions,
|
||||||
role,
|
roleToSave,
|
||||||
currentPermissionsSection);
|
currentPermissionsSection);
|
||||||
revokeNotSelectedPrivileges(selectedPermissions,
|
revokeNotSelectedPrivileges(selectedPermissions,
|
||||||
role,
|
roleToSave,
|
||||||
currentPermissionsDocuments);
|
currentPermissionsDocuments);
|
||||||
revokeNotSelectedPrivileges(selectedPermissions,
|
revokeNotSelectedPrivileges(selectedPermissions,
|
||||||
role,
|
roleToSave,
|
||||||
currentPermissionsAssets);
|
currentPermissionsAssets);
|
||||||
|
|
||||||
// Grant selected privileges
|
// Grant selected privileges
|
||||||
for (final String privilege : adminPrivileges) {
|
for (final String privilege : adminPrivileges) {
|
||||||
if (isPrivilegeSelected(selectedPermissions, privilege)) {
|
if (isPrivilegeSelected(selectedPermissions, privilege)) {
|
||||||
permissionManager.grantPrivilege(privilege,
|
permissionManager.grantPrivilege(privilege,
|
||||||
role,
|
roleToSave,
|
||||||
contentSection);
|
contentSection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -270,7 +286,7 @@ class RoleAdminPaneController {
|
||||||
for (final String privilege : itemPrivileges) {
|
for (final String privilege : itemPrivileges) {
|
||||||
if (isPrivilegeSelected(selectedPermissions, privilege)) {
|
if (isPrivilegeSelected(selectedPermissions, privilege)) {
|
||||||
permissionManager.grantPrivilege(privilege,
|
permissionManager.grantPrivilege(privilege,
|
||||||
role,
|
roleToSave,
|
||||||
rootDocumentsFolder);
|
rootDocumentsFolder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -278,7 +294,7 @@ class RoleAdminPaneController {
|
||||||
for (final String privilege : assetPrivileges) {
|
for (final String privilege : assetPrivileges) {
|
||||||
if (isPrivilegeSelected(selectedPermissions, privilege)) {
|
if (isPrivilegeSelected(selectedPermissions, privilege)) {
|
||||||
permissionManager.grantPrivilege(privilege,
|
permissionManager.grantPrivilege(privilege,
|
||||||
role,
|
roleToSave,
|
||||||
rootAssetsFolder);
|
rootAssetsFolder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,20 +24,10 @@ import com.arsdigita.bebop.event.FormInitListener;
|
||||||
import com.arsdigita.bebop.event.FormProcessListener;
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
import com.arsdigita.cms.CMS;
|
import com.arsdigita.cms.CMS;
|
||||||
import com.arsdigita.kernel.KernelConfig;
|
|
||||||
|
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.configuration.ConfigurationManager;
|
|
||||||
import org.libreccm.l10n.LocalizedString;
|
|
||||||
import org.libreccm.security.Permission;
|
|
||||||
import org.libreccm.security.PermissionManager;
|
import org.libreccm.security.PermissionManager;
|
||||||
import org.libreccm.security.Role;
|
import org.libreccm.security.Role;
|
||||||
import org.libreccm.security.RoleRepository;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a {@link com.arsdigita.bebop.Form Form} to edit
|
* Represents a {@link com.arsdigita.bebop.Form Form} to edit
|
||||||
|
|
@ -76,17 +66,15 @@ final class RoleEditForm extends BaseRoleForm {
|
||||||
final PageState state = event.getPageState();
|
final PageState state = event.getPageState();
|
||||||
final Role role = roleRequestLocal.getRole(state);
|
final Role role = roleRequestLocal.getRole(state);
|
||||||
|
|
||||||
final KernelConfig kernelConfig = KernelConfig.getConfig();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final Locale defaultLocale = kernelConfig.getDefaultLocale();
|
final RoleAdminPaneController controller = cdiUtil.findBean(
|
||||||
|
RoleAdminPaneController.class);
|
||||||
|
|
||||||
getRoleName().setValue(state, role.getName());
|
getRoleName().setValue(state, role.getName());
|
||||||
getRoleDescription().setValue(
|
getRoleDescription().setValue(
|
||||||
state,
|
state,
|
||||||
role.getDescription().getValue(defaultLocale));
|
controller.getRoleDescription(role)
|
||||||
|
);
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
|
||||||
final RoleAdminPaneController controller = cdiUtil.findBean(
|
|
||||||
RoleAdminPaneController.class);
|
|
||||||
|
|
||||||
final String[] permissions = controller.getGrantedPrivileges(
|
final String[] permissions = controller.getGrantedPrivileges(
|
||||||
role, CMS.getContext().getContentSection());
|
role, CMS.getContext().getContentSection());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue