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.workgroup;
35
36 import java.util.ArrayList;
37 import java.util.Collection;
38 import java.util.Collections;
39 import java.util.HashMap;
40 import java.util.List;
41 import java.util.Map;
42 import java.util.stream.Collectors;
43
44 import javax.servlet.http.HttpServletRequest;
45
46 import org.apache.commons.collections.CollectionUtils;
47 import org.apache.commons.lang3.StringUtils;
48
49 import fr.paris.lutece.portal.business.right.Level;
50 import fr.paris.lutece.portal.business.right.LevelHome;
51 import fr.paris.lutece.portal.business.user.AdminUser;
52 import fr.paris.lutece.portal.business.user.AdminUserHome;
53 import fr.paris.lutece.portal.business.workgroup.AdminWorkgroup;
54 import fr.paris.lutece.portal.business.workgroup.AdminWorkgroupFilter;
55 import fr.paris.lutece.portal.business.workgroup.AdminWorkgroupHome;
56 import fr.paris.lutece.portal.service.admin.AccessDeniedException;
57 import fr.paris.lutece.portal.service.admin.AdminUserService;
58 import fr.paris.lutece.portal.service.message.AdminMessage;
59 import fr.paris.lutece.portal.service.message.AdminMessageService;
60 import fr.paris.lutece.portal.service.security.SecurityTokenService;
61 import fr.paris.lutece.portal.service.template.AppTemplateService;
62 import fr.paris.lutece.portal.service.util.AppPathService;
63 import fr.paris.lutece.portal.service.util.AppPropertiesService;
64 import fr.paris.lutece.portal.service.workgroup.AdminWorkgroupService;
65 import fr.paris.lutece.portal.service.workgroup.WorkgroupRemovalListenerService;
66 import fr.paris.lutece.portal.web.admin.AdminFeaturesPageJspBean;
67 import fr.paris.lutece.portal.web.constants.Messages;
68 import fr.paris.lutece.portal.web.constants.Parameters;
69 import fr.paris.lutece.portal.web.util.LocalizedPaginator;
70 import fr.paris.lutece.util.ReferenceItem;
71 import fr.paris.lutece.util.ReferenceList;
72 import fr.paris.lutece.util.html.AbstractPaginator;
73 import fr.paris.lutece.util.html.HtmlTemplate;
74 import fr.paris.lutece.util.html.ItemNavigator;
75 import fr.paris.lutece.util.sort.AttributeComparator;
76 import fr.paris.lutece.util.string.StringUtil;
77 import fr.paris.lutece.util.url.UrlItem;
78
79
80
81
82 public class AdminWorkgroupJspBean extends AdminFeaturesPageJspBean
83 {
84
85
86
87
88 public static final String RIGHT_MANAGE_WORKGROUPS = "CORE_WORKGROUPS_MANAGEMENT";
89
90
91
92
93 private static final long serialVersionUID = 5945178935890410656L;
94
95
96 private static final String TEMPLATE_MANAGE_WORGROUPS = "admin/workgroup/manage_workgroups.html";
97 private static final String TEMPLATE_CREATE_WORKGROUP = "admin/workgroup/create_workgroup.html";
98 private static final String TEMPLATE_MODIFY_WORKGROUP = "admin/workgroup/modify_workgroup.html";
99 private static final String TEMPLATE_ASSIGN_USERS = "admin/workgroup/assign_users_workgroup.html";
100 private static final String JSP_PATH = "jsp/admin/workgroup/";
101
102
103 private static final String MARK_WORKGROUPS_LIST = "workgroups_list";
104 private static final String MARK_WORKGROUP = "workgroup";
105 private static final String MARK_USERS_LIST = "users_list";
106 private static final String MARK_ASSIGNED_USERS_LIST = "assigned_users_list";
107 private static final String MARK_ASSIGNED_USERS_NUMBER = "assigned_users_number";
108 private static final String MARK_SEARCH_IS_SEARCH = "search_is_search";
109 private static final String MARK_SEARCH_ADMIN_WORKGROUP_FILTER = "search_admin_workgroup_filter";
110 private static final String MARK_USER_LEVELS_LIST = "user_levels";
111 private static final String MARK_ITEM_NAVIGATOR = "item_navigator";
112 private static final String MARK_PAGINATOR = "paginator";
113 private static final String MARK_NB_ITEMS_PER_PAGE = "nb_items_per_page";
114 private static final String MARK_SORT_SEARCH_ATTRIBUTE = "sort_search_attribute";
115
116
117 private static final String PROPERTY_CREATE_WORKGROUP_PAGETITLE = "portal.workgroup.create_workgroup.pageTitle";
118 private static final String PROPERTY_MODIFY_WORKGROUP_PAGETITLE = "portal.workgroup.modify_workgroup.pageTitle";
119 private static final String PROPERTY_ASSIGN_USERS_PAGETITLE = "portal.workgroup.assign_users.pageTitle";
120 private static final String PROPERTY_MANAGE_WORKGROUPS_PAGETITLE = "portal.workgroup.manage_workgroups.pageTitle";
121 private static final String PROPERTY_USERS_PER_PAGE = "paginator.user.itemsPerPage";
122
123
124 private static final String PARAMETER_WORKGROUP_KEY = "workgroup_key";
125 private static final String PARAMETER_WORKGROUP_DESCRIPTION = "workgroup_description";
126 private static final String PARAMETER_USERS_LIST = "list_users";
127 private static final String PARAMETER_ID_USER = "id_user";
128 private static final String PARAMETER_ANCHOR = "anchor";
129
130
131 private static final String JSP_MANAGE_WORKGROUPS = "ManageWorkgroups.jsp";
132 private static final String JSP_ASSIGN_USERS_TO_WORKGROUPS = "AssignUsersWorkgroup.jsp";
133 private static final String JSP_URL_REMOVE_WORKGROUP = "jsp/admin/workgroup/DoRemoveWorkgroup.jsp";
134 private static final String JSP_URL_ASSIGN_USERS_TO_WORKGROUPS = "jsp/admin/workgroup/AssignUsersWorkgroup.jsp";
135
136
137 private static final String MESSAGE_WORKGROUP_ALREADY_EXIST = "portal.workgroup.message.workgroupAlreadyExist";
138 private static final String MESSAGE_CONFIRM_REMOVE = "portal.workgroup.message.confirmRemove";
139 private static final String MESSAGE_WORKGROUP_ALREADY_USED = "portal.workgroup.message.workgroupAlreadyUsed";
140 private static final String MESSAGE_CANNOT_REMOVE_WORKGROUP = "portal.workgroup.message.cannotRemoveWorkgroup";
141 private static final String MESSAGE_WORKGROUP_ACCENTUATED_CHARACTER = "portal.workgroup.message.accentuatedCharacter";
142 private int _nItemsPerPage;
143 private int _nDefaultItemsPerPage;
144 private String _strCurrentPageIndex;
145 private ItemNavigator _itemNavigator;
146
147
148
149
150
151
152
153
154 public String getManageWorkgroups( HttpServletRequest request )
155 {
156 setPageTitleProperty( PROPERTY_MANAGE_WORKGROUPS_PAGETITLE );
157
158
159 reinitItemNavigator( );
160
161
162 AdminWorkgroupFilteroup/AdminWorkgroupFilter.html#AdminWorkgroupFilter">AdminWorkgroupFilter awFilter = new AdminWorkgroupFilter( );
163 boolean bIsSearch = awFilter.setAdminWorkgroupFilter( request );
164
165 List<AdminWorkgroup> listFilteredWorkgroups = (List<AdminWorkgroup>) AdminWorkgroupHome.findByFilter( awFilter );
166
167 HashMap<String, Object> model = new HashMap<>( );
168
169 if ( !getUser( ).isAdmin( ) )
170 {
171 listFilteredWorkgroups = (List<AdminWorkgroup>) AdminWorkgroupService.getAuthorizedCollection( listFilteredWorkgroups, getUser( ) );
172 }
173
174
175 String strSortedAttributeName = request.getParameter( Parameters.SORTED_ATTRIBUTE_NAME );
176 String strAscSort = null;
177
178 if ( strSortedAttributeName != null )
179 {
180 strAscSort = request.getParameter( Parameters.SORTED_ASC );
181
182 boolean bIsAscSort = Boolean.parseBoolean( strAscSort );
183
184 Collections.sort( listFilteredWorkgroups, new AttributeComparator( strSortedAttributeName, bIsAscSort ) );
185 }
186
187 _strCurrentPageIndex = AbstractPaginator.getPageIndex( request, AbstractPaginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
188 _nDefaultItemsPerPage = AppPropertiesService.getPropertyInt( PROPERTY_USERS_PER_PAGE, 50 );
189 _nItemsPerPage = AbstractPaginator.getItemsPerPage( request, AbstractPaginator.PARAMETER_ITEMS_PER_PAGE, _nItemsPerPage, _nDefaultItemsPerPage );
190
191 String strURL = getHomeUrl( request );
192 UrlItem/url/UrlItem.html#UrlItem">UrlItem url = new UrlItem( strURL );
193
194 if ( strSortedAttributeName != null )
195 {
196 url.addParameter( Parameters.SORTED_ATTRIBUTE_NAME, strSortedAttributeName );
197 }
198
199 if ( strAscSort != null )
200 {
201 url.addParameter( Parameters.SORTED_ASC, strAscSort );
202 }
203
204 String strSortSearchAttribute = "";
205
206 if ( bIsSearch )
207 {
208 awFilter.setUrlAttributes( url );
209
210 if ( !awFilter.getUrlAttributes( ).equals( "" ) )
211 {
212 strSortSearchAttribute = "&" + awFilter.getUrlAttributes( );
213 }
214 }
215
216
217 LocalizedPaginator<AdminWorkgroup> paginator = new LocalizedPaginator<>( listFilteredWorkgroups, _nItemsPerPage, url.getUrl( ),
218 AbstractPaginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex, getLocale( ) );
219
220 model.put( MARK_NB_ITEMS_PER_PAGE, "" + _nItemsPerPage );
221 model.put( MARK_PAGINATOR, paginator );
222 model.put( MARK_WORKGROUPS_LIST, paginator.getPageItems( ) );
223 model.put( MARK_SEARCH_IS_SEARCH, bIsSearch );
224 model.put( MARK_SEARCH_ADMIN_WORKGROUP_FILTER, awFilter );
225 model.put( MARK_SORT_SEARCH_ATTRIBUTE, strSortSearchAttribute );
226
227 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_WORGROUPS, getLocale( ), model );
228
229 return getAdminPage( template.getHtml( ) );
230 }
231
232
233
234
235
236
237
238
239 public String getCreateWorkgroup( HttpServletRequest request )
240 {
241 setPageTitleProperty( PROPERTY_CREATE_WORKGROUP_PAGETITLE );
242
243 Map<String, Object> model = new HashMap<>( 1 );
244 model.put( SecurityTokenService.MARK_TOKEN, SecurityTokenService.getInstance( ).getToken( request, TEMPLATE_CREATE_WORKGROUP ) );
245
246 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_CREATE_WORKGROUP, getLocale( ), model );
247
248 return getAdminPage( template.getHtml( ) );
249 }
250
251
252
253
254
255
256
257
258
259
260 public String doCreateWorkgroup( HttpServletRequest request ) throws AccessDeniedException
261 {
262 String strKey = request.getParameter( PARAMETER_WORKGROUP_KEY );
263 String strDescription = request.getParameter( PARAMETER_WORKGROUP_DESCRIPTION );
264
265 if ( ( strKey == null ) || ( strKey.equals( "" ) ) )
266 {
267 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
268 }
269
270 if ( ( strDescription == null ) || ( strDescription.equals( "" ) ) )
271 {
272 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
273 }
274
275
276 if ( Boolean.TRUE.equals( AdminWorkgroupHome.checkExistWorkgroup( strKey ) ) )
277 {
278 return AdminMessageService.getMessageUrl( request, MESSAGE_WORKGROUP_ALREADY_EXIST, AdminMessage.TYPE_STOP );
279 }
280
281
282 if ( !StringUtil.checkCodeKey( strKey ) )
283 {
284 return AdminMessageService.getMessageUrl( request, MESSAGE_WORKGROUP_ACCENTUATED_CHARACTER, AdminMessage.TYPE_STOP );
285 }
286 if ( !SecurityTokenService.getInstance( ).validate( request, TEMPLATE_CREATE_WORKGROUP ) )
287 {
288 throw new AccessDeniedException( ERROR_INVALID_TOKEN );
289 }
290
291 AdminWorkgroupoup/AdminWorkgroup.html#AdminWorkgroup">AdminWorkgroup adminWorkgroup = new AdminWorkgroup( );
292 adminWorkgroup.setKey( strKey.trim( ) );
293 adminWorkgroup.setDescription( strDescription );
294 AdminWorkgroupHome.create( adminWorkgroup );
295 AdminWorkgroupHome.addUserForWorkgroup( getUser( ), strKey );
296
297 if( !getUser().getUserWorkgroups().contains( strKey ) )
298 {
299 getUser().getUserWorkgroups().add( strKey );
300 }
301
302 return JSP_MANAGE_WORKGROUPS;
303 }
304
305
306
307
308
309
310
311
312 public String getConfirmRemoveWorkgroup( HttpServletRequest request )
313 {
314 String strWorkgroupKey = request.getParameter( PARAMETER_WORKGROUP_KEY );
315 String strUrlRemove = JSP_URL_REMOVE_WORKGROUP;
316 Map<String, Object> parameters = new HashMap<>( );
317 parameters.put( PARAMETER_WORKGROUP_KEY, strWorkgroupKey );
318 parameters.put( SecurityTokenService.PARAMETER_TOKEN, SecurityTokenService.getInstance( ).getToken( request, JSP_URL_REMOVE_WORKGROUP ) );
319
320 return AdminMessageService.getMessageUrl( request, MESSAGE_CONFIRM_REMOVE, null, null, strUrlRemove, null, AdminMessage.TYPE_CONFIRMATION, parameters, JSP_PATH+JSP_MANAGE_WORKGROUPS );
321 }
322
323
324
325
326
327
328
329
330
331
332 public String doRemoveWorkgroup( HttpServletRequest request ) throws AccessDeniedException
333 {
334 String strWorkgroupKey = request.getParameter( PARAMETER_WORKGROUP_KEY );
335 ArrayList<String> listErrors = new ArrayList<>( );
336
337 if ( CollectionUtils.isNotEmpty( AdminWorkgroupHome.getUserListForWorkgroup( strWorkgroupKey ) ) )
338 {
339 return AdminMessageService.getMessageUrl( request, MESSAGE_WORKGROUP_ALREADY_USED, JSP_PATH+JSP_MANAGE_WORKGROUPS, AdminMessage.TYPE_STOP );
340 }
341
342 if ( !WorkgroupRemovalListenerService.getService( ).checkForRemoval( strWorkgroupKey, listErrors, getLocale( ) ) )
343 {
344 String strCause = AdminMessageService.getFormattedList( listErrors, getLocale( ) );
345 Object [ ] args = {
346 strCause
347 };
348
349 return AdminMessageService.getMessageUrl( request, MESSAGE_CANNOT_REMOVE_WORKGROUP, args, JSP_PATH+JSP_MANAGE_WORKGROUPS, AdminMessage.TYPE_STOP );
350 }
351 if ( !SecurityTokenService.getInstance( ).validate( request, JSP_URL_REMOVE_WORKGROUP ) )
352 {
353 throw new AccessDeniedException( ERROR_INVALID_TOKEN );
354 }
355
356 AdminWorkgroupHome.remove( strWorkgroupKey );
357
358 return JSP_MANAGE_WORKGROUPS;
359 }
360
361
362
363
364
365
366
367
368 public String getModifyWorkgroup( HttpServletRequest request )
369 {
370 setPageTitleProperty( PROPERTY_MODIFY_WORKGROUP_PAGETITLE );
371
372 String strWorkgroupKey = request.getParameter( PARAMETER_WORKGROUP_KEY );
373
374 AdminWorkgroup workgroup = AdminWorkgroupHome.findByPrimaryKey( strWorkgroupKey );
375
376 if ( workgroup == null )
377 {
378 return getManageWorkgroups( request );
379 }
380
381 HashMap<String, Object> model = new HashMap<>( );
382 model.put( MARK_WORKGROUP, workgroup );
383 model.put( SecurityTokenService.MARK_TOKEN, SecurityTokenService.getInstance( ).getToken( request, TEMPLATE_MODIFY_WORKGROUP ) );
384 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MODIFY_WORKGROUP, getLocale( ), model );
385
386 return getAdminPage( template.getHtml( ) );
387 }
388
389
390
391
392
393
394
395
396
397
398 public String doModifyWorkgroup( HttpServletRequest request ) throws AccessDeniedException
399 {
400 String strWorgroupKey = request.getParameter( PARAMETER_WORKGROUP_KEY );
401 String strDescription = request.getParameter( PARAMETER_WORKGROUP_DESCRIPTION );
402
403 if ( StringUtils.isEmpty( strDescription ) )
404 {
405 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
406 }
407 if ( !SecurityTokenService.getInstance( ).validate( request, TEMPLATE_MODIFY_WORKGROUP ) )
408 {
409 throw new AccessDeniedException( ERROR_INVALID_TOKEN );
410 }
411
412 AdminWorkgroupoup/AdminWorkgroup.html#AdminWorkgroup">AdminWorkgroup adminWorkgroup = new AdminWorkgroup( );
413 adminWorkgroup.setKey( strWorgroupKey );
414 adminWorkgroup.setDescription( strDescription );
415 AdminWorkgroupHome.update( adminWorkgroup );
416
417 return JSP_MANAGE_WORKGROUPS;
418 }
419
420
421
422
423
424
425
426
427 public String getAssignUsers( HttpServletRequest request )
428 {
429 Map<String, Object> model = new HashMap<>( );
430 setPageTitleProperty( PROPERTY_ASSIGN_USERS_PAGETITLE );
431
432 String strBaseUrl = AppPathService.getBaseUrl( request ) + JSP_URL_ASSIGN_USERS_TO_WORKGROUPS;
433 UrlItem/url/UrlItem.html#UrlItem">UrlItem url = new UrlItem( strBaseUrl );
434
435
436 String strWorkgroupKey = request.getParameter( PARAMETER_WORKGROUP_KEY );
437 AdminWorkgroup adminWorkgroup = AdminWorkgroupHome.findByPrimaryKey( strWorkgroupKey );
438
439 if ( adminWorkgroup == null )
440 {
441 return getManageWorkgroups( request );
442 }
443
444
445
446
447 List<AdminUser> listAssignedUsers = AdminWorkgroupHome.getUserListForWorkgroup( strWorkgroupKey ).stream( )
448 .filter( this::isUserHigherThanConnectedUser ).collect( Collectors.toList( ) );
449
450 List<AdminUser> listFilteredUsers = AdminUserService.getFilteredUsersInterface( listAssignedUsers, request, model, url );
451
452
453 ReferenceListst.html#ReferenceList">ReferenceList listUsers = new ReferenceList( );
454
455 for ( AdminUser user : AdminUserHome.findUserList( ) )
456 {
457 final ReferenceItemtem.html#ReferenceItem">ReferenceItem itemUser = new ReferenceItem( );
458 itemUser.setCode( Integer.toString( user.getUserId( ) ) );
459 itemUser.setName( user.getLastName( ) + " " + user.getFirstName( ) + " (" + user.getAccessCode( ) + ")" );
460
461 boolean bAssigned = listAssignedUsers.stream( )
462 .anyMatch( assignedUser -> Integer.toString( assignedUser.getUserId( ) ).equals( itemUser.getCode( ) ) );
463
464
465
466 if ( !bAssigned && isUserHigherThanConnectedUser( user ) )
467 {
468 listUsers.add( itemUser );
469 }
470 }
471
472
473 String strSortedAttributeName = request.getParameter( Parameters.SORTED_ATTRIBUTE_NAME );
474 String strAscSort = null;
475
476 if ( strSortedAttributeName != null )
477 {
478 url.addParameter( Parameters.SORTED_ATTRIBUTE_NAME, strSortedAttributeName );
479
480 strAscSort = request.getParameter( Parameters.SORTED_ASC );
481
482 boolean bIsAscSort = Boolean.parseBoolean( strAscSort );
483
484 Collections.sort( listFilteredUsers, new AttributeComparator( strSortedAttributeName, bIsAscSort ) );
485 }
486
487 _strCurrentPageIndex = AbstractPaginator.getPageIndex( request, AbstractPaginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
488 _nDefaultItemsPerPage = AppPropertiesService.getPropertyInt( PROPERTY_USERS_PER_PAGE, 50 );
489 _nItemsPerPage = AbstractPaginator.getItemsPerPage( request, AbstractPaginator.PARAMETER_ITEMS_PER_PAGE, _nItemsPerPage, _nDefaultItemsPerPage );
490
491 if ( strAscSort != null )
492 {
493 url.addParameter( Parameters.SORTED_ASC, strAscSort );
494 }
495
496
497 setItemNavigator( strWorkgroupKey, url.getUrl( ) );
498
499
500 url.addParameter( PARAMETER_WORKGROUP_KEY, adminWorkgroup.getKey( ) );
501
502 LocalizedPaginator<AdminUser> paginator = new LocalizedPaginator<>( listFilteredUsers, _nItemsPerPage, url.getUrl( ),
503 AbstractPaginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex, getLocale( ) );
504
505
506 Collection<Level> filteredLevels = new ArrayList<>( );
507
508 for ( Level level : LevelHome.getLevelsList( ) )
509 {
510 if ( getUser( ).isAdmin( ) || getUser( ).hasRights( level.getId( ) ) )
511 {
512 filteredLevels.add( level );
513 }
514 }
515
516 model.put( MARK_WORKGROUP, adminWorkgroup );
517 model.put( MARK_USERS_LIST, listUsers );
518 model.put( MARK_ASSIGNED_USERS_LIST, paginator.getPageItems( ) );
519 model.put( MARK_ASSIGNED_USERS_NUMBER, listAssignedUsers.size( ) );
520 model.put( MARK_USER_LEVELS_LIST, filteredLevels );
521 model.put( MARK_ITEM_NAVIGATOR, _itemNavigator );
522 model.put( MARK_PAGINATOR, paginator );
523 model.put( MARK_NB_ITEMS_PER_PAGE, Integer.toString( _nItemsPerPage ) );
524 model.put( SecurityTokenService.MARK_TOKEN, SecurityTokenService.getInstance( ).getToken( request, TEMPLATE_ASSIGN_USERS ) );
525
526 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_ASSIGN_USERS, getLocale( ), model );
527
528 return getAdminPage( template.getHtml( ) );
529 }
530
531
532
533
534
535
536
537
538
539
540 public String doAssignUsers( HttpServletRequest request ) throws AccessDeniedException
541 {
542 if ( !SecurityTokenService.getInstance( ).validate( request, TEMPLATE_ASSIGN_USERS ) )
543 {
544 throw new AccessDeniedException( ERROR_INVALID_TOKEN );
545 }
546 String strWorkgroupKey = request.getParameter( PARAMETER_WORKGROUP_KEY );
547
548
549 String [ ] arrayUsersIds = request.getParameterValues( PARAMETER_USERS_LIST );
550
551 if ( ( arrayUsersIds != null ) )
552 {
553 for ( int i = 0; i < arrayUsersIds.length; i++ )
554 {
555 int nUserId = Integer.parseInt( arrayUsersIds [i] );
556 AdminUser user = AdminUserHome.findByPrimaryKey( nUserId );
557
558 if ( !AdminWorkgroupHome.isUserInWorkgroup( user, strWorkgroupKey ) )
559 {
560 AdminWorkgroupHome.addUserForWorkgroup( user, strWorkgroupKey );
561 }
562 }
563 }
564
565 return JSP_ASSIGN_USERS_TO_WORKGROUPS + "?" + PARAMETER_WORKGROUP_KEY + "=" + strWorkgroupKey;
566 }
567
568
569
570
571
572
573
574
575
576
577 public String doUnAssignUser( HttpServletRequest request ) throws AccessDeniedException
578 {
579 if ( !SecurityTokenService.getInstance( ).validate( request, TEMPLATE_ASSIGN_USERS ) )
580 {
581 throw new AccessDeniedException( ERROR_INVALID_TOKEN );
582 }
583 String strWorkgroupKey = request.getParameter( PARAMETER_WORKGROUP_KEY );
584 int nIdUser = Integer.parseInt( request.getParameter( PARAMETER_ID_USER ) );
585 String strAnchor = request.getParameter( PARAMETER_ANCHOR );
586
587 AdminUser adminUser = AdminUserHome.findByPrimaryKey( nIdUser );
588
589 if ( adminUser != null )
590 {
591 AdminWorkgroupHome.removeUserFromWorkgroup( adminUser, strWorkgroupKey );
592 }
593
594 return JSP_ASSIGN_USERS_TO_WORKGROUPS + "?" + PARAMETER_WORKGROUP_KEY + "=" + strWorkgroupKey + "#" + strAnchor;
595 }
596
597
598
599
600
601
602
603
604
605 private void setItemNavigator( String strWorkgroupKey, String strUrl )
606 {
607 if ( _itemNavigator == null )
608 {
609 List<String> listWorkgroupKeys = new ArrayList<>( );
610 int nCurrentItemId = 0;
611 int nIndex = 0;
612
613 for ( AdminWorkgroup workgroup : AdminWorkgroupHome.findAll( ) )
614 {
615 if ( ( workgroup != null ) && StringUtils.isNotBlank( workgroup.getKey( ) ) )
616 {
617 listWorkgroupKeys.add( workgroup.getKey( ) );
618
619 if ( workgroup.getKey( ).equals( strWorkgroupKey ) )
620 {
621 nCurrentItemId = nIndex;
622 }
623
624 nIndex++;
625 }
626 }
627
628 _itemNavigator = new ItemNavigator( listWorkgroupKeys, nCurrentItemId, strUrl, PARAMETER_WORKGROUP_KEY );
629 }
630 else
631 {
632 _itemNavigator.setCurrentItemId( strWorkgroupKey );
633 }
634 }
635
636
637
638
639 private void reinitItemNavigator( )
640 {
641 _itemNavigator = null;
642 }
643 }