001
014
015 package com.liferay.portlet.usergroupsadmin;
016
017 import com.liferay.portal.DuplicateUserGroupException;
018 import com.liferay.portal.NoSuchUserGroupException;
019 import com.liferay.portal.RequiredUserGroupException;
020 import com.liferay.portal.UserGroupNameException;
021 import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet;
022 import com.liferay.portal.kernel.servlet.SessionErrors;
023 import com.liferay.portal.kernel.util.ParamUtil;
024 import com.liferay.portal.kernel.util.StringUtil;
025 import com.liferay.portal.model.UserGroup;
026 import com.liferay.portal.security.auth.PrincipalException;
027 import com.liferay.portal.security.membershippolicy.MembershipPolicyException;
028 import com.liferay.portal.service.ServiceContext;
029 import com.liferay.portal.service.ServiceContextFactory;
030 import com.liferay.portal.service.UserGroupServiceUtil;
031 import com.liferay.portal.service.UserServiceUtil;
032 import com.liferay.portlet.sites.util.SitesUtil;
033
034 import java.io.IOException;
035
036 import javax.portlet.ActionRequest;
037 import javax.portlet.ActionResponse;
038 import javax.portlet.PortletException;
039 import javax.portlet.RenderRequest;
040 import javax.portlet.RenderResponse;
041
042
046 public class UserGroupsAdminPortlet extends MVCPortlet {
047
048 public void deleteUserGroups(
049 ActionRequest actionRequest, ActionResponse actionResponse)
050 throws Exception {
051
052 long[] deleteUserGroupIds = StringUtil.split(
053 ParamUtil.getString(actionRequest, "deleteUserGroupIds"), 0L);
054
055 for (long deleteUserGroupId : deleteUserGroupIds) {
056 UserGroupServiceUtil.deleteUserGroup(deleteUserGroupId);
057 }
058 }
059
060 public void editUserGroup(
061 ActionRequest actionRequest, ActionResponse actionResponse)
062 throws Exception {
063
064 long userGroupId = ParamUtil.getLong(actionRequest, "userGroupId");
065
066 String name = ParamUtil.getString(actionRequest, "name");
067 String description = ParamUtil.getString(actionRequest, "description");
068
069 ServiceContext serviceContext = ServiceContextFactory.getInstance(
070 UserGroup.class.getName(), actionRequest);
071
072 UserGroup userGroup = null;
073
074 if (userGroupId <= 0) {
075
076
077
078 userGroup = UserGroupServiceUtil.addUserGroup(
079 name, description, serviceContext);
080 }
081 else {
082
083
084
085 userGroup = UserGroupServiceUtil.updateUserGroup(
086 userGroupId, name, description, serviceContext);
087 }
088
089
090
091 long publicLayoutSetPrototypeId = ParamUtil.getLong(
092 actionRequest, "publicLayoutSetPrototypeId");
093 long privateLayoutSetPrototypeId = ParamUtil.getLong(
094 actionRequest, "privateLayoutSetPrototypeId");
095 boolean publicLayoutSetPrototypeLinkEnabled = ParamUtil.getBoolean(
096 actionRequest, "publicLayoutSetPrototypeLinkEnabled");
097 boolean privateLayoutSetPrototypeLinkEnabled = ParamUtil.getBoolean(
098 actionRequest, "privateLayoutSetPrototypeLinkEnabled");
099
100 if ((privateLayoutSetPrototypeId > 0) ||
101 (publicLayoutSetPrototypeId > 0)) {
102
103 SitesUtil.updateLayoutSetPrototypesLinks(
104 userGroup.getGroup(), publicLayoutSetPrototypeId,
105 privateLayoutSetPrototypeId,
106 publicLayoutSetPrototypeLinkEnabled,
107 privateLayoutSetPrototypeLinkEnabled);
108 }
109 }
110
111 public void editUserGroupAssignments(
112 ActionRequest actionRequest, ActionResponse actionResponse)
113 throws Exception {
114
115 long userGroupId = ParamUtil.getLong(actionRequest, "userGroupId");
116
117 long[] addUserIds = StringUtil.split(
118 ParamUtil.getString(actionRequest, "addUserIds"), 0L);
119 long[] removeUserIds = StringUtil.split(
120 ParamUtil.getString(actionRequest, "removeUserIds"), 0L);
121
122 UserServiceUtil.addUserGroupUsers(userGroupId, addUserIds);
123 UserServiceUtil.unsetUserGroupUsers(userGroupId, removeUserIds);
124 }
125
126 @Override
127 protected void doDispatch(
128 RenderRequest renderRequest, RenderResponse renderResponse)
129 throws IOException, PortletException {
130
131 if (SessionErrors.contains(
132 renderRequest, NoSuchUserGroupException.class.getName()) ||
133 SessionErrors.contains(
134 renderRequest, PrincipalException.class.getName())) {
135
136 include(
137 "/html/portlet/user_groups_admin/error.jsp", renderRequest,
138 renderResponse);
139 }
140 else if (SessionErrors.contains(
141 renderRequest,
142 RequiredUserGroupException.class.getName())) {
143
144 include(
145 "/html/portlet/user_groups_admin/view.jsp", renderRequest,
146 renderResponse);
147 }
148 else if (SessionErrors.contains(
149 renderRequest,
150 DuplicateUserGroupException.class.getName()) ||
151 SessionErrors.contains(
152 renderRequest, UserGroupNameException.class.getName())) {
153
154 include(
155 "/html/portlet/user_groups_admin/edit_user_group.jsp",
156 renderRequest, renderResponse);
157 }
158 else {
159 super.doDispatch(renderRequest, renderResponse);
160 }
161 }
162
163 @Override
164 protected boolean isSessionErrorException(Throwable cause) {
165 if (cause instanceof DuplicateUserGroupException ||
166 cause instanceof MembershipPolicyException ||
167 cause instanceof NoSuchUserGroupException ||
168 cause instanceof PrincipalException ||
169 cause instanceof RequiredUserGroupException ||
170 cause instanceof UserGroupNameException) {
171
172 return true;
173 }
174
175 return false;
176 }
177
178 }