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.crm.modules.mylutecedirectory.service;
35
36 import fr.paris.lutece.plugins.crm.modules.mylutece.service.IMyLuteceUserService;
37 import fr.paris.lutece.plugins.mylutece.modules.directory.authentication.business.MyluteceDirectoryUser;
38 import fr.paris.lutece.plugins.mylutece.modules.directory.authentication.business.MyluteceDirectoryUserHome;
39 import fr.paris.lutece.plugins.mylutece.modules.directory.authentication.service.IMyluteceDirectoryService;
40 import fr.paris.lutece.plugins.mylutece.modules.directory.authentication.service.MyluteceDirectoryAnonymizationService;
41 import fr.paris.lutece.plugins.mylutece.modules.directory.authentication.service.MyluteceDirectoryPlugin;
42 import fr.paris.lutece.plugins.mylutece.modules.directory.authentication.service.parameter.IMyluteceDirectoryParameterService;
43 import fr.paris.lutece.plugins.mylutece.service.IAnonymizationService;
44 import fr.paris.lutece.plugins.mylutece.service.attribute.MyLuteceUserFieldService;
45 import fr.paris.lutece.plugins.mylutece.util.SecurityUtils;
46 import fr.paris.lutece.portal.service.admin.AdminAuthenticationService;
47 import fr.paris.lutece.portal.service.i18n.I18nService;
48 import fr.paris.lutece.portal.service.mail.MailService;
49 import fr.paris.lutece.portal.service.plugin.Plugin;
50 import fr.paris.lutece.portal.service.plugin.PluginService;
51 import fr.paris.lutece.portal.service.template.AppTemplateService;
52 import fr.paris.lutece.portal.service.util.AppPathService;
53 import fr.paris.lutece.portal.service.util.AppPropertiesService;
54 import fr.paris.lutece.util.html.HtmlTemplate;
55 import fr.paris.lutece.util.password.PasswordUtil;
56
57 import java.util.Collection;
58 import java.util.HashMap;
59 import java.util.List;
60 import java.util.Locale;
61 import java.util.Map;
62
63 import javax.inject.Inject;
64 import javax.inject.Named;
65
66 import javax.servlet.http.HttpServletRequest;
67
68
69
70
71
72
73
74 public class MyLuteceDirectoryUserService implements IMyLuteceUserService<Collection<MyluteceDirectoryUser>>
75 {
76
77 private static final String PROPERTY_NO_REPLY_EMAIL = "mail.noreply.email";
78 private static final String PROPERTY_MESSAGE_EMAIL_SUBJECT = "module.mylutece.directory.forgot_password.email.subject";
79
80
81 private static final String MARK_NEW_PASSWORD = "new_password";
82 private static final String MARK_LOGIN_URL = "login_url";
83
84
85 private static final String TEMPLATE_EMAIL_FORGOT_PASSWORD = "admin/plugins/mylutece/modules/directory/email_forgot_password.html";
86 @Inject
87 private IMyluteceDirectoryService _myluteceDirectoryService;
88 @Inject
89 private IMyluteceDirectoryParameterService _parameterService;
90 @Inject
91 @Named( MyluteceDirectoryAnonymizationService.BEAN_SERVICE )
92 private IAnonymizationService _anonymizationService;
93
94
95
96
97 @Override
98 public Collection<MyluteceDirectoryUser> getMyLuteceUserByUserGuid( String strUserGuid )
99 {
100 return _myluteceDirectoryService.getMyluteceDirectoryUsersForLogin( strUserGuid,
101 PluginService.getPlugin( MyluteceDirectoryPlugin.PLUGIN_NAME ) );
102 }
103
104
105
106
107 @Override
108 public void doRemoveMyLuteceUser( Collection<MyluteceDirectoryUser> listMyLuteceUsers, HttpServletRequest request,
109 Locale locale )
110 {
111 if ( ( listMyLuteceUsers != null ) && !listMyLuteceUsers.isEmpty( ) )
112 {
113 for ( MyluteceDirectoryUser user : listMyLuteceUsers )
114 {
115 _myluteceDirectoryService.doRemoveMyluteceDirectoryUser( user,
116 PluginService.getPlugin( MyluteceDirectoryPlugin.PLUGIN_NAME ), true );
117 MyLuteceUserFieldService.doRemoveUserFields( user.getIdRecord( ), request, locale );
118 }
119 }
120 }
121
122
123
124
125 @Override
126 public void doAnonymizeMyLuteceUser( Collection<MyluteceDirectoryUser> listMyLuteceUsers,
127 HttpServletRequest request, Locale locale )
128 {
129 if ( ( listMyLuteceUsers != null ) && !listMyLuteceUsers.isEmpty( ) )
130 {
131 for ( MyluteceDirectoryUser user : listMyLuteceUsers )
132 {
133 _anonymizationService.anonymizeUser( user.getIdRecord( ), locale );
134 }
135 }
136 }
137
138
139
140
141 @Override
142 public void doReinitPassword( Collection<MyluteceDirectoryUser> listMyLuteceUsers, HttpServletRequest request,
143 Locale locale )
144 {
145 if ( ( listMyLuteceUsers != null ) && !listMyLuteceUsers.isEmpty( ) )
146 {
147 Plugin plugin = PluginService.getPlugin( MyluteceDirectoryPlugin.PLUGIN_NAME );
148
149 for ( MyluteceDirectoryUser user : listMyLuteceUsers )
150 {
151
152 String strPassword = PasswordUtil.makePassword( );
153
154 MyluteceDirectoryUser userStored = _myluteceDirectoryService.getMyluteceDirectoryUser( user.getIdRecord( ),
155 plugin );
156 userStored.setPasswordMaxValidDate( SecurityUtils.getPasswordMaxValidDate( _parameterService, plugin ) );
157 strPassword = SecurityUtils.buildPassword( _parameterService, plugin, strPassword );
158 MyluteceDirectoryUserHome.updatePassword( userStored, strPassword, plugin );
159
160 List<String> listEmails = _myluteceDirectoryService.getListEmails( userStored, plugin, locale );
161
162 if ( ( listEmails != null ) && !listEmails.isEmpty( ) )
163 {
164
165 String strSenderEmail = AppPropertiesService.getProperty( PROPERTY_NO_REPLY_EMAIL );
166 String strEmailSubject = I18nService.getLocalizedString( PROPERTY_MESSAGE_EMAIL_SUBJECT, locale );
167 Map<String, Object> model = new HashMap<String, Object>( );
168 model.put( MARK_NEW_PASSWORD, strPassword );
169 model.put( MARK_LOGIN_URL,
170 AppPathService.getBaseUrl( request ) +
171 AdminAuthenticationService.getInstance( ).getLoginPageUrl( ) );
172
173 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_EMAIL_FORGOT_PASSWORD, locale,
174 model );
175
176 for ( String email : listEmails )
177 {
178 MailService.sendMailHtml( email, strSenderEmail, strSenderEmail, strEmailSubject,
179 template.getHtml( ) );
180 }
181 }
182 }
183 }
184 }
185 }