001
014
015 package com.liferay.portlet.usersadmin.action;
016
017 import com.liferay.portal.NoSuchOrganizationException;
018 import com.liferay.portal.kernel.servlet.SessionErrors;
019 import com.liferay.portal.kernel.util.Constants;
020 import com.liferay.portal.kernel.util.ParamUtil;
021 import com.liferay.portal.kernel.util.StringUtil;
022 import com.liferay.portal.kernel.util.Validator;
023 import com.liferay.portal.model.Organization;
024 import com.liferay.portal.security.auth.PrincipalException;
025 import com.liferay.portal.security.membershippolicy.MembershipPolicyException;
026 import com.liferay.portal.service.OrganizationLocalServiceUtil;
027 import com.liferay.portal.service.UserGroupServiceUtil;
028 import com.liferay.portal.service.UserServiceUtil;
029 import com.liferay.portal.struts.PortletAction;
030
031 import javax.portlet.ActionRequest;
032 import javax.portlet.ActionResponse;
033 import javax.portlet.PortletConfig;
034 import javax.portlet.RenderRequest;
035 import javax.portlet.RenderResponse;
036
037 import org.apache.struts.action.ActionForm;
038 import org.apache.struts.action.ActionForward;
039 import org.apache.struts.action.ActionMapping;
040
041
044 public class EditOrganizationAssignmentsAction extends PortletAction {
045
046 @Override
047 public void processAction(
048 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
049 ActionRequest actionRequest, ActionResponse actionResponse)
050 throws Exception {
051
052 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
053
054 try {
055 if (cmd.equals("organization_user_groups")) {
056 updateOrganizationUserGroups(actionRequest);
057 }
058 else if (cmd.equals("organization_users")) {
059 updateOrganizationUsers(actionRequest);
060 }
061
062 if (Validator.isNotNull(cmd)) {
063 String redirect = ParamUtil.getString(
064 actionRequest, "assignmentsRedirect");
065
066 sendRedirect(actionRequest, actionResponse, redirect);
067 }
068 }
069 catch (Exception e) {
070 if (e instanceof MembershipPolicyException) {
071 SessionErrors.add(actionRequest, e.getClass(), e);
072 }
073 else if (e instanceof NoSuchOrganizationException ||
074 e instanceof PrincipalException) {
075
076 SessionErrors.add(actionRequest, e.getClass());
077
078 setForward(actionRequest, "portlet.users_admin.error");
079 }
080 else {
081 throw e;
082 }
083 }
084 }
085
086 @Override
087 public ActionForward render(
088 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
089 RenderRequest renderRequest, RenderResponse renderResponse)
090 throws Exception {
091
092 try {
093 ActionUtil.getOrganization(renderRequest);
094 }
095 catch (Exception e) {
096 if (e instanceof NoSuchOrganizationException ||
097 e instanceof PrincipalException) {
098
099 SessionErrors.add(renderRequest, e.getClass());
100
101 return mapping.findForward("portlet.users_admin.error");
102 }
103 else {
104 throw e;
105 }
106 }
107
108 return mapping.findForward(
109 getForward(
110 renderRequest,
111 "portlet.users_admin.edit_organization_assignments"));
112 }
113
114 protected void updateOrganizationUserGroups(ActionRequest actionRequest)
115 throws Exception {
116
117 long organizationId = ParamUtil.getLong(
118 actionRequest, "organizationId");
119
120 Organization organization =
121 OrganizationLocalServiceUtil.getOrganization(organizationId);
122
123 long groupId = organization.getGroup().getGroupId();
124
125 long[] addUserGroupIds = StringUtil.split(
126 ParamUtil.getString(actionRequest, "addUserGroupIds"), 0L);
127 long[] removeUserGroupIds = StringUtil.split(
128 ParamUtil.getString(actionRequest, "removeUserGroupIds"), 0L);
129
130 UserGroupServiceUtil.addGroupUserGroups(groupId, addUserGroupIds);
131 UserGroupServiceUtil.unsetGroupUserGroups(groupId, removeUserGroupIds);
132 }
133
134 protected void updateOrganizationUsers(ActionRequest actionRequest)
135 throws Exception {
136
137 long organizationId = ParamUtil.getLong(
138 actionRequest, "organizationId");
139
140 long[] addUserIds = StringUtil.split(
141 ParamUtil.getString(actionRequest, "addUserIds"), 0L);
142 long[] removeUserIds = StringUtil.split(
143 ParamUtil.getString(actionRequest, "removeUserIds"), 0L);
144
145 UserServiceUtil.addOrganizationUsers(organizationId, addUserIds);
146 UserServiceUtil.unsetOrganizationUsers(organizationId, removeUserIds);
147 }
148
149 }