LoginCtl.java

package com.sunilos.proj0.ctl;

import java.util.Locale;

import javax.servlet.http.HttpSession;

import javax.validation.Valid;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.MessageSource;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.validation.BindingResult;

import org.springframework.web.bind.annotation.ModelAttribute;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import com.sunilos.proj0.dto.RoleDTO;

import com.sunilos.proj0.dto.UserDTO;

import com.sunilos.proj0.exception.ApplicationException;

import com.sunilos.proj0.form.ForgetPasswordForm;

import com.sunilos.proj0.form.LoginForm;

import com.sunilos.proj0.form.UserRegistrationForm;

import com.sunilos.proj0.service.UserServiceInt;

/**

* Contains navigation logics for Login, Forgot Password and SignUp Usecases.

*

* @author SunilOS

* @version 1.0

* @Copyright (c) SunilOS

*/

@Controller

public class LoginCtl extends BaseCtl {

private static Logger log = Logger.getLogger(LoginCtl.class);

/**

* Operations

*/

protected static final String OP_SIGNIN = "SignIn";

protected static final String OP_SIGNUP = "SignUp";

@Autowired

private UserServiceInt service;

/**

* i18n Message source

*/

@Autowired

private MessageSource messageSource;

/**

* Displays Login View.

*

* @param form

* @param session

* @param model

* @return

*/

@RequestMapping(value = "/Login", method = RequestMethod.GET)

public String display(@ModelAttribute("form") LoginForm form,

HttpSession session, Model model) {

log.debug("Login Submit Started");

session.invalidate();

return "Login";

}

/**

* Submits Login data.

*

* @param form

* @param bindingResult

* @param session

* @return

*/

@RequestMapping(value = "/Login", method = { RequestMethod.POST })

public String submit(Locale locale,

@ModelAttribute("form") @Valid LoginForm form,

BindingResult bindingResult, HttpSession session, Model model) {

log.debug("Login Submit Started");

System.out.println("result Fail :" + bindingResult.hasErrors());

if (bindingResult.hasErrors()) {

return "Login";

}

if (OP_SIGNIN.equalsIgnoreCase(form.getOperation())) {

UserDTO dto = new UserDTO();

dto.setLogin(form.getEmailId());

dto.setPassword(form.getPassword());

dto = service.authenticate(dto);

if (dto != null) {

session.setAttribute("user", dto);

model.addAttribute("message", "Welcome :" + form.getEmailId());

return "redirect:/Welcome";

} else {

// Get error messages for message respurce

String msg = messageSource.getMessage("login.error", null,

locale);

model.addAttribute("error", msg);

}

}

log.debug("Login Submit End");

return "Login";

}

/**

* Displays ForgetPAssword View

*

* @param form

* @param model

* @return

*/

@RequestMapping(value = "/ForgetPassword", method = RequestMethod.GET)

public String display(@ModelAttribute("form") ForgetPasswordForm form,

Model model) {

return "ForgetPassword";

}

/**

* Submits ForgetPassword data.

*

* @param locale

* @param form

* @param bindingResult

* @param model

* @return

*/

@RequestMapping(value = "/ForgetPassword", method = RequestMethod.POST)

public String submit(Locale locale,

@ModelAttribute("form") @Valid ForgetPasswordForm form,

BindingResult bindingResult, Model model) {

if (bindingResult.hasErrors()) {

return "ForgetPassword";

}

UserDTO dto = service.findByLogin(form.getLogin());

if (dto == null) {

String msg = messageSource.getMessage("forgetpass.error", null,

locale);

model.addAttribute("error", msg);

}

try {

service.forgetPassword(form.getLogin());

model.addAttribute("success",

"Password has been sent to your registered Email ID!!");

} catch (ApplicationException e) {

log.error("Critical Issue ", e);

}

return "ForgetPassword";

}

/**

* Displays SignUp view

*

* @param form

* @param model

* @return

*/

@RequestMapping(value = "/SignUp", method = RequestMethod.GET)

public String display(@ModelAttribute("form") UserRegistrationForm form,

Model model) {

return "UserRegistration";

}

/**

* Submits SignUp data

*

* @param locale

* @param form

* @param bindingResult

* @param model

* @return

*/

@RequestMapping(value = "/SignUp", method = RequestMethod.POST)

public String submit(Locale locale,

@ModelAttribute("form") @Valid UserRegistrationForm form,

BindingResult bindingResult, Model model) {

if (bindingResult.hasErrors()) {

return "UserRegistration";

}

UserDTO dto = (UserDTO) form.getDto();

// Default Role is Student

dto.setRoleId(RoleDTO.STUDENT);

service.registerUser(dto);

return "redirect:Login";

}

}