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.mylutece.modules.database.authentication.service;
35
36 import fr.paris.lutece.plugins.mylutece.modules.database.authentication.business.DatabaseUser;
37 import fr.paris.lutece.plugins.mylutece.modules.database.authentication.business.DatabaseUserHome;
38 import fr.paris.lutece.plugins.mylutece.service.IAccountLifeTimeService;
39 import fr.paris.lutece.portal.service.plugin.Plugin;
40 import fr.paris.lutece.portal.service.plugin.PluginService;
41 import fr.paris.lutece.portal.service.spring.SpringContextService;
42 import fr.paris.lutece.portal.service.template.DatabaseTemplateService;
43 import fr.paris.lutece.portal.service.util.AppPathService;
44 import fr.paris.lutece.portal.service.util.AppPropertiesService;
45 import fr.paris.lutece.portal.service.util.CryptoService;
46
47 import java.sql.Timestamp;
48
49 import java.text.DateFormat;
50
51 import java.util.Date;
52 import java.util.List;
53 import java.util.Locale;
54 import java.util.Map;
55
56
57
58
59
60 public class DatabaseAccountLifeTimeService implements IAccountLifeTimeService
61 {
62 public static final String BEAN_DATABASE_ACCOUNT_LIFE_TIME_SERVICE = "mylutece-database.databaseAccountLifeTimeService";
63 private static final String PARAMETER_MYLUTECE_DATABASE_EXPIRATION_MAIL = "mylutece_database_expiration_mail";
64 private static final String PARAMETER_MYLUTECE_DATABASE_FIRST_ALERT_MAIL = "mylutece_database_first_alert_mail";
65 private static final String PARAMETER_MYLUTECE_DATABASE_OTHER_ALERT_MAIL = "mylutece_database_other_alert_mail";
66 private static final String PARAMETER_NOTIFY_PASSWORD_EXPIRED = "mylutece_database_password_expired";
67 private static final String MARK_LAST_NAME = "last_name";
68 private static final String MARK_FIRST_NAME = "first_name";
69 private static final String MARK_DATE_VALID = "date_valid";
70 private static final String MARK_URL = "url";
71 private static final String MARK_USER_ID = "user_id";
72 private static final String MARK_REF = "ref";
73 private static final String PROPERTY_ACCOUNT_REF_ENCRYPT_ALGO = "mylutece-database.account_life_time.refEncryptionAlgorythm";
74 private static final String JSP_URL_REACTIVATE_ACCOUNT = "/jsp/site/Portal.jsp?page=mylutecedatabase&action=reactivateAccount";
75 private static final String CONSTANT_AND = "&";
76 private static final String CONSTANT_EQUAL = "=";
77 private Plugin _plugin = PluginService.getPlugin( DatabasePlugin.PLUGIN_NAME );
78
79
80
81
82
83
84 public static DatabaseAccountLifeTimeService getService( )
85 {
86 return SpringContextService.getBean( BEAN_DATABASE_ACCOUNT_LIFE_TIME_SERVICE );
87 }
88
89
90
91
92 @Override
93 public Plugin getPlugin( )
94 {
95 return _plugin;
96 }
97
98
99
100
101 @Override
102 public List<Integer> getIdUsersWithExpiredLifeTimeList( Timestamp currentTimestamp )
103 {
104 return DatabaseUserHome.getIdUsersWithExpiredLifeTimeList( currentTimestamp, _plugin );
105 }
106
107
108
109
110 @Override
111 public List<Integer> getIdUsersToSendFirstAlert( Timestamp alertMaxDate )
112 {
113 return DatabaseUserHome.getIdUsersToSendFirstAlert( alertMaxDate, _plugin );
114 }
115
116
117
118
119 @Override
120 public List<Integer> getIdUsersToSendOtherAlert( Timestamp alertMaxDate, Timestamp timeBetweenAlerts, int maxNumberAlerts )
121 {
122 return DatabaseUserHome.getIdUsersToSendOtherAlert( alertMaxDate, timeBetweenAlerts, maxNumberAlerts, _plugin );
123 }
124
125
126
127
128 @Override
129 public void updateNbAlert( List<Integer> listIdUser )
130 {
131 DatabaseUserHome.updateNbAlert( listIdUser, _plugin );
132 }
133
134
135
136
137 @Override
138 public void updateChangePassword( List<Integer> listIdUser )
139 {
140 DatabaseUserHome.updateChangePassword( listIdUser, _plugin );
141 }
142
143
144
145
146 @Override
147 public void setUserStatusExpired( List<Integer> listIdUser )
148 {
149 DatabaseUserHome.updateUserStatus( listIdUser, DatabaseUser.STATUS_EXPIRED, _plugin );
150 }
151
152
153
154
155 @Override
156 public String getExpirationtMailBody( )
157 {
158 return DatabaseTemplateService.getTemplateFromKey( PARAMETER_MYLUTECE_DATABASE_EXPIRATION_MAIL );
159 }
160
161
162
163
164 @Override
165 public String getFirstAlertMailBody( )
166 {
167 return DatabaseTemplateService.getTemplateFromKey( PARAMETER_MYLUTECE_DATABASE_FIRST_ALERT_MAIL );
168 }
169
170
171
172
173 @Override
174 public String getOtherAlertMailBody( )
175 {
176 return DatabaseTemplateService.getTemplateFromKey( PARAMETER_MYLUTECE_DATABASE_OTHER_ALERT_MAIL );
177 }
178
179
180
181
182 @Override
183 public String getPasswordExpiredMailBody( )
184 {
185 return DatabaseTemplateService.getTemplateFromKey( PARAMETER_NOTIFY_PASSWORD_EXPIRED );
186 }
187
188
189
190
191 @Override
192 public void addParametersToModel( Map<String, String> model, Integer nIdUser )
193 {
194 DatabaseUser user = DatabaseUserHome.findByPrimaryKey( nIdUser, _plugin );
195 DateFormat dateFormat = DateFormat.getDateInstance( DateFormat.SHORT, Locale.getDefault( ) );
196
197 String accountMaxValidDate = dateFormat.format( new Date( user.getAccountMaxValidDate( ).getTime( ) ) );
198
199 StringBuilder sbUrl = new StringBuilder( );
200
201 sbUrl.append( AppPathService.getProdUrl( "" ) );
202 sbUrl.append( JSP_URL_REACTIVATE_ACCOUNT );
203 sbUrl.append( CONSTANT_AND );
204 sbUrl.append( MARK_USER_ID );
205 sbUrl.append( CONSTANT_EQUAL );
206 sbUrl.append( nIdUser.toString( ) );
207 sbUrl.append( CONSTANT_AND );
208 sbUrl.append( MARK_REF );
209 sbUrl.append( CONSTANT_EQUAL );
210 sbUrl.append( CryptoService.encrypt( Long.toString( user.getAccountMaxValidDate( ).getTime( ) ),
211 AppPropertiesService.getProperty( PROPERTY_ACCOUNT_REF_ENCRYPT_ALGO ) ) );
212
213 String activationURL = sbUrl.toString( );
214
215 model.put( MARK_DATE_VALID, accountMaxValidDate );
216 model.put( MARK_URL, activationURL );
217 model.put( MARK_LAST_NAME, user.getLastName( ) );
218 model.put( MARK_FIRST_NAME, user.getFirstName( ) );
219 }
220
221
222
223
224 @Override
225 public String getUserMainEmail( int nIdUser )
226 {
227 DatabaseUser user = DatabaseUserHome.findByPrimaryKey( nIdUser, _plugin );
228
229 return user.getEmail( );
230 }
231
232 @Override
233 public List<Integer> getIdUsersWithExpiredPasswordsList( Timestamp currentTimestamp )
234 {
235 return DatabaseUserHome.getIdUsersWithExpiredPasswordsList( currentTimestamp, _plugin );
236 }
237 }