package org.podcastpedia.web.user;
import org.apache.log4j.Logger;
import org.podcastpedia.common.domain.User;
import org.podcastpedia.core.searching.SearchData;
import org.podcastpedia.core.user.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
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 javax.servlet.http.HttpServletRequest;
@Controller
@RequestMapping("/login")
public class CustomLoginController {
@Autowired
UserService userService;
protected static Logger LOG = Logger.getLogger(CustomLoginController.class);
/**
* Add an empty searchData object to the model
*/
@ModelAttribute
public void addDataToModel(ModelMap model){
SearchData dataForSearchBar = new SearchData();
dataForSearchBar.setSearchMode("natural");
dataForSearchBar.setCurrentPage(1);
dataForSearchBar.setQueryText(null);
dataForSearchBar.setNumberResultsPerPage(10);
model.put("advancedSearchData", dataForSearchBar);
}
//@RequestMapping(method=RequestMethod.GET)
public String prepareUserRegistrationForm(
@ModelAttribute("userRegistration") User user,
Model model){
LOG.debug("------ prepareUserRegistrationForm : Received request to show user registration form -----");
user = new User();
model.addAttribute("userRegistration", user);
return "user_registration_def";
}
//Spring Security see this :
@RequestMapping(value = "custom_login", method = RequestMethod.GET)
public String login(HttpServletRequest request,
@RequestParam(value = "error", required = false) String error,
@RequestParam(value = "logout", required = false) String logout,
@RequestParam(value = "isConfirmedEmail", required = false) boolean isConfirmedEmail,
@RequestParam(value = "isConfirmedEmailPasswordReset", required = false) boolean isConfirmedEmailPasswordReset,
@ModelAttribute("userRegistration") User user,
Model model) {
String referrer = request.getHeader("Referer");
request.getSession().setAttribute("url_prior_login", referrer);
user = new User();
model.addAttribute("userRegistration", user);
if (error != null) {
//hack TODO - make the verification more granular - unknown email or wrong password
/*
if(!userService.isExistingUser(username)){//where to get the useranme from
model.addAttribute("emailNotRegistered", "This email is not registered");
} else {
//the password must be incorrect
model.addAttribute("wrongPassword", "The password you provided is not right");
}
*/
model.addAttribute("error", "Invalid username and password!");
}
if (logout != null) {
model.addAttribute("msg", "You've been logged out successfully.");
}
if (isConfirmedEmail) {
model.addAttribute("isConfirmedEmail", isConfirmedEmail);
}
if (isConfirmedEmailPasswordReset) {
model.addAttribute("isConfirmedEmailPasswordReset", isConfirmedEmailPasswordReset);
}
return "login_def";
}
}