001
014
015 package com.liferay.portlet.sites.action;
016
017 import com.liferay.portal.NoSuchGroupException;
018 import com.liferay.portal.NoSuchRoleException;
019 import com.liferay.portal.kernel.servlet.SessionErrors;
020 import com.liferay.portal.kernel.util.Constants;
021 import com.liferay.portal.kernel.util.ParamUtil;
022 import com.liferay.portal.kernel.util.StringUtil;
023 import com.liferay.portal.model.Role;
024 import com.liferay.portal.model.RoleConstants;
025 import com.liferay.portal.security.auth.PrincipalException;
026 import com.liferay.portal.service.UserGroupGroupRoleServiceUtil;
027 import com.liferay.portal.struts.PortletAction;
028 import com.liferay.portal.util.WebKeys;
029
030 import javax.portlet.ActionRequest;
031 import javax.portlet.ActionResponse;
032 import javax.portlet.PortletConfig;
033 import javax.portlet.RenderRequest;
034 import javax.portlet.RenderResponse;
035
036 import org.apache.struts.action.ActionForm;
037 import org.apache.struts.action.ActionForward;
038 import org.apache.struts.action.ActionMapping;
039
040
043 public class EditUserGroupRolesAction extends PortletAction {
044
045 @Override
046 public void processAction(
047 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
048 ActionRequest actionRequest, ActionResponse actionResponse)
049 throws Exception {
050
051 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
052
053 try {
054 if (cmd.equals("user_group_group_role_users")) {
055 updateUserGroupGroupRoleUsers(actionRequest);
056 }
057
058 sendRedirect(actionRequest, actionResponse);
059 }
060 catch (Exception e) {
061 if (e instanceof PrincipalException) {
062 SessionErrors.add(actionRequest, e.getClass().getName());
063
064 setForward(actionRequest, "portlet.sites_admin.error");
065 }
066 else {
067 throw e;
068 }
069 }
070 }
071
072 @Override
073 public ActionForward render(
074 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
075 RenderRequest renderRequest, RenderResponse renderResponse)
076 throws Exception {
077
078 try {
079 ActionUtil.getGroup(renderRequest);
080 ActionUtil.getRole(renderRequest);
081
082 Role role = (Role)renderRequest.getAttribute(WebKeys.ROLE);
083
084 if (role != null) {
085 String name = role.getName();
086
087 if (name.equals(RoleConstants.ORGANIZATION_USER) ||
088 name.equals(RoleConstants.SITE_MEMBER)) {
089
090 throw new NoSuchRoleException();
091 }
092 }
093 }
094 catch (Exception e) {
095 if (e instanceof NoSuchGroupException ||
096 e instanceof NoSuchRoleException ||
097 e instanceof PrincipalException) {
098
099 SessionErrors.add(renderRequest, e.getClass().getName());
100
101 return mapping.findForward("portlet.sites_admin.error");
102 }
103 else {
104 throw e;
105 }
106 }
107
108 return mapping.findForward(
109 getForward(
110 renderRequest, "portlet.sites_admin.edit_user_group_roles"));
111 }
112
113 protected void updateUserGroupGroupRoleUsers(ActionRequest actionRequest)
114 throws Exception {
115
116 long groupId = ParamUtil.getLong(actionRequest, "groupId");
117 long roleId = ParamUtil.getLong(actionRequest, "roleId");
118
119 long[] addUserGroupIds = StringUtil.split(
120 ParamUtil.getString(actionRequest, "addUserGroupIds"), 0L);
121 long[] removeUserGroupIds = StringUtil.split(
122 ParamUtil.getString(actionRequest, "removeUserGroupIds"), 0L);
123
124 UserGroupGroupRoleServiceUtil.addUserGroupGroupRoles(
125 addUserGroupIds, groupId, roleId);
126 UserGroupGroupRoleServiceUtil.deleteUserGroupGroupRoles(
127 removeUserGroupIds, groupId, roleId);
128 }
129
130 }