1
22
23 package com.liferay.portal.convert.action;
24
25 import com.liferay.portal.NoSuchRoleException;
26 import com.liferay.portal.RolePermissionsException;
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.ResourcePermissionLocalServiceUtil;
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
50 public class EditPermissionsAction extends PortletAction {
51
52 public void processAction(
53 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
54 ActionRequest actionRequest, ActionResponse actionResponse)
55 throws Exception {
56
57 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
58
59 try {
60 if (cmd.equals("merge")) {
61 merge(actionRequest, actionResponse);
62 }
63 else if (cmd.equals("reassign")) {
64 reassign(actionRequest, actionResponse);
65 }
66
67 sendRedirect(actionRequest, actionResponse);
68 }
69 catch (Exception e) {
70 if (e instanceof NoSuchRoleException ||
71 e instanceof PrincipalException ||
72 e instanceof RolePermissionsException) {
73
74 SessionErrors.add(actionRequest, e.getClass().getName());
75
76 setForward(actionRequest, "portlet.admin.error");
77 }
78 else {
79 throw e;
80 }
81 }
82 }
83
84 public ActionForward render(
85 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
86 RenderRequest renderRequest, RenderResponse renderResponse)
87 throws Exception {
88
89 return mapping.findForward(
90 getForward(renderRequest, "portlet.admin.edit_permissions"));
91 }
92
93 protected void merge(
94 ActionRequest actionRequest, ActionResponse actionResponse)
95 throws Exception {
96
97 long[] roleIds = StringUtil.split(
98 ParamUtil.getString(actionRequest, "roleIds"), 0L);
99
100 long toRoleId = roleIds[0];
101
102 for (int i = 1; i < roleIds.length; i++) {
103 long fromRoleId = roleIds[i];
104
105 ResourcePermissionLocalServiceUtil.mergePermissions(
106 fromRoleId, toRoleId);
107 }
108 }
109
110 protected void reassign(
111 ActionRequest actionRequest, ActionResponse actionResponse)
112 throws Exception {
113
114 long resourcePermissionId = ParamUtil.getLong(
115 actionRequest, "resourcePermissionId");
116 long toRoleId = ParamUtil.getLong(actionRequest, "toRoleId");
117
118 ResourcePermissionLocalServiceUtil.reassignPermissions(
119 resourcePermissionId, toRoleId);
120 }
121
122 }