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.plugins.identitystore.web;
35  
36  import fr.paris.lutece.plugins.identitystore.business.application.ClientApplication;
37  import fr.paris.lutece.plugins.identitystore.business.application.ClientApplicationHome;
38  import fr.paris.lutece.plugins.identitystore.business.contract.ServiceContract;
39  import fr.paris.lutece.plugins.identitystore.service.contract.ServiceContractService;
40  import fr.paris.lutece.plugins.identitystore.web.exception.IdentityStoreException;
41  import fr.paris.lutece.portal.service.message.AdminMessage;
42  import fr.paris.lutece.portal.service.message.AdminMessageService;
43  import fr.paris.lutece.portal.util.mvc.admin.annotations.Controller;
44  import fr.paris.lutece.portal.util.mvc.commons.annotations.Action;
45  import fr.paris.lutece.portal.util.mvc.commons.annotations.View;
46  import fr.paris.lutece.util.url.UrlItem;
47  import org.apache.commons.lang3.StringUtils;
48  
49  import javax.servlet.http.HttpServletRequest;
50  import java.util.List;
51  import java.util.Map;
52  import java.util.stream.Collectors;
53  
54  
55  
56  
57  @Controller( controllerJsp = "ManageClientApplications.jsp", controllerPath = "jsp/admin/plugins/identitystore/", right = "IDENTITYSTORE_ADMIN_MANAGEMENT" )
58  public class ManageClientApplicationJspBean extends ManageIdentitiesJspBean
59  {
60      private static final long serialVersionUID = 1L;
61  
62      
63      private static final String TEMPLATE_MANAGE_CLIENTAPPLICATION = "/admin/plugins/identitystore/clientapplication/manage_clientapplications.html";
64      private static final String TEMPLATE_DISPLAY_CLIENTAPPLICATION = "/admin/plugins/identitystore/clientapplication/view_clientapplication.html";
65      private static final String TEMPLATE_CREATE_CLIENTAPPLICATION = "/admin/plugins/identitystore/clientapplication/create_clientapplication.html";
66      private static final String TEMPLATE_MODIFY_CLIENTAPPLICATION = "/admin/plugins/identitystore/clientapplication/modify_clientapplication.html";
67  
68      
69      private static final String QUERY_PARAM_CLIENT_APPLICATION_NAME = "client_application_name";
70      private static final String QUERY_PARAM_APPLICATION_CODE = "application_code_search";
71      private static final String QUERY_PARAM_CLIENT_CODE = "client_code_search";
72  
73      
74      private static final String PARAMETER_ID_CLIENTAPPLICATION = "id";
75  
76      private static final String PARAMETER_CERTIFIERS_AUTH = "certif_auth";
77      private static final String PARAMETER_CERTIFIER_CODE = "certif_code";
78  
79      
80      private static final String PROPERTY_PAGE_TITLE_MANAGE_CLIENTAPPLICATIONS = "identitystore.manage_clientapplications.pageTitle";
81      private static final String PROPERTY_PAGE_TITLE_MODIFY_CLIENTAPPLICATION = "identitystore.modify_clientapplication.pageTitle";
82      private static final String PROPERTY_PAGE_TITLE_CREATE_CLIENTAPPLICATION = "identitystore.create_clientapplication.pageTitle";
83      private static final String PROPERTY_PAGE_TITLE_MODIFY_CLIENTAPPLICATION_CERTIFICATOR = "identitystore.modify_clientapplication_certificator.pageTitle";
84  
85      
86      private static final String MARK_CLIENTAPPLICATION_LIST = "clientapplication_list";
87      private static final String MARK_CLIENTAPPLICATION = "clientapplication";
88      private static final String MARK_SERVICECONTRACTS = "servicecontract_list";
89      private static final String MARK_ACTIVECONTRACT = "servicecontract_active";
90      private static final String MARK_CLIENTAPPLICATION_CERTIF_LIST = "clientapplication_certifs";
91      private static final String MARK_CLIENTAPPLICATION_CERTIF_CODE_MAP = "map_clientapplication_certifs";
92      private static final String MARK_CERTIFIERS = "certifiers";
93      private static final String MARK_CLIENTAPPLICATION_RIGHT_LIST = "clientapplication_rights_list";
94      private static final String JSP_MANAGE_CLIENTAPPLICATIONS = "jsp/admin/plugins/identitystore/ManageClientApplications.jsp";
95  
96      
97      private static final String MESSAGE_CONFIRM_REMOVE_CLIENTAPPLICATION = "identitystore.message.confirmRemoveClientApplication";
98  
99      
100     private static final String VALIDATION_ATTRIBUTES_PREFIX = "identitystore.model.entity.clientapplication.attribute.";
101 
102     
103     private static final String VIEW_MANAGE_CLIENTAPPLICATIONS = "manageClientApplications";
104     private static final String VIEW_DISPLAY_CLIENTAPPLICATIONS = "displayClientApplication";
105     private static final String VIEW_CREATE_CLIENTAPPLICATION = "createClientApplication";
106     private static final String VIEW_MODIFY_CLIENTAPPLICATION = "modifyClientApplication";
107     private static final String VIEW_MANAGE_CLIENTAPPLICATION_CERTIFICATOR = "manageClientApplicationCertificate";
108 
109     
110     private static final String ACTION_CREATE_CLIENTAPPLICATION = "createClientApplication";
111     private static final String ACTION_MODIFY_CLIENTAPPLICATION = "modifyClientApplication";
112     private static final String ACTION_MANAGE_CLIENTAPPLICATION_CERTIFICATOR = "manageClientApplicationCertificate";
113     private static final String ACTION_REMOVE_CLIENTAPPLICATION = "removeClientApplication";
114     private static final String ACTION_CONFIRM_REMOVE_CLIENTAPPLICATION = "confirmRemoveClientApplication";
115     private static final String ACTION_REMOVE_CLIENTAPPLICATION_CERTIFICATOR = "removeClientApplicationCertificate";
116 
117     
118     private static final String INFO_CLIENTAPPLICATION_CREATED = "identitystore.info.clientapplication.created";
119     private static final String INFO_CLIENTAPPLICATION_UPDATED = "identitystore.info.clientapplication.updated";
120     private static final String INFO_CLIENTAPPLICATION_REMOVED = "identitystore.info.clientapplication.removed";
121 
122     
123     private ClientApplication _clientApplication;
124     private String _name;
125     private String _appCode;
126     private String _clientCode;
127 
128     
129 
130 
131 
132 
133 
134 
135     @View( value = VIEW_MANAGE_CLIENTAPPLICATIONS, defaultView = true )
136     public String getManageClientApplications( HttpServletRequest request )
137     {
138         _clientApplication = null;
139 
140         initSearchParameters(request);
141 
142         final List<ClientApplication> listClientApplications = ClientApplicationHome.selectApplicationList( ).stream( )
143                 .filter( ca -> StringUtils.isBlank( _name ) || ( ca.getName( ) != null && ca.getName( ).toLowerCase( ).contains( _name.toLowerCase( ) ) ) )
144                 .filter( ca -> StringUtils.isBlank( _appCode )
145                         || ( ca.getApplicationCode( ) != null && ca.getApplicationCode( ).toLowerCase( ).contains( _appCode.toLowerCase( ) ) ) )
146                 .filter( ca -> StringUtils.isBlank( _clientCode )
147                         || ( ca.getClientCode( ) != null && ca.getClientCode( ).toLowerCase( ).contains( _clientCode.toLowerCase( ) ) ) )
148                 .sorted( ( a, b ) -> {
149                     final int compare = StringUtils.compare( a.getApplicationCode( ), b.getApplicationCode( ), false );
150                     if ( compare == 0 )
151                     {
152                         return StringUtils.compare( a.getClientCode( ), b.getClientCode( ), false );
153                     }
154                     return compare;
155                 } ).collect( Collectors.toList( ) );
156 
157         Map<String, Object> model = getPaginatedListModel( request, MARK_CLIENTAPPLICATION_LIST, listClientApplications, JSP_MANAGE_CLIENTAPPLICATIONS );
158         model.put( QUERY_PARAM_CLIENT_APPLICATION_NAME, _name );
159         model.put( QUERY_PARAM_CLIENT_CODE, _clientCode );
160         model.put( QUERY_PARAM_APPLICATION_CODE, _appCode );
161 
162         return getPage( PROPERTY_PAGE_TITLE_MANAGE_CLIENTAPPLICATIONS, TEMPLATE_MANAGE_CLIENTAPPLICATION, model );
163     }
164 
165     
166 
167 
168 
169 
170 
171 
172     @View( value = VIEW_DISPLAY_CLIENTAPPLICATIONS )
173     public String getDisplayClientApplications( HttpServletRequest request )
174     {
175         _clientApplication = null;
176 
177         int nId = Integer.parseInt( request.getParameter( PARAMETER_ID_CLIENTAPPLICATION ) );
178 
179         Map<String, Object> model = getModel( );
180 
181         _clientApplication = ClientApplicationHome.findByPrimaryKey( nId );
182         List<ServiceContract> serviceContracts = ClientApplicationHome.selectServiceContracts( _clientApplication.getId( ) );
183         _clientApplication.setServiceContracts( serviceContracts );
184 
185         model.put( MARK_CLIENTAPPLICATION, _clientApplication );
186         model.put( QUERY_PARAM_CLIENT_APPLICATION_NAME, _name );
187         model.put( QUERY_PARAM_CLIENT_CODE, _clientCode );
188         model.put( QUERY_PARAM_APPLICATION_CODE, _appCode );
189 
190         return getPage( PROPERTY_PAGE_TITLE_MANAGE_CLIENTAPPLICATIONS, TEMPLATE_DISPLAY_CLIENTAPPLICATION, model );
191     }
192 
193     
194 
195 
196 
197 
198 
199 
200     @View( VIEW_CREATE_CLIENTAPPLICATION )
201     public String getCreateClientApplication( HttpServletRequest request )
202     {
203         _clientApplication = new ClientApplication( );
204 
205         Map<String, Object> model = getModel( );
206         model.put( MARK_CLIENTAPPLICATION, _clientApplication );
207         model.put( QUERY_PARAM_CLIENT_APPLICATION_NAME, _name );
208         model.put( QUERY_PARAM_CLIENT_CODE, _clientCode );
209         model.put( QUERY_PARAM_APPLICATION_CODE, _appCode );
210 
211         return getPage( PROPERTY_PAGE_TITLE_CREATE_CLIENTAPPLICATION, TEMPLATE_CREATE_CLIENTAPPLICATION, model );
212     }
213 
214     
215 
216 
217 
218 
219 
220 
221     @Action( ACTION_CREATE_CLIENTAPPLICATION )
222     public String doCreateClientApplication( HttpServletRequest request )
223     {
224         populate( _clientApplication, request );
225         _clientApplication.setAuthorName(this.getUser().getEmail());
226 
227         
228         if ( !validateBean( _clientApplication, VALIDATION_ATTRIBUTES_PREFIX ) )
229         {
230             return redirectView( request, VIEW_CREATE_CLIENTAPPLICATION );
231         }
232 
233         ClientApplicationHome.create( _clientApplication );
234 
235         addInfo( INFO_CLIENTAPPLICATION_CREATED, getLocale( ) );
236 
237         return redirectView( request, VIEW_MANAGE_CLIENTAPPLICATIONS );
238     }
239 
240     
241 
242 
243 
244 
245 
246 
247     @Action( ACTION_CONFIRM_REMOVE_CLIENTAPPLICATION )
248     public String getConfirmRemoveClientApplication( HttpServletRequest request )
249     {
250         int nId = Integer.parseInt( request.getParameter( PARAMETER_ID_CLIENTAPPLICATION ) );
251         UrlItem url = new UrlItem( getActionUrl( ACTION_REMOVE_CLIENTAPPLICATION ) );
252         url.addParameter( PARAMETER_ID_CLIENTAPPLICATION, nId );
253 
254         String strMessageUrl = AdminMessageService.getMessageUrl( request, MESSAGE_CONFIRM_REMOVE_CLIENTAPPLICATION, url.getUrl( ),
255                 AdminMessage.TYPE_CONFIRMATION );
256 
257         return redirect( request, strMessageUrl );
258     }
259 
260     
261 
262 
263 
264 
265 
266 
267     @Action( ACTION_REMOVE_CLIENTAPPLICATION )
268     public String doRemoveClientApplication( HttpServletRequest request )
269     {
270         int nId = Integer.parseInt( request.getParameter( PARAMETER_ID_CLIENTAPPLICATION ) );
271 
272         ClientApplication clientApplication = ClientApplicationHome.findByPrimaryKey( nId );
273         try
274         {
275             ServiceContractService.instance( ).deleteApplication( clientApplication );
276         }
277         catch( IdentityStoreException e )
278         {
279             addError( e.getMessage( ) );
280             return redirectView( request, VIEW_MANAGE_CLIENTAPPLICATIONS );
281         }
282         addInfo( INFO_CLIENTAPPLICATION_REMOVED, getLocale( ) );
283 
284         return redirectView( request, VIEW_MANAGE_CLIENTAPPLICATIONS );
285     }
286 
287     
288 
289 
290 
291 
292 
293 
294     @View( VIEW_MODIFY_CLIENTAPPLICATION )
295     public String getModifyClientApplication( HttpServletRequest request )
296     {
297         int nId = Integer.parseInt( request.getParameter( PARAMETER_ID_CLIENTAPPLICATION ) );
298 
299         if ( ( _clientApplication == null ) || ( _clientApplication.getId( ) != nId ) )
300         {
301             _clientApplication = ClientApplicationHome.findByPrimaryKey( nId );
302         }
303 
304         Map<String, Object> model = getModel( );
305         model.put( MARK_CLIENTAPPLICATION, _clientApplication );
306         model.put( QUERY_PARAM_CLIENT_APPLICATION_NAME, _name );
307         model.put( QUERY_PARAM_CLIENT_CODE, _clientCode );
308         model.put( QUERY_PARAM_APPLICATION_CODE, _appCode );
309 
310         return getPage( PROPERTY_PAGE_TITLE_MODIFY_CLIENTAPPLICATION, TEMPLATE_MODIFY_CLIENTAPPLICATION, model );
311     }
312 
313     
314 
315 
316 
317 
318 
319 
320     @Action( ACTION_MODIFY_CLIENTAPPLICATION )
321     public String doModifyClientApplication( HttpServletRequest request )
322     {
323         populate( _clientApplication, request );
324         _clientApplication.setAuthorName(this.getUser().getEmail());
325 
326         
327         if ( !validateBean( _clientApplication, VALIDATION_ATTRIBUTES_PREFIX ) )
328         {
329             return redirect( request, VIEW_MODIFY_CLIENTAPPLICATION, PARAMETER_ID_CLIENTAPPLICATION, _clientApplication.getId( ) );
330         }
331 
332         ClientApplicationHome.update( _clientApplication );
333         addInfo( INFO_CLIENTAPPLICATION_UPDATED, getLocale( ) );
334 
335         return redirectView( request, VIEW_MANAGE_CLIENTAPPLICATIONS );
336     }
337 
338     private void initSearchParameters( HttpServletRequest request )
339     {
340         
341         
342         if(request.getParameterMap().isEmpty())
343         {
344             _name = "";
345             _appCode = "";
346             _clientCode = "";
347         }
348         else
349         {
350             if (request.getParameter(QUERY_PARAM_CLIENT_APPLICATION_NAME) != null)
351             {
352                 _name = request.getParameter(QUERY_PARAM_CLIENT_APPLICATION_NAME);
353             }
354             if (request.getParameter(QUERY_PARAM_APPLICATION_CODE) != null)
355             {
356                 _appCode = request.getParameter(QUERY_PARAM_APPLICATION_CODE);
357             }
358             if (request.getParameter(QUERY_PARAM_CLIENT_CODE) != null)
359             {
360                 _clientCode = request.getParameter(QUERY_PARAM_CLIENT_CODE);
361             }
362         }
363     }
364 
365 }