1
22
23 package com.liferay.portlet.communities.action;
24
25 import com.liferay.portal.NoSuchGroupException;
26 import com.liferay.portal.NoSuchRoleException;
27 import com.liferay.portal.kernel.servlet.SessionErrors;
28 import com.liferay.portal.kernel.util.Constants;
29 import com.liferay.portal.kernel.util.ParamUtil;
30 import com.liferay.portal.kernel.util.StringUtil;
31 import com.liferay.portal.security.auth.PrincipalException;
32 import com.liferay.portal.service.UserGroupRoleServiceUtil;
33 import com.liferay.portal.struts.PortletAction;
34
35 import javax.portlet.ActionRequest;
36 import javax.portlet.ActionResponse;
37 import javax.portlet.PortletConfig;
38 import javax.portlet.RenderRequest;
39 import javax.portlet.RenderResponse;
40
41 import org.apache.struts.action.ActionForm;
42 import org.apache.struts.action.ActionForward;
43 import org.apache.struts.action.ActionMapping;
44
45
51 public class EditUserRolesAction extends PortletAction {
52
53 public void processAction(
54 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
55 ActionRequest actionRequest, ActionResponse actionResponse)
56 throws Exception {
57
58 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
59
60 try {
61 if (cmd.equals("user_group_role_users")) {
62 updateUserGroupRoleUsers(actionRequest);
63 }
64
65 sendRedirect(actionRequest, actionResponse);
66 }
67 catch (Exception e) {
68 if (e instanceof PrincipalException) {
69 SessionErrors.add(actionRequest, e.getClass().getName());
70
71 setForward(actionRequest, "portlet.communities.error");
72 }
73 else {
74 throw e;
75 }
76 }
77 }
78
79 public ActionForward render(
80 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
81 RenderRequest renderRequest, RenderResponse renderResponse)
82 throws Exception {
83
84 try {
85 ActionUtil.getGroup(renderRequest);
86 ActionUtil.getRole(renderRequest);
87 }
88 catch (Exception e) {
89 if (e instanceof NoSuchGroupException ||
90 e instanceof NoSuchRoleException ||
91 e instanceof PrincipalException) {
92
93 SessionErrors.add(renderRequest, e.getClass().getName());
94
95 return mapping.findForward("portlet.communities.error");
96 }
97 else {
98 throw e;
99 }
100 }
101
102 return mapping.findForward(
103 getForward(renderRequest, "portlet.communities.edit_user_roles"));
104 }
105
106 protected void updateUserGroupRoleUsers(ActionRequest actionRequest)
107 throws Exception {
108
109 long groupId = ParamUtil.getLong(actionRequest, "groupId");
110 long roleId = ParamUtil.getLong(actionRequest, "roleId");
111
112 long[] addUserIds = StringUtil.split(
113 ParamUtil.getString(actionRequest, "addUserIds"), 0L);
114 long[] removeUserIds = StringUtil.split(
115 ParamUtil.getString(actionRequest, "removeUserIds"), 0L);
116
117 UserGroupRoleServiceUtil.addUserGroupRoles(addUserIds, groupId, roleId);
118 UserGroupRoleServiceUtil.deleteUserGroupRoles(
119 removeUserIds, groupId, roleId);
120 }
121
122 }