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