1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.portal.web.role;
35
36 import fr.paris.lutece.portal.business.role.Role;
37 import fr.paris.lutece.portal.business.role.RoleHome;
38 import fr.paris.lutece.portal.service.message.AdminMessage;
39 import fr.paris.lutece.portal.service.message.AdminMessageService;
40 import fr.paris.lutece.portal.service.role.RoleRemovalListenerService;
41 import fr.paris.lutece.portal.service.template.AppTemplateService;
42 import fr.paris.lutece.portal.service.workgroup.AdminWorkgroupService;
43 import fr.paris.lutece.portal.web.admin.AdminFeaturesPageJspBean;
44 import fr.paris.lutece.portal.web.constants.Messages;
45 import fr.paris.lutece.util.html.HtmlTemplate;
46 import fr.paris.lutece.util.string.StringUtil;
47 import fr.paris.lutece.util.url.UrlItem;
48
49 import java.util.ArrayList;
50 import java.util.Collection;
51 import java.util.HashMap;
52 import java.util.Map;
53
54 import javax.servlet.http.HttpServletRequest;
55
56 import org.apache.commons.lang.StringUtils;
57
58
59
60
61
62 public class RoleJspBean extends AdminFeaturesPageJspBean
63 {
64
65
66
67
68
69
70
71 public static final String RIGHT_ROLES_MANAGEMENT = "CORE_ROLES_MANAGEMENT";
72
73
74
75
76 private static final long serialVersionUID = -764350969432795013L;
77
78
79 private static final String MARK_ROLES_LIST = "roles_list";
80 private static final String MARK_ROLE = "role";
81 private static final String MARK_DEFAULT_VALUE_WORKGROUP_KEY = "workgroup_key_default_value";
82 private static final String MARK_WORKGROUP_KEY_LIST = "workgroup_key_list";
83
84
85 private static final String PARAMETER_PAGE_ROLE = "role";
86 private static final String PARAMETER_PAGE_ROLE_DESCRIPTION = "role_description";
87 private static final String PARAMETER_PAGE_WORKGROUP = "workgroup_key";
88
89
90 private static final String TEMPLATE_MANAGE_ROLES = "admin/role/manage_roles.html";
91 private static final String TEMPLATE_PAGE_ROLE_MODIFY = "admin/role/modify_page_role.html";
92 private static final String TEMPLATE_CREATE_PAGE_ROLE = "admin/role/create_page_role.html";
93
94
95 private static final String PATH_JSP = "jsp/admin/role/";
96 private static final String JSP_REMOVE_ROLE = "DoRemovePageRole.jsp";
97
98
99 private static final String PROPERTY_PAGE_TITLE_CREATE_ROLE = "portal.role.create_role.pageTitle";
100 private static final String PROPERTY_PAGE_TITLE_MODIFY_ROLE = "portal.role.modify_role.pageTitle";
101
102
103 private static final String MESSAGE_ROLE_EXIST = "portal.role.message.roleexist";
104 private static final String MESSAGE_ROLE_FORMAT = "portal.role.message.roleformat";
105 private static final String MESSAGE_CONFIRM_REMOVE = "portal.role.message.confirmRemoveRole";
106 private static final String MESSAGE_CANNOT_REMOVE_ROLE = "portal.role.message.cannotRemoveRole";
107
108
109
110
111 public RoleJspBean( )
112 {
113 }
114
115
116
117
118
119
120 public String getManagePageRole( HttpServletRequest request )
121 {
122 setPageTitleProperty( null );
123
124 Map<String, Object> model = new HashMap<String, Object>( );
125 Collection<Role> listRoles = RoleHome.findAll( );
126 listRoles = AdminWorkgroupService.getAuthorizedCollection( listRoles, getUser( ) );
127 model.put( MARK_ROLES_LIST, listRoles );
128
129 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_ROLES, getLocale( ), model );
130
131 return getAdminPage( template.getHtml( ) );
132 }
133
134
135
136
137
138
139 public String getCreatePageRole( HttpServletRequest request )
140 {
141 setPageTitleProperty( PROPERTY_PAGE_TITLE_CREATE_ROLE );
142
143 Map<String, Object> model = new HashMap<String, Object>( );
144
145 model.put( MARK_DEFAULT_VALUE_WORKGROUP_KEY, AdminWorkgroupService.ALL_GROUPS );
146 model.put( MARK_WORKGROUP_KEY_LIST, AdminWorkgroupService.getUserWorkgroups( getUser( ), getLocale( ) ) );
147
148 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_CREATE_PAGE_ROLE, getLocale( ), model );
149
150 return getAdminPage( template.getHtml( ) );
151 }
152
153
154
155
156
157
158 public String doCreatePageRole( HttpServletRequest request )
159 {
160 String strPageRole = request.getParameter( PARAMETER_PAGE_ROLE );
161 String strPageRoleDescription = request.getParameter( PARAMETER_PAGE_ROLE_DESCRIPTION );
162 String strPageWorkgroup = request.getParameter( PARAMETER_PAGE_WORKGROUP );
163
164
165 if ( ( strPageRole == null ) || strPageRole.equals( "" ) || ( strPageRoleDescription == null ) ||
166 strPageRoleDescription.equals( "" ) || ( strPageWorkgroup == null ) )
167 {
168 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
169 }
170
171
172 if ( !StringUtil.checkCodeKey( strPageRole ) )
173 {
174 return AdminMessageService.getMessageUrl( request, MESSAGE_ROLE_FORMAT, AdminMessage.TYPE_STOP );
175 }
176
177
178 if ( RoleHome.findExistRole( strPageRole ) )
179 {
180 return AdminMessageService.getMessageUrl( request, MESSAGE_ROLE_EXIST, AdminMessage.TYPE_STOP );
181 }
182
183 Role role = new Role( );
184 role.setRole( strPageRole );
185 role.setRoleDescription( strPageRoleDescription );
186 role.setWorkgroup( strPageWorkgroup );
187 RoleHome.create( role );
188
189 return getHomeUrl( request );
190 }
191
192
193
194
195
196
197 public String getModifyPageRole( HttpServletRequest request )
198 {
199 setPageTitleProperty( PROPERTY_PAGE_TITLE_MODIFY_ROLE );
200
201 Map<String, Object> model = new HashMap<String, Object>( );
202
203 String strPageRole = request.getParameter( PARAMETER_PAGE_ROLE );
204
205 Role role = RoleHome.findByPrimaryKey( strPageRole );
206
207 if ( role == null )
208 {
209 return getManagePageRole( request );
210 }
211
212 model.put( MARK_ROLE, role );
213 model.put( MARK_WORKGROUP_KEY_LIST, AdminWorkgroupService.getUserWorkgroups( getUser( ), getLocale( ) ) );
214
215 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_PAGE_ROLE_MODIFY, getLocale( ), model );
216
217 return getAdminPage( template.getHtml( ) );
218 }
219
220
221
222
223
224
225 public String doModifyPageRole( HttpServletRequest request )
226 {
227 String strPageRole = request.getParameter( PARAMETER_PAGE_ROLE );
228 String strPageRoleDescription = request.getParameter( PARAMETER_PAGE_ROLE_DESCRIPTION );
229 String strPageWorkgroup = request.getParameter( PARAMETER_PAGE_WORKGROUP );
230
231
232 if ( ( strPageRoleDescription == null ) || strPageRoleDescription.equals( "" ) || ( strPageWorkgroup == null ) )
233 {
234 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
235 }
236
237 Role role = new Role( );
238 role.setRole( strPageRole );
239 role.setRoleDescription( strPageRoleDescription );
240 role.setWorkgroup( strPageWorkgroup );
241 RoleHome.update( role );
242
243 return getHomeUrl( request );
244 }
245
246
247
248
249
250
251 public String getRemovePageRole( HttpServletRequest request )
252 {
253 String strPageRole = request.getParameter( PARAMETER_PAGE_ROLE );
254 if ( StringUtils.isBlank( strPageRole ) )
255 {
256 return AdminMessageService.getMessageUrl( request, Messages.MESSAGE_INVALID_ENTRY,
257 new Object[] { PARAMETER_PAGE_ROLE }, AdminMessage.TYPE_STOP );
258 }
259 Role role = RoleHome.findByPrimaryKey( strPageRole );
260 if ( role == null || !strPageRole.equals( role.getRole( ) ) )
261 {
262 return AdminMessageService.getMessageUrl( request, Messages.MESSAGE_INVALID_ENTRY,
263 new Object[] { strPageRole }, AdminMessage.TYPE_STOP );
264 }
265 UrlItem url = new UrlItem( PATH_JSP + JSP_REMOVE_ROLE + "?role=" + request.getParameter( PARAMETER_PAGE_ROLE ) );
266
267 return AdminMessageService.getMessageUrl( request, MESSAGE_CONFIRM_REMOVE, new Object[] { strPageRole }, url.getUrl( ),
268 AdminMessage.TYPE_CONFIRMATION );
269 }
270
271
272
273
274
275
276 public String doRemovePageRole( HttpServletRequest request )
277 {
278 String strPageRole = request.getParameter( PARAMETER_PAGE_ROLE );
279 ArrayList<String> listErrors = new ArrayList<String>( );
280
281 if ( !RoleRemovalListenerService.getService( ).checkForRemoval( strPageRole, listErrors, getLocale( ) ) )
282 {
283 String strCause = AdminMessageService.getFormattedList( listErrors, getLocale( ) );
284 Object[] args = { strPageRole, strCause };
285
286 return AdminMessageService.getMessageUrl( request, MESSAGE_CANNOT_REMOVE_ROLE, args, AdminMessage.TYPE_STOP );
287 }
288
289 RoleHome.remove( strPageRole );
290
291 return getHomeUrl( request );
292 }
293 }