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.business.user;
35
36 import fr.paris.lutece.portal.business.rbac.RBACRole;
37 import fr.paris.lutece.portal.business.right.Right;
38 import fr.paris.lutece.portal.business.user.authentication.LuteceDefaultAdminUser;
39 import fr.paris.lutece.util.password.IPassword;
40 import fr.paris.lutece.util.password.IPasswordFactory;
41 import fr.paris.lutece.util.sql.DAOUtil;
42
43 import java.sql.Statement;
44 import java.sql.Timestamp;
45 import java.util.ArrayList;
46 import java.util.Collection;
47 import java.util.HashMap;
48 import java.util.List;
49 import java.util.Locale;
50 import java.util.Map;
51
52 import javax.inject.Inject;
53
54 import org.apache.commons.collections.CollectionUtils;
55
56
57
58
59 public class AdminUserDAO implements IAdminUserDAO
60 {
61
62 private static final String CONSTANT_AND_STATUS = " AND status = ?";
63 private static final String CONSTANT_AND_USER_LEVEL = " AND level_user = ?";
64 private static final String CONSTANT_ORDER_BY_LAST_NAME = " ORDER BY last_name ";
65 private static final String CONSTANT_PERCENT = "%";
66 private static final String SQL_QUERY_INSERT = "INSERT INTO core_admin_user ( access_code, last_name , first_name, email, status, locale, level_user, accessibility_mode, password_max_valid_date, account_max_valid_date ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) ";
67 private static final String SQL_QUERY_SELECTALL = "SELECT id_user , access_code, last_name , first_name, email, status, locale, level_user, accessibility_mode, reset_password, password_max_valid_date, account_max_valid_date, last_login, workgroup_key FROM core_admin_user ORDER BY last_name ";
68 private static final String SQL_QUERY_SELECT_USER_FROM_USER_ID = "SELECT id_user , access_code, last_name , first_name, email, status, password, locale, level_user, reset_password, accessibility_mode, password_max_valid_date, account_max_valid_date, workgroup_key FROM core_admin_user WHERE id_user = ? ";
69 private static final String SQL_QUERY_SELECT_USER_FROM_ACCESS_CODE = "SELECT id_user, access_code, last_name, first_name, email, status, locale, level_user, reset_password, accessibility_mode, password_max_valid_date, last_login FROM core_admin_user WHERE access_code = ? ";
70 private static final String SQL_QUERY_SELECT_USER_FROM_EMAIL = "SELECT access_code FROM core_admin_user WHERE email = ? ";
71 private static final String SQL_QUERY_SELECT_RIGHTS_FROM_USER_ID = " SELECT a.id_right , a.name, a.admin_url , a.description , a.plugin_name, a.id_feature_group, a.icon_url, a.level_right, a.documentation_url, a.id_order, a.is_external_feature "
72 + " FROM core_admin_right a , core_user_right b " + " WHERE a.id_right = b.id_right " + " AND b.id_user = ? "
73 + " ORDER BY a.id_order ASC, a.id_right ASC ";
74 private static final String SQL_QUERY_UPDATE = "UPDATE core_admin_user SET access_code = ? , last_name = ? , first_name = ?, email = ?, status = ?, locale = ?, reset_password = ?, accessibility_mode = ?, password_max_valid_date = ?, level_user = ? WHERE id_user = ? ";
75 private static final String SQL_QUERY_DELETE = "DELETE FROM core_admin_user WHERE id_user = ? ";
76 private static final String SQL_QUERY_INSERT_USER_RIGHT = "INSERT INTO core_user_right ( id_right, id_user ) VALUES ( ? , ? ) ";
77 private static final String SQL_QUERY_DELETE_ALL_USER_RIGHTS = "DELETE FROM core_user_right WHERE id_user = ? ";
78 private static final String SQL_QUERY_SELECT_ROLES_FROM_USER_ID = " SELECT a.role_key , a.role_description "
79 + " FROM core_admin_role a , core_user_role b WHERE a.role_key = b.role_key " + " AND b.id_user = ? ORDER BY a.role_key ";
80 private static final String SQL_QUERY_INSERT_USER_ROLE = " INSERT INTO core_user_role ( role_key, id_user ) VALUES ( ? , ? ) ";
81 private static final String SQL_QUERY_DELETE_ALL_USER_ROLES = " DELETE FROM core_user_role WHERE id_user = ? ";
82 private static final String SQL_CHECK_ROLE_ATTRIBUTED = " SELECT id_user FROM core_user_role WHERE role_key = ?";
83 private static final String SQL_CHECK_ACCESS_CODE_IN_USE = " SELECT id_user FROM core_admin_user WHERE access_code = ?";
84 private static final String SQL_CHECK_EMAIL_IN_USE = " SELECT id_user FROM core_admin_user WHERE email = ?";
85 private static final String SQL_QUERY_INSERT_DEFAULT_USER = " INSERT INTO core_admin_user ( access_code, last_name, first_name, email, status, password, locale, level_user, accessibility_mode, reset_password, password_max_valid_date, account_max_valid_date, last_login, workgroup_key ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) ";
86 private static final String SQL_QUERY_UPDATE_DEFAULT_USER = " UPDATE core_admin_user SET access_code = ?, last_name = ?, first_name = ?, email = ?, status = ?, password = ?, locale = ?, reset_password = ?, accessibility_mode = ?, password_max_valid_date = ?, workgroup_key = ?, level_user = ? WHERE id_user = ? ";
87 private static final String SQL_QUERY_UPDATE_DEFAULT_USER_IGNORE_PASSWORD = " UPDATE core_admin_user SET access_code = ?, last_name = ?, first_name = ?, email = ?, status = ?, locale = ?, reset_password = ?, accessibility_mode = ?, password_max_valid_date = ?, workgroup_key = ?, level_user = ? WHERE id_user = ? ";
88 private static final String SQL_QUERY_SELECT_USERS_ID_BY_ROLES = " SELECT a.id_user , a.access_code, a.last_name , a.first_name, a.email, a.status, a.locale, a.accessibility_mode, a.password_max_valid_date "
89 + " FROM core_admin_user a, core_user_role b WHERE a.id_user = b.id_user AND b.role_key = ? ";
90 private static final String SQL_QUERY_SELECT_USER_RIGHTS_OWN = " SELECT DISTINCT b.id_right FROM core_admin_right a , core_user_right b WHERE b.id_user = ? and a.id_right = b.id_right and a.level_right >= ?";
91 private static final String SQL_QUERY_SELECT_USER_RIGHTS_DELEGATED = " SELECT DISTINCT b.id_right FROM core_admin_right a , core_user_right b WHERE b.id_user = ? and a.id_right = b.id_right and a.level_right < ?";
92 private static final String SQL_QUERY_DELETE_USER_RIGHTS = " DELETE FROM core_user_right WHERE id_user = ? and id_right = ?";
93 private static final String SQL_QUERY_SELECT_USERS_BY_LEVEL = " SELECT a.id_user, a.access_code, a.last_name, a.first_name, a.email, a.status, a.locale, a.accessibility_mode "
94 + " FROM core_admin_user a WHERE a.level_user = ? ";
95 private static final String SQL_QUERY_UPDATE_USERS_ROLE = "UPDATE core_user_role SET role_key = ? WHERE role_key = ?";
96 private static final String SQL_QUERY_SELECT_USER_ROLE = " SELECT id_user FROM core_user_role WHERE id_user = ? AND role_key = ? ";
97 private static final String SQL_QUERY_DELETE_ROLE_FOR_USER = " DELETE FROM core_user_role WHERE id_user = ? AND role_key = ? ";
98 private static final String SQL_QUERY_SELECT_USER_FROM_SEARCH = " SELECT id_user, access_code, last_name, first_name, email, status, locale, level_user, accessibility_mode "
99 + " FROM core_admin_user WHERE access_code LIKE ? AND last_name LIKE ? AND email LIKE ? AND first_name LIKE ? ";
100 private static final String SQL_QUERY_SELECT_USERS_BY_RIGHT = " SELECT u.id_user , u.access_code, u.last_name , u.first_name, u.email, u.status, u.locale, u.level_user, u.accessibility_mode "
101 + " FROM core_admin_user u INNER JOIN core_user_right r ON u.id_user = r.id_user WHERE r.id_right = ? ";
102 private static final String SQL_QUERY_SELECT_USER_RIGHT = " SELECT id_user FROM core_user_right WHERE id_user = ? AND id_right = ? ";
103 private static final String SQL_SELECT_USER_PASSWORD_HISTORY = "SELECT password FROM core_user_password_history WHERE id_user = ? ORDER BY date_password_change desc";
104 private static final String SQL_COUNT_USER_PASSWORD_HISTORY = "SELECT COUNT(*) FROM core_user_password_history WHERE id_user = ? AND date_password_change > ?";
105 private static final String SQL_INSERT_PASSWORD_HISTORY = "INSERT INTO core_user_password_history (id_user, password) VALUES ( ?, ? ) ";
106 private static final String SQL_DELETE_PASSWORD_HISTORY = "DELETE FROM core_user_password_history WHERE id_user = ?";
107 private static final String SQL_SELECT_ANONYMIZATION_STATUS_USER_FILED = "SELECT field_name, anonymize from core_admin_user_anonymize_field";
108 private static final String SQL_UPDATE_ANONYMIZATION_STATUS_USER_FILED = "UPDATE core_admin_user_anonymize_field SET anonymize = ? WHERE field_name = ? ";
109 private static final String SQL_QUERY_SELECT_EXPIRED_USER_ID = "SELECT id_user FROM core_admin_user WHERE status = ?";
110 private static final String SQL_QUERY_SELECT_EXPIRED_LIFE_TIME_USER_ID = "SELECT id_user FROM core_admin_user WHERE account_max_valid_date < ? and status < ? ";
111 private static final String SQL_QUERY_SELECT_USER_ID_FIRST_ALERT = "SELECT id_user FROM core_admin_user WHERE nb_alerts_sent = 0 and status < ? and account_max_valid_date < ? ";
112 private static final String SQL_QUERY_SELECT_USER_ID_OTHER_ALERT = "SELECT id_user FROM core_admin_user "
113 + "WHERE nb_alerts_sent > 0 and nb_alerts_sent <= ? and status < ? and (account_max_valid_date + nb_alerts_sent * ?) < ? ";
114 private static final String SQL_QUERY_SELECT_USER_ID_PASSWORD_EXPIRED = " SELECT id_user FROM core_admin_user WHERE password_max_valid_date < ? AND reset_password = 0 ";
115 private static final String SQL_QUERY_UPDATE_STATUS = " UPDATE core_admin_user SET status = ? WHERE id_user IN ( ";
116 private static final String SQL_QUERY_UPDATE_NB_ALERT = " UPDATE core_admin_user SET nb_alerts_sent = nb_alerts_sent + 1 WHERE id_user IN ( ";
117 private static final String SQL_QUERY_UPDATE_RESET_PASSWORD_LIST_ID = " UPDATE core_admin_user SET reset_password = 1 WHERE id_user IN ( ";
118 private static final String SQL_QUERY_UPDATE_REACTIVATE_ACCOUNT = " UPDATE core_admin_user SET nb_alerts_sent = 0, account_max_valid_date = ? WHERE id_user = ? ";
119 private static final String SQL_QUERY_UPDATE_DATE_LAST_LOGIN = " UPDATE core_admin_user SET last_login = ? WHERE id_user = ? ";
120 private static final String CONSTANT_CLOSE_PARENTHESIS = " ) ";
121 private static final String CONSTANT_COMMA = ", ";
122
123 @Inject
124 private IPasswordFactory _passwordFactory;
125
126
127
128
129 @Override
130 public AdminUser load( int nUserId )
131 {
132 AdminUser user = null;
133 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USER_FROM_USER_ID ) )
134 {
135 daoUtil.setInt( 1, nUserId );
136 daoUtil.executeQuery( );
137
138 if ( daoUtil.next( ) )
139 {
140 user = new AdminUser( );
141 user.setUserId( daoUtil.getInt( 1 ) );
142 user.setAccessCode( daoUtil.getString( 2 ) );
143 user.setLastName( daoUtil.getString( 3 ) );
144 user.setFirstName( daoUtil.getString( 4 ) );
145 user.setEmail( daoUtil.getString( 5 ) );
146 user.setStatus( daoUtil.getInt( 6 ) );
147 user.setLocale( new Locale( daoUtil.getString( 8 ) ) );
148 user.setUserLevel( daoUtil.getInt( 9 ) );
149 user.setPasswordReset( daoUtil.getBoolean( 10 ) );
150 user.setAccessibilityMode( daoUtil.getBoolean( 11 ) );
151 user.setPasswordMaxValidDate( daoUtil.getTimestamp( 12 ) );
152
153 long accountTime = daoUtil.getLong( 13 );
154
155 if ( accountTime > 0 )
156 {
157 user.setAccountMaxValidDate( new Timestamp( accountTime ) );
158 }
159 }
160
161 }
162
163 return user;
164 }
165
166
167
168
169 @Override
170 public AdminUser selectUserByAccessCode( String strUserAccessCode )
171 {
172 AdminUser user = null;
173 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USER_FROM_ACCESS_CODE ) )
174 {
175 daoUtil.setString( 1, strUserAccessCode );
176 daoUtil.executeQuery( );
177
178 if ( daoUtil.next( ) )
179 {
180 user = new AdminUser( );
181 user.setUserId( daoUtil.getInt( 1 ) );
182 user.setAccessCode( daoUtil.getString( 2 ) );
183 user.setLastName( daoUtil.getString( 3 ) );
184 user.setFirstName( daoUtil.getString( 4 ) );
185 user.setEmail( daoUtil.getString( 5 ) );
186 user.setStatus( daoUtil.getInt( 6 ) );
187 user.setLocale( new Locale( daoUtil.getString( 7 ) ) );
188 user.setUserLevel( daoUtil.getInt( 8 ) );
189 user.setPasswordReset( daoUtil.getBoolean( 9 ) );
190 user.setAccessibilityMode( daoUtil.getBoolean( 10 ) );
191 user.setPasswordMaxValidDate( daoUtil.getTimestamp( 11 ) );
192
193 Timestamp dateLastLogin = daoUtil.getTimestamp( 12 );
194
195 if ( ( dateLastLogin != null ) && !dateLastLogin.equals( AdminUser.getDefaultDateLastLogin( ) ) )
196 {
197 user.setDateLastLogin( dateLastLogin );
198 }
199 }
200
201 }
202
203 return user;
204 }
205
206
207
208
209 @Override
210 public <T extends AdminUser> T selectUserByAccessCode(String strUserAccessCode, T user) {
211
212 if(user != null)
213 {
214 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USER_FROM_ACCESS_CODE ) )
215 {
216 daoUtil.setString( 1, strUserAccessCode );
217 daoUtil.executeQuery( );
218
219 if ( daoUtil.next( ) )
220 {
221 user.setUserId( daoUtil.getInt( 1 ) );
222 user.setAccessCode( daoUtil.getString( 2 ) );
223 user.setLastName( daoUtil.getString( 3 ) );
224 user.setFirstName( daoUtil.getString( 4 ) );
225 user.setEmail( daoUtil.getString( 5 ) );
226 user.setStatus( daoUtil.getInt( 6 ) );
227 user.setLocale( new Locale( daoUtil.getString( 7 ) ) );
228 user.setUserLevel( daoUtil.getInt( 8 ) );
229 user.setPasswordReset( daoUtil.getBoolean( 9 ) );
230 user.setAccessibilityMode( daoUtil.getBoolean( 10 ) );
231 user.setPasswordMaxValidDate( daoUtil.getTimestamp( 11 ) );
232
233 Timestamp dateLastLogin = daoUtil.getTimestamp( 12 );
234
235 if ( ( dateLastLogin != null ) && !dateLastLogin.equals( AdminUser.getDefaultDateLastLogin( ) ) )
236 {
237 user.setDateLastLogin( dateLastLogin );
238 }
239 }
240 else
241 {
242
243 user= null;
244 }
245
246
247 }
248 }
249
250 return user;
251 }
252
253
254
255
256 @Override
257 public String selectUserByEmail( String strEmail )
258 {
259 String strAccessCode = null;
260 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USER_FROM_EMAIL ) )
261 {
262 daoUtil.setString( 1, strEmail );
263 daoUtil.executeQuery( );
264
265 if ( daoUtil.next( ) )
266 {
267 strAccessCode = daoUtil.getString( 1 );
268 }
269
270 }
271
272 return strAccessCode;
273 }
274
275
276
277
278 @Override
279 public Collection<AdminUser> selectUserList( )
280 {
281 Collection<AdminUser> userList = new ArrayList<>( );
282 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECTALL ) )
283 {
284 daoUtil.executeQuery( );
285
286 while ( daoUtil.next( ) )
287 {
288 AdminUserbusiness/user/AdminUser.html#AdminUser">AdminUser user = new AdminUser( );
289 user.setUserId( daoUtil.getInt( 1 ) );
290 user.setAccessCode( daoUtil.getString( 2 ) );
291 user.setLastName( daoUtil.getString( 3 ) );
292 user.setFirstName( daoUtil.getString( 4 ) );
293 user.setEmail( daoUtil.getString( 5 ) );
294 user.setStatus( daoUtil.getInt( 6 ) );
295 user.setLocale( new Locale( daoUtil.getString( 7 ) ) );
296 user.setUserLevel( daoUtil.getInt( 8 ) );
297 user.setAccessibilityMode( daoUtil.getBoolean( 9 ) );
298 user.setPasswordReset( daoUtil.getBoolean( 10 ) );
299 user.setPasswordMaxValidDate( daoUtil.getTimestamp( 11 ) );
300
301 long accountTime = daoUtil.getLong( 12 );
302
303 if ( accountTime > 0 )
304 {
305 user.setAccountMaxValidDate( new Timestamp( accountTime ) );
306 }
307
308 Timestamp dateLastLogin = daoUtil.getTimestamp( 13 );
309
310 if ( ( dateLastLogin != null ) && !dateLastLogin.equals( AdminUser.getDefaultDateLastLogin( ) ) )
311 {
312 user.setDateLastLogin( dateLastLogin );
313 }
314
315 user.setWorkgroupKey( daoUtil.getString( 14 ) );
316 userList.add( user );
317 }
318
319 }
320
321 return userList;
322 }
323
324
325
326
327 @Override
328 public void insert( AdminUser user )
329 {
330 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT, Statement.RETURN_GENERATED_KEYS ) )
331 {
332 int nIndex = 1;
333 daoUtil.setString( nIndex++, user.getAccessCode( ) );
334 daoUtil.setString( nIndex++, user.getLastName( ) );
335 daoUtil.setString( nIndex++, user.getFirstName( ) );
336 daoUtil.setString( nIndex++, user.getEmail( ) );
337 daoUtil.setInt( nIndex++, user.getStatus( ) );
338 daoUtil.setString( nIndex++, user.getLocale( ).toString( ) );
339 daoUtil.setInt( nIndex++, user.getUserLevel( ) );
340 daoUtil.setBoolean( nIndex++, user.getAccessibilityMode( ) );
341 daoUtil.setTimestamp( nIndex++, user.getPasswordMaxValidDate( ) );
342
343 if ( user.getAccountMaxValidDate( ) == null )
344 {
345 daoUtil.setLongNull( nIndex );
346 }
347 else
348 {
349 daoUtil.setLong( nIndex, user.getAccountMaxValidDate( ).getTime( ) );
350 }
351
352 daoUtil.executeUpdate( );
353
354 if ( daoUtil.nextGeneratedKey( ) )
355 {
356 user.setUserId( daoUtil.getGeneratedKeyInt( 1 ) );
357 }
358 }
359 }
360
361
362
363
364 @Override
365 public void store( AdminUser user )
366 {
367 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE ) )
368 {
369
370 daoUtil.setString( 1, user.getAccessCode( ) );
371 daoUtil.setString( 2, user.getLastName( ) );
372 daoUtil.setString( 3, user.getFirstName( ) );
373 daoUtil.setString( 4, user.getEmail( ) );
374 daoUtil.setInt( 5, user.getStatus( ) );
375 daoUtil.setString( 6, user.getLocale( ).toString( ) );
376 daoUtil.setBoolean( 7, user.isPasswordReset( ) );
377 daoUtil.setBoolean( 8, user.getAccessibilityMode( ) );
378 daoUtil.setTimestamp( 9, user.getPasswordMaxValidDate( ) );
379 daoUtil.setInt( 10, user.getUserLevel( ) );
380
381 daoUtil.setInt( 11, user.getUserId( ) );
382
383 daoUtil.executeUpdate( );
384 }
385 }
386
387
388
389
390 @Override
391 public void delete( int nUserId )
392 {
393 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE ) )
394 {
395 daoUtil.setInt( 1, nUserId );
396 daoUtil.executeUpdate( );
397 }
398 }
399
400
401
402
403 @Override
404 public Map<String, Right> selectRightsListForUser( int nUserId )
405 {
406 Map<String, Right> rightsMap = new HashMap<>( );
407
408 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_RIGHTS_FROM_USER_ID ) )
409 {
410 daoUtil.setInt( 1, nUserId );
411 daoUtil.executeQuery( );
412
413 while ( daoUtil.next( ) )
414 {
415 Rightal/business/right/Right.html#Right">Right right = new Right( );
416 right.setId( daoUtil.getString( 1 ) );
417 right.setNameKey( daoUtil.getString( 2 ) );
418 right.setUrl( daoUtil.getString( 3 ) );
419 right.setDescriptionKey( daoUtil.getString( 4 ) );
420 right.setPluginName( daoUtil.getString( 5 ) );
421 right.setFeatureGroup( daoUtil.getString( 6 ) );
422 right.setIconUrl( daoUtil.getString( 7 ) );
423 right.setLevel( daoUtil.getInt( 8 ) );
424 right.setDocumentationUrl( daoUtil.getString( 9 ) );
425 right.setOrder( daoUtil.getInt( 10 ) );
426 right.setExternalFeature( daoUtil.getBoolean( 11 ) );
427 rightsMap.put( right.getId( ), right );
428 }
429
430 }
431
432 return rightsMap;
433 }
434
435
436
437
438 @Override
439 public void insertRightsListForUser( int nUserId, String strRightId )
440 {
441 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT_USER_RIGHT ) )
442 {
443 daoUtil.setString( 1, strRightId );
444 daoUtil.setInt( 2, nUserId );
445 daoUtil.executeUpdate( );
446 }
447 }
448
449
450
451
452 @Override
453 public void deleteAllRightsForUser( int nUserId )
454 {
455 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE_ALL_USER_RIGHTS ) )
456 {
457 daoUtil.setInt( 1, nUserId );
458 daoUtil.executeUpdate( );
459 }
460 }
461
462
463
464
465 @Override
466 public Map<String, RBACRole> selectRolesListForUser( int nUserId )
467 {
468 Map<String, RBACRole> rolesMap = new HashMap<>( );
469
470 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_ROLES_FROM_USER_ID ) )
471 {
472 daoUtil.setInt( 1, nUserId );
473 daoUtil.executeQuery( );
474
475 while ( daoUtil.next( ) )
476 {
477 RBACRole/business/rbac/RBACRole.html#RBACRole">RBACRole role = new RBACRole( );
478 role.setKey( daoUtil.getString( 1 ) );
479 role.setDescription( daoUtil.getString( 2 ) );
480
481 rolesMap.put( role.getKey( ), role );
482 }
483
484 }
485
486 return rolesMap;
487 }
488
489
490
491
492 @Override
493 public void insertRolesListForUser( int nUserId, String strRoleKey )
494 {
495 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT_USER_ROLE ) )
496 {
497 daoUtil.setString( 1, strRoleKey );
498 daoUtil.setInt( 2, nUserId );
499 daoUtil.executeUpdate( );
500 }
501 }
502
503
504
505
506 @Override
507 public void deleteAllRolesForUser( int nUserId )
508 {
509 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE_ALL_USER_ROLES ) )
510 {
511 daoUtil.setInt( 1, nUserId );
512 daoUtil.executeUpdate( );
513 }
514 }
515
516
517
518
519 @Override
520 public boolean checkRoleAttributed( String strRoleKey )
521 {
522 boolean bInUse = false;
523
524 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_CHECK_ROLE_ATTRIBUTED ) )
525 {
526 daoUtil.setString( 1, strRoleKey );
527 daoUtil.executeQuery( );
528
529 if ( daoUtil.next( ) )
530 {
531 bInUse = true;
532 }
533
534 }
535
536 return bInUse;
537 }
538
539
540
541
542 @Override
543 public int checkAccessCodeAlreadyInUse( String strAccessCode )
544 {
545 int nIdUser = -1;
546 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_CHECK_ACCESS_CODE_IN_USE ) )
547 {
548 daoUtil.setString( 1, strAccessCode );
549 daoUtil.executeQuery( );
550
551 if ( daoUtil.next( ) )
552 {
553 nIdUser = daoUtil.getInt( 1 );
554 }
555
556 }
557
558 return nIdUser;
559 }
560
561
562
563
564 @Override
565 public int checkEmailAlreadyInUse( String strEmail )
566 {
567 int nIdUser = -1;
568 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_CHECK_EMAIL_IN_USE ) )
569 {
570 daoUtil.setString( 1, strEmail );
571 daoUtil.executeQuery( );
572
573 if ( daoUtil.next( ) )
574 {
575 nIdUser = daoUtil.getInt( 1 );
576 }
577
578 }
579
580 return nIdUser;
581 }
582
583
584
585
586
587
588 @Override
589 public void insert( LuteceDefaultAdminUser user )
590 {
591 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT_DEFAULT_USER, Statement.RETURN_GENERATED_KEYS ) )
592 {
593 int nIndex = 1;
594 daoUtil.setString( nIndex++, user.getAccessCode( ) );
595 daoUtil.setString( nIndex++, user.getLastName( ) );
596 daoUtil.setString( nIndex++, user.getFirstName( ) );
597 daoUtil.setString( nIndex++, user.getEmail( ) );
598 daoUtil.setInt( nIndex++, user.getStatus( ) );
599 daoUtil.setString( nIndex++, user.getPassword( ).getStorableRepresentation( ) );
600 daoUtil.setString( nIndex++, user.getLocale( ).toString( ) );
601 daoUtil.setInt( nIndex++, user.getUserLevel( ) );
602 daoUtil.setBoolean( nIndex++, user.getAccessibilityMode( ) );
603 daoUtil.setBoolean( nIndex++, user.isPasswordReset( ) );
604 daoUtil.setTimestamp( nIndex++, user.getPasswordMaxValidDate( ) );
605
606 if ( user.getAccountMaxValidDate( ) == null )
607 {
608 daoUtil.setLongNull( nIndex++ );
609 }
610 else
611 {
612 daoUtil.setLong( nIndex++, user.getAccountMaxValidDate( ).getTime( ) );
613 }
614
615 daoUtil.setTimestamp( nIndex++, user.getDateLastLogin( ) );
616 daoUtil.setString( nIndex, user.getWorkgroupKey( ) );
617 daoUtil.executeUpdate( );
618
619 if ( daoUtil.nextGeneratedKey( ) )
620 {
621 user.setUserId( daoUtil.getGeneratedKeyInt( 1 ) );
622 }
623 }
624 }
625
626
627
628
629 @Override
630 public void store( LuteceDefaultAdminUser user, PasswordUpdateMode passwordMode )
631 {
632 String query = SQL_QUERY_UPDATE_DEFAULT_USER_IGNORE_PASSWORD;
633 if ( PasswordUpdateMode.UPDATE.equals( passwordMode ) )
634 {
635 query = SQL_QUERY_UPDATE_DEFAULT_USER;
636 }
637 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( query ) )
638 {
639
640 int nArgIndex = 1;
641 daoUtil.setString( nArgIndex++, user.getAccessCode( ) );
642 daoUtil.setString( nArgIndex++, user.getLastName( ) );
643 daoUtil.setString( nArgIndex++, user.getFirstName( ) );
644 daoUtil.setString( nArgIndex++, user.getEmail( ) );
645 daoUtil.setInt( nArgIndex++, user.getStatus( ) );
646 if ( PasswordUpdateMode.UPDATE.equals( passwordMode ) )
647 {
648 daoUtil.setString( nArgIndex++, user.getPassword( ).getStorableRepresentation( ) );
649 }
650 daoUtil.setString( nArgIndex++, user.getLocale( ).toString( ) );
651 daoUtil.setBoolean( nArgIndex++, user.isPasswordReset( ) );
652 daoUtil.setBoolean( nArgIndex++, user.getAccessibilityMode( ) );
653 daoUtil.setTimestamp( nArgIndex++, user.getPasswordMaxValidDate( ) );
654 daoUtil.setString( nArgIndex++, user.getWorkgroupKey( ) );
655 daoUtil.setInt( nArgIndex++, user.getUserLevel( ) );
656
657 daoUtil.setInt( nArgIndex++, user.getUserId( ) );
658
659 daoUtil.executeUpdate( );
660 }
661 }
662
663
664
665
666 @Override
667 public LuteceDefaultAdminUser loadDefaultAdminUser( int nUserId )
668 {
669 LuteceDefaultAdminUser/authentication/LuteceDefaultAdminUser.html#LuteceDefaultAdminUser">LuteceDefaultAdminUser user = new LuteceDefaultAdminUser( );
670 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USER_FROM_USER_ID ) )
671 {
672 daoUtil.setInt( 1, nUserId );
673 daoUtil.executeQuery( );
674
675 if ( daoUtil.next( ) )
676 {
677 user.setUserId( daoUtil.getInt( 1 ) );
678 user.setAccessCode( daoUtil.getString( 2 ) );
679 user.setLastName( daoUtil.getString( 3 ) );
680 user.setFirstName( daoUtil.getString( 4 ) );
681 user.setEmail( daoUtil.getString( 5 ) );
682 user.setStatus( daoUtil.getInt( 6 ) );
683 user.setPassword( _passwordFactory.getPassword( daoUtil.getString( 7 ) ) );
684
685 Locale locale = new Locale( daoUtil.getString( 8 ) );
686 user.setLocale( locale );
687 user.setUserLevel( daoUtil.getInt( 9 ) );
688 user.setPasswordReset( daoUtil.getBoolean( 10 ) );
689 user.setAccessibilityMode( daoUtil.getBoolean( 11 ) );
690 user.setWorkgroupKey( daoUtil.getString( 14 ) );
691 }
692 }
693
694 return user;
695 }
696
697
698
699
700 @Override
701 public Collection<AdminUser> selectUsersByRole( String strRoleKey )
702 {
703 Collection<AdminUser> userList = new ArrayList<>( );
704 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USERS_ID_BY_ROLES ) )
705 {
706 daoUtil.setString( 1, strRoleKey );
707 daoUtil.executeQuery( );
708
709 while ( daoUtil.next( ) )
710 {
711 AdminUserbusiness/user/AdminUser.html#AdminUser">AdminUser user = new AdminUser( );
712 user.setUserId( daoUtil.getInt( 1 ) );
713 user.setAccessCode( daoUtil.getString( 2 ) );
714 user.setLastName( daoUtil.getString( 3 ) );
715 user.setFirstName( daoUtil.getString( 4 ) );
716 user.setEmail( daoUtil.getString( 5 ) );
717 user.setStatus( daoUtil.getInt( 6 ) );
718 user.setLocale( new Locale( daoUtil.getString( 7 ) ) );
719 user.setAccessibilityMode( daoUtil.getBoolean( 8 ) );
720 user.setPasswordMaxValidDate( daoUtil.getTimestamp( 9 ) );
721 userList.add( user );
722 }
723
724 }
725
726 return userList;
727 }
728
729
730
731
732 @Override
733 public Collection<AdminUser> selectUsersByLevel( int nIdLevel )
734 {
735 Collection<AdminUser> userList = new ArrayList<>( );
736 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USERS_BY_LEVEL ) )
737 {
738 daoUtil.setInt( 1, nIdLevel );
739 daoUtil.executeQuery( );
740
741 while ( daoUtil.next( ) )
742 {
743 AdminUserbusiness/user/AdminUser.html#AdminUser">AdminUser user = new AdminUser( );
744 user.setUserId( daoUtil.getInt( 1 ) );
745 user.setAccessCode( daoUtil.getString( 2 ) );
746 user.setLastName( daoUtil.getString( 3 ) );
747 user.setFirstName( daoUtil.getString( 4 ) );
748 user.setEmail( daoUtil.getString( 5 ) );
749 user.setStatus( daoUtil.getInt( 6 ) );
750 user.setLocale( new Locale( daoUtil.getString( 7 ) ) );
751 user.setAccessibilityMode( daoUtil.getBoolean( 8 ) );
752 userList.add( user );
753 }
754
755 }
756
757 return userList;
758 }
759
760
761
762
763
764
765
766
767
768
769
770
771 private Collection<String> selectIdRights( int nUserId, int nUserLevel, boolean bDelegated )
772 {
773 String strSqlQuery = bDelegated ? SQL_QUERY_SELECT_USER_RIGHTS_DELEGATED : SQL_QUERY_SELECT_USER_RIGHTS_OWN;
774 Collection<String> idRightList = new ArrayList<>( );
775 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( strSqlQuery ) )
776 {
777 daoUtil.setInt( 1, nUserId );
778 daoUtil.setInt( 2, nUserLevel );
779 daoUtil.executeQuery( );
780
781 while ( daoUtil.next( ) )
782 {
783 idRightList.add( daoUtil.getString( 1 ) );
784 }
785
786 }
787
788 return idRightList;
789 }
790
791
792
793
794
795
796
797
798
799 private void deleteRightsForUser( int nUserId, Collection<String> idRightList )
800 {
801 for ( String strIdRight : idRightList )
802 {
803 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE_USER_RIGHTS ) )
804 {
805 daoUtil.setInt( 1, nUserId );
806 daoUtil.setString( 2, strIdRight );
807 daoUtil.executeUpdate( );
808 }
809 }
810 }
811
812
813
814
815 @Override
816 public void deleteAllOwnRightsForUser( int nUserId, int nUserLevel )
817 {
818 Collection<String> idRightList = selectIdRights( nUserId, nUserLevel, false );
819
820 deleteRightsForUser( nUserId, idRightList );
821 }
822
823
824
825
826 @Override
827 public void deleteAllDelegatedRightsForUser( int nUserId, int nUserLevel )
828 {
829 Collection<String> idRightList = selectIdRights( nUserId, nUserLevel, true );
830
831 deleteRightsForUser( nUserId, idRightList );
832 }
833
834
835
836
837 @Override
838 public void storeUsersRole( String strOldRoleKey, RBACRole role )
839 {
840 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE_USERS_ROLE ) )
841 {
842 daoUtil.setString( 1, role.getKey( ) );
843 daoUtil.setString( 2, strOldRoleKey );
844
845 daoUtil.executeUpdate( );
846 }
847 }
848
849
850
851
852 @Override
853 public boolean hasRole( int nUserId, String strRoleKey )
854 {
855 boolean bHasRole = false;
856 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USER_ROLE ) )
857 {
858 daoUtil.setInt( 1, nUserId );
859 daoUtil.setString( 2, strRoleKey );
860 daoUtil.executeQuery( );
861
862 if ( daoUtil.next( ) )
863 {
864 bHasRole = true;
865 }
866
867 }
868
869 return bHasRole;
870 }
871
872
873
874
875 @Override
876 public void deleteRoleForUser( int nUserId, String strRoleKey )
877 {
878 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE_ROLE_FOR_USER ) )
879 {
880 daoUtil.setInt( 1, nUserId );
881 daoUtil.setString( 2, strRoleKey );
882 daoUtil.executeUpdate( );
883 }
884 }
885
886
887
888
889 @Override
890 public Collection<AdminUser> selectUsersByFilter( AdminUserFilter auFilter )
891 {
892 Collection<AdminUser> userList = new ArrayList<>( );
893
894 String query = SQL_QUERY_SELECT_USER_FROM_SEARCH;
895
896 if ( auFilter.getStatus( ) != -1 )
897 {
898 query += CONSTANT_AND_STATUS;
899 }
900
901 if ( auFilter.getUserLevel( ) != -1 )
902 {
903 query += CONSTANT_AND_USER_LEVEL;
904 }
905
906 query += CONSTANT_ORDER_BY_LAST_NAME;
907
908 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( query ) )
909 {
910 int nIndex = 0;
911 daoUtil.setString( ++nIndex, CONSTANT_PERCENT + auFilter.getAccessCode( ) + CONSTANT_PERCENT );
912 daoUtil.setString( ++nIndex, CONSTANT_PERCENT + auFilter.getLastName( ) + CONSTANT_PERCENT );
913 daoUtil.setString( ++nIndex, CONSTANT_PERCENT + auFilter.getEmail( ) + CONSTANT_PERCENT );
914 daoUtil.setString( ++nIndex, CONSTANT_PERCENT + auFilter.getFirstName( ) + CONSTANT_PERCENT );
915
916 if ( auFilter.getStatus( ) != -1 )
917 {
918 daoUtil.setInt( ++nIndex, auFilter.getStatus( ) );
919 }
920
921 if ( auFilter.getUserLevel( ) != -1 )
922 {
923 daoUtil.setInt( ++nIndex, auFilter.getUserLevel( ) );
924 }
925
926 daoUtil.executeQuery( );
927
928 while ( daoUtil.next( ) )
929 {
930 AdminUserbusiness/user/AdminUser.html#AdminUser">AdminUser user = new AdminUser( );
931 user.setUserId( daoUtil.getInt( 1 ) );
932 user.setAccessCode( daoUtil.getString( 2 ) );
933 user.setLastName( daoUtil.getString( 3 ) );
934 user.setFirstName( daoUtil.getString( 4 ) );
935 user.setEmail( daoUtil.getString( 5 ) );
936 user.setStatus( daoUtil.getInt( 6 ) );
937 user.setLocale( new Locale( daoUtil.getString( 7 ) ) );
938 user.setUserLevel( daoUtil.getInt( 8 ) );
939 user.setAccessibilityMode( daoUtil.getBoolean( 9 ) );
940 userList.add( user );
941 }
942
943 }
944
945 return userList;
946 }
947
948
949
950
951 @Override
952 public Collection<AdminUser> selectUsersByRight( String strIdRight )
953 {
954 Collection<AdminUser> userList = new ArrayList<>( );
955 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USERS_BY_RIGHT ) )
956 {
957 daoUtil.setString( 1, strIdRight );
958 daoUtil.executeQuery( );
959
960 while ( daoUtil.next( ) )
961 {
962 AdminUserbusiness/user/AdminUser.html#AdminUser">AdminUser user = new AdminUser( );
963 user.setUserId( daoUtil.getInt( 1 ) );
964 user.setAccessCode( daoUtil.getString( 2 ) );
965 user.setLastName( daoUtil.getString( 3 ) );
966 user.setFirstName( daoUtil.getString( 4 ) );
967 user.setEmail( daoUtil.getString( 5 ) );
968 user.setStatus( daoUtil.getInt( 6 ) );
969 user.setLocale( new Locale( daoUtil.getString( 7 ) ) );
970 user.setUserLevel( daoUtil.getInt( 8 ) );
971 user.setAccessibilityMode( daoUtil.getBoolean( 9 ) );
972 userList.add( user );
973 }
974
975 }
976
977 return userList;
978 }
979
980
981
982
983 @Override
984 public boolean hasRight( int nUserId, String strIdRight )
985 {
986 boolean bHasRight = false;
987 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USER_RIGHT ) )
988 {
989 daoUtil.setInt( 1, nUserId );
990 daoUtil.setString( 2, strIdRight );
991 daoUtil.executeQuery( );
992
993 if ( daoUtil.next( ) )
994 {
995 bHasRight = true;
996 }
997
998 }
999
1000 return bHasRight;
1001 }
1002
1003
1004
1005
1006 @Override
1007 public void deleteRightForUser( int nUserId, String strIdRight )
1008 {
1009 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE_USER_RIGHTS ) )
1010 {
1011 daoUtil.setInt( 1, nUserId );
1012 daoUtil.setString( 2, strIdRight );
1013 daoUtil.executeUpdate( );
1014 }
1015 }
1016
1017
1018
1019
1020 @Override
1021 public List<IPassword> selectUserPasswordHistory( int nUserID )
1022 {
1023 List<IPassword> listPasswordHistory = new ArrayList<>( );
1024
1025 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_SELECT_USER_PASSWORD_HISTORY ) )
1026 {
1027 daoUtil.setInt( 1, nUserID );
1028 daoUtil.executeQuery( );
1029
1030 while ( daoUtil.next( ) )
1031 {
1032 listPasswordHistory.add( _passwordFactory.getPassword( daoUtil.getString( 1 ) ) );
1033 }
1034
1035 }
1036
1037 return listPasswordHistory;
1038 }
1039
1040
1041
1042
1043 @Override
1044 public int countUserPasswordHistoryFromDate( Timestamp minDate, int nUserId )
1045 {
1046 int nNbRes = 0;
1047
1048 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_COUNT_USER_PASSWORD_HISTORY ) )
1049 {
1050 daoUtil.setInt( 1, nUserId );
1051 daoUtil.setTimestamp( 2, minDate );
1052 daoUtil.executeQuery( );
1053
1054 if ( daoUtil.next( ) )
1055 {
1056 nNbRes = daoUtil.getInt( 1 );
1057 }
1058
1059 }
1060
1061 return nNbRes;
1062 }
1063
1064
1065
1066
1067 @Override
1068 public void insertNewPasswordInHistory( IPassword password, int nUserId )
1069 {
1070 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_INSERT_PASSWORD_HISTORY ) )
1071 {
1072 daoUtil.setInt( 1, nUserId );
1073 daoUtil.setString( 2, password.getStorableRepresentation( ) );
1074
1075 daoUtil.executeUpdate( );
1076 }
1077 }
1078
1079
1080
1081
1082 @Override
1083 public void removeAllPasswordHistoryForUser( int nUserId )
1084 {
1085 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_DELETE_PASSWORD_HISTORY ) )
1086 {
1087 daoUtil.setInt( 1, nUserId );
1088 daoUtil.executeUpdate( );
1089 }
1090 }
1091
1092
1093
1094
1095 @Override
1096 public Map<String, Boolean> selectAnonymizationStatusUserStaticField( )
1097 {
1098 Map<String, Boolean> resultMap = new HashMap<>( );
1099 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_SELECT_ANONYMIZATION_STATUS_USER_FILED ) )
1100 {
1101 daoUtil.executeQuery( );
1102
1103 while ( daoUtil.next( ) )
1104 {
1105 resultMap.put( daoUtil.getString( 1 ), daoUtil.getBoolean( 2 ) );
1106 }
1107
1108 }
1109
1110 return resultMap;
1111 }
1112
1113
1114
1115
1116 @Override
1117 public void updateAnonymizationStatusUserStaticField( String strFieldName, boolean bAnonymizeFiled )
1118 {
1119 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_UPDATE_ANONYMIZATION_STATUS_USER_FILED ) )
1120 {
1121 daoUtil.setBoolean( 1, bAnonymizeFiled );
1122 daoUtil.setString( 2, strFieldName );
1123 daoUtil.executeUpdate( );
1124 }
1125 }
1126
1127
1128
1129
1130 @Override
1131 public List<Integer> findAllExpiredUserId( )
1132 {
1133 List<Integer> listIdExpiredUser = new ArrayList<>( );
1134 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_EXPIRED_USER_ID ) )
1135 {
1136 daoUtil.setInt( 1, AdminUser.EXPIRED_CODE );
1137
1138 daoUtil.executeQuery( );
1139
1140 while ( daoUtil.next( ) )
1141 {
1142 listIdExpiredUser.add( daoUtil.getInt( 1 ) );
1143 }
1144
1145 }
1146
1147 return listIdExpiredUser;
1148 }
1149
1150
1151
1152
1153 @Override
1154 public List<Integer> getIdUsersWithExpiredLifeTimeList( Timestamp currentTimestamp )
1155 {
1156 List<Integer> listIdExpiredUser = new ArrayList<>( );
1157 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_EXPIRED_LIFE_TIME_USER_ID ) )
1158 {
1159 daoUtil.setLong( 1, currentTimestamp.getTime( ) );
1160 daoUtil.setInt( 2, AdminUser.EXPIRED_CODE );
1161
1162 daoUtil.executeQuery( );
1163
1164 while ( daoUtil.next( ) )
1165 {
1166 listIdExpiredUser.add( daoUtil.getInt( 1 ) );
1167 }
1168
1169 }
1170
1171 return listIdExpiredUser;
1172 }
1173
1174
1175
1176
1177 @Override
1178 public List<Integer> getIdUsersToSendFirstAlert( Timestamp alertMaxDate )
1179 {
1180 List<Integer> listIdUserFirstAlert = new ArrayList<>( );
1181 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USER_ID_FIRST_ALERT ) )
1182 {
1183 daoUtil.setInt( 1, AdminUser.EXPIRED_CODE );
1184 daoUtil.setLong( 2, alertMaxDate.getTime( ) );
1185
1186 daoUtil.executeQuery( );
1187
1188 while ( daoUtil.next( ) )
1189 {
1190 listIdUserFirstAlert.add( daoUtil.getInt( 1 ) );
1191 }
1192
1193 }
1194
1195 return listIdUserFirstAlert;
1196 }
1197
1198
1199
1200
1201 @Override
1202 public List<Integer> getIdUsersToSendOtherAlert( Timestamp alertMaxDate, Timestamp timeBetweenAlerts, int maxNumberAlerts )
1203 {
1204 List<Integer> listIdUserFirstAlert = new ArrayList<>( );
1205 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USER_ID_OTHER_ALERT ) )
1206 {
1207 daoUtil.setInt( 1, maxNumberAlerts );
1208 daoUtil.setInt( 2, AdminUser.EXPIRED_CODE );
1209 daoUtil.setLong( 3, timeBetweenAlerts.getTime( ) );
1210 daoUtil.setLong( 4, alertMaxDate.getTime( ) );
1211
1212 daoUtil.executeQuery( );
1213
1214 while ( daoUtil.next( ) )
1215 {
1216 listIdUserFirstAlert.add( daoUtil.getInt( 1 ) );
1217 }
1218
1219 }
1220
1221 return listIdUserFirstAlert;
1222 }
1223
1224
1225
1226
1227 @Override
1228 public List<Integer> getIdUsersWithExpiredPasswordsList( Timestamp currentTimestamp )
1229 {
1230 List<Integer> idUserPasswordExpiredlist = new ArrayList<>( );
1231 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_USER_ID_PASSWORD_EXPIRED ) )
1232 {
1233 daoUtil.setTimestamp( 1, currentTimestamp );
1234
1235 daoUtil.executeQuery( );
1236
1237 while ( daoUtil.next( ) )
1238 {
1239 idUserPasswordExpiredlist.add( daoUtil.getInt( 1 ) );
1240 }
1241
1242 }
1243
1244 return idUserPasswordExpiredlist;
1245 }
1246
1247
1248
1249
1250 @Override
1251 public void updateUserStatus( List<Integer> listIdUser, int nNewStatus )
1252 {
1253 if ( CollectionUtils.isNotEmpty( listIdUser ) )
1254 {
1255 StringBuilder sbSQL = new StringBuilder( );
1256 sbSQL.append( SQL_QUERY_UPDATE_STATUS );
1257
1258 for ( int i = 0; i < listIdUser.size( ); i++ )
1259 {
1260 if ( i > 0 )
1261 {
1262 sbSQL.append( CONSTANT_COMMA );
1263 }
1264
1265 sbSQL.append( listIdUser.get( i ) );
1266 }
1267
1268 sbSQL.append( CONSTANT_CLOSE_PARENTHESIS );
1269
1270 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( sbSQL.toString( ) ) )
1271 {
1272 daoUtil.setInt( 1, nNewStatus );
1273 daoUtil.executeUpdate( );
1274 }
1275 }
1276 }
1277
1278
1279
1280
1281 @Override
1282 public void updateNbAlert( List<Integer> listIdUser )
1283 {
1284 if ( CollectionUtils.isNotEmpty( listIdUser ) )
1285 {
1286 StringBuilder sbSQL = new StringBuilder( );
1287 sbSQL.append( SQL_QUERY_UPDATE_NB_ALERT );
1288
1289 for ( int i = 0; i < listIdUser.size( ); i++ )
1290 {
1291 if ( i > 0 )
1292 {
1293 sbSQL.append( CONSTANT_COMMA );
1294 }
1295
1296 sbSQL.append( listIdUser.get( i ) );
1297 }
1298
1299 sbSQL.append( CONSTANT_CLOSE_PARENTHESIS );
1300
1301 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( sbSQL.toString( ) ) )
1302 {
1303 daoUtil.executeUpdate( );
1304 }
1305 }
1306 }
1307
1308
1309
1310
1311 @Override
1312 public void updateChangePassword( List<Integer> listIdUser )
1313 {
1314 if ( CollectionUtils.isNotEmpty( listIdUser ) )
1315 {
1316 StringBuilder sbSQL = new StringBuilder( );
1317 sbSQL.append( SQL_QUERY_UPDATE_RESET_PASSWORD_LIST_ID );
1318
1319 for ( int i = 0; i < listIdUser.size( ); i++ )
1320 {
1321 if ( i > 0 )
1322 {
1323 sbSQL.append( CONSTANT_COMMA );
1324 }
1325
1326 sbSQL.append( listIdUser.get( i ) );
1327 }
1328
1329 sbSQL.append( CONSTANT_CLOSE_PARENTHESIS );
1330
1331 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( sbSQL.toString( ) ) )
1332 {
1333 daoUtil.executeUpdate( );
1334 }
1335 }
1336 }
1337
1338
1339
1340
1341 @Override
1342 public void updateUserExpirationDate( int nIdUser, Timestamp newExpirationDate )
1343 {
1344 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE_REACTIVATE_ACCOUNT ) )
1345 {
1346
1347 if ( newExpirationDate == null )
1348 {
1349 daoUtil.setLongNull( 1 );
1350 }
1351 else
1352 {
1353 daoUtil.setLong( 1, newExpirationDate.getTime( ) );
1354 }
1355
1356 daoUtil.setInt( 2, nIdUser );
1357
1358 daoUtil.executeUpdate( );
1359 }
1360 }
1361
1362
1363
1364
1365 @Override
1366 public void updateDateLastLogin( int nIdUser, Timestamp dateLastLogin )
1367 {
1368 try ( DAOUtil/DAOUtil.html#DAOUtil">DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE_DATE_LAST_LOGIN ) )
1369 {
1370 daoUtil.setTimestamp( 1, dateLastLogin );
1371 daoUtil.setInt( 2, nIdUser );
1372 daoUtil.executeUpdate( );
1373 }
1374 }
1375
1376
1377 }