1414import org .baeldung .persistence .service .UserDto ;
1515import org .baeldung .registration .OnRegistrationCompleteEvent ;
1616import org .baeldung .validation .EmailExistsException ;
17- import org .baeldung .web .error .UserNotFoundException ;
18- import org .baeldung .web .util .GenericResponse ;
1917import org .slf4j .Logger ;
2018import org .slf4j .LoggerFactory ;
2119import org .springframework .beans .factory .annotation .Autowired ;
2220import org .springframework .context .ApplicationEventPublisher ;
2321import org .springframework .context .MessageSource ;
2422import org .springframework .core .env .Environment ;
23+ import org .springframework .mail .MailAuthenticationException ;
2524import org .springframework .mail .SimpleMailMessage ;
2625import org .springframework .mail .javamail .JavaMailSender ;
2726import org .springframework .security .access .prepost .PreAuthorize ;
3736import org .springframework .web .bind .annotation .RequestMapping ;
3837import org .springframework .web .bind .annotation .RequestMethod ;
3938import org .springframework .web .bind .annotation .RequestParam ;
40- import org .springframework .web .bind .annotation .ResponseBody ;
4139import org .springframework .web .servlet .ModelAndView ;
4240
4341@ Controller
44- public class Registration2Controller {
42+ @ RequestMapping (value = "/old" )
43+ public class OldRegistrationController {
4544 private final Logger LOGGER = LoggerFactory .getLogger (getClass ());
4645
4746 @ Autowired
@@ -62,21 +61,21 @@ public class Registration2Controller {
6261 @ Autowired
6362 private Environment env ;
6463
65- public Registration2Controller () {
64+ public OldRegistrationController () {
6665
6766 }
6867
6968 // API
7069
71- @ RequestMapping (value = "/user/registration2 " , method = RequestMethod .GET )
70+ @ RequestMapping (value = "/user/registration " , method = RequestMethod .GET )
7271 public String showRegistrationForm (final HttpServletRequest request , final Model model ) {
7372 LOGGER .debug ("Rendering registration page." );
7473 final UserDto accountDto = new UserDto ();
7574 model .addAttribute ("user" , accountDto );
7675 return "registration" ;
7776 }
7877
79- @ RequestMapping (value = "/regitrationConfirm2 " , method = RequestMethod .GET )
78+ @ RequestMapping (value = "/regitrationConfirm " , method = RequestMethod .GET )
8079 public String confirmRegistration (final HttpServletRequest request , final Model model , @ RequestParam ("token" ) final String token ) {
8180 final Locale locale = request .getLocale ();
8281
@@ -102,7 +101,7 @@ public String confirmRegistration(final HttpServletRequest request, final Model
102101 return "redirect:/login.html?lang=" + locale .getLanguage ();
103102 }
104103
105- @ RequestMapping (value = "/user/registration2 " , method = RequestMethod .POST )
104+ @ RequestMapping (value = "/user/registration " , method = RequestMethod .POST )
106105 public ModelAndView registerUserAccount (@ ModelAttribute ("user" ) @ Valid final UserDto accountDto , final BindingResult result , final HttpServletRequest request , final Errors errors ) {
107106 LOGGER .debug ("Registering user account with information: {}" , accountDto );
108107 if (result .hasErrors ()) {
@@ -124,34 +123,54 @@ public ModelAndView registerUserAccount(@ModelAttribute("user") @Valid final Use
124123 return new ModelAndView ("successRegister" , "user" , accountDto );
125124 }
126125
127- @ RequestMapping (value = "/user/resendRegistrationToken2" , method = RequestMethod .GET )
128- public @ ResponseBody GenericResponse resendRegistrationToken2 (final HttpServletRequest request , @ RequestParam ("token" ) final String existingToken ) {
126+ @ RequestMapping (value = "/user/resendRegistrationToken" , method = RequestMethod .GET )
127+ public String resendRegistrationToken (final HttpServletRequest request , final Model model , @ RequestParam ("token" ) final String existingToken ) {
128+ final Locale locale = request .getLocale ();
129129 final VerificationToken newToken = userService .generateNewVerificationToken (existingToken );
130130 final User user = userService .getUser (newToken .getToken ());
131- final String appUrl = "http://" + request .getServerName () + ":" + request .getServerPort () + request .getContextPath ();
132- final SimpleMailMessage email = constructResetVerificationTokenEmail (appUrl , request .getLocale (), newToken , user );
133- mailSender .send (email );
134- return new GenericResponse (messages .getMessage ("message.resendToken" , null , request .getLocale ()));
131+ try {
132+ final String appUrl = "http://" + request .getServerName () + ":" + request .getServerPort () + request .getContextPath ();
133+ final SimpleMailMessage email = constructResetVerificationTokenEmail (appUrl , request .getLocale (), newToken , user );
134+ mailSender .send (email );
135+ } catch (final MailAuthenticationException e ) {
136+ LOGGER .debug ("MailAuthenticationException" , e );
137+ return "redirect:/emailError.html?lang=" + locale .getLanguage ();
138+ } catch (final Exception e ) {
139+ LOGGER .debug (e .getLocalizedMessage (), e );
140+ model .addAttribute ("message" , e .getLocalizedMessage ());
141+ return "redirect:/login.html?lang=" + locale .getLanguage ();
142+ }
143+ model .addAttribute ("message" , messages .getMessage ("message.resendToken" , null , locale ));
144+ return "redirect:/login.html?lang=" + locale .getLanguage ();
135145 }
136146
137- @ RequestMapping (value = "/user/resetPassword2 " , method = RequestMethod .POST )
138- public @ ResponseBody GenericResponse resetPassword2 (final HttpServletRequest request , @ RequestParam ("email" ) final String userEmail ) {
147+ @ RequestMapping (value = "/user/resetPassword " , method = RequestMethod .POST )
148+ public String resetPassword (final HttpServletRequest request , final Model model , @ RequestParam ("email" ) final String userEmail ) {
139149 final User user = userService .findUserByEmail (userEmail );
140150 if (user == null ) {
141- throw new UserNotFoundException ();
151+ model .addAttribute ("message" , messages .getMessage ("message.userNotFound" , null , request .getLocale ()));
152+ return "redirect:/login.html?lang=" + request .getLocale ().getLanguage ();
142153 }
143154
144155 final String token = UUID .randomUUID ().toString ();
145156 userService .createPasswordResetTokenForUser (user , token );
146- final String appUrl = "http://" + request .getServerName () + ":" + request .getServerPort () + request .getContextPath ();
147- final SimpleMailMessage email = constructResetTokenEmail (appUrl , request .getLocale (), token , user );
148- mailSender .send (email );
149-
150- return new GenericResponse (messages .getMessage ("message.resetPasswordEmail" , null , request .getLocale ()));
157+ try {
158+ final String appUrl = "http://" + request .getServerName () + ":" + request .getServerPort () + request .getContextPath ();
159+ final SimpleMailMessage email = constructResetTokenEmail (appUrl , request .getLocale (), token , user );
160+ mailSender .send (email );
161+ } catch (final MailAuthenticationException e ) {
162+ LOGGER .debug ("MailAuthenticationException" , e );
163+ return "redirect:/emailError.html?lang=" + request .getLocale ().getLanguage ();
164+ } catch (final Exception e ) {
165+ LOGGER .debug (e .getLocalizedMessage (), e );
166+ model .addAttribute ("message" , e .getLocalizedMessage ());
167+ return "redirect:/login.html?lang=" + request .getLocale ().getLanguage ();
168+ }
169+ model .addAttribute ("message" , messages .getMessage ("message.resetPasswordEmail" , null , request .getLocale ()));
170+ return "redirect:/login.html?lang=" + request .getLocale ().getLanguage ();
151171 }
152172
153- // ==== will not be changed this is used as the confirmation url of reset password token
154- @ RequestMapping (value = "/user/changePassword2" , method = RequestMethod .GET )
173+ @ RequestMapping (value = "/user/changePassword" , method = RequestMethod .GET )
155174 public String changePassword (final HttpServletRequest request , final Model model , @ RequestParam ("id" ) final long id , @ RequestParam ("token" ) final String token ) {
156175 final Locale locale = request .getLocale ();
157176
@@ -175,18 +194,21 @@ public String changePassword(final HttpServletRequest request, final Model model
175194 return "redirect:/updatePassword.html?lang=" + locale .getLanguage ();
176195 }
177196
178- @ RequestMapping (value = "/user/savePassword2 " , method = RequestMethod .POST )
197+ @ RequestMapping (value = "/user/savePassword " , method = RequestMethod .POST )
179198 @ PreAuthorize ("hasRole('READ_PRIVILEGE')" )
180- public @ ResponseBody GenericResponse savePassword (final HttpServletRequest request , @ RequestParam ("password" ) final String password ) {
199+ public String savePassword (final HttpServletRequest request , final Model model , @ RequestParam ("password" ) final String password ) {
200+ final Locale locale = request .getLocale ();
201+
181202 final User user = (User ) SecurityContextHolder .getContext ().getAuthentication ().getPrincipal ();
182203 userService .changeUserPassword (user , password );
183- return new GenericResponse (messages .getMessage ("message.resetPasswordSuc" , null , request .getLocale ()));
204+ model .addAttribute ("message" , messages .getMessage ("message.resetPasswordSuc" , null , locale ));
205+ return "redirect:/login.html?lang=" + locale ;
184206 }
185207
186208 // NON-API
187209
188210 private final SimpleMailMessage constructResetVerificationTokenEmail (final String contextPath , final Locale locale , final VerificationToken newToken , final User user ) {
189- final String confirmationUrl = contextPath + "/regitrationConfirm.html?token=" + newToken .getToken ();
211+ final String confirmationUrl = contextPath + "/old/ regitrationConfirm.html?token=" + newToken .getToken ();
190212 final String message = messages .getMessage ("message.resendToken" , null , locale );
191213 final SimpleMailMessage email = new SimpleMailMessage ();
192214 email .setSubject ("Resend Registration Token" );
@@ -197,7 +219,7 @@ private final SimpleMailMessage constructResetVerificationTokenEmail(final Strin
197219 }
198220
199221 private final SimpleMailMessage constructResetTokenEmail (final String contextPath , final Locale locale , final String token , final User user ) {
200- final String url = contextPath + "/user/changePassword2 ?id=" + user .getId () + "&token=" + token ;
222+ final String url = contextPath + "/old/ user/changePassword ?id=" + user .getId () + "&token=" + token ;
201223 final String message = messages .getMessage ("message.resetPassword" , null , locale );
202224 final SimpleMailMessage email = new SimpleMailMessage ();
203225 email .setTo (user .getEmail ());
0 commit comments