mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-13 00:48:49 +00:00
80 lines
2.9 KiB
Java
80 lines
2.9 KiB
Java
package com.imprimelibros.erp.login;
|
|
|
|
import java.util.Locale;
|
|
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.validation.BindingResult;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
import org.springframework.context.MessageSource;
|
|
|
|
import com.imprimelibros.erp.login.dto.SignupForm;
|
|
|
|
import jakarta.validation.Valid;
|
|
|
|
@Controller
|
|
public class LoginController {
|
|
|
|
private final SignupService signupService;
|
|
private final MessageSource messageSource;
|
|
|
|
public LoginController(SignupService signupService, MessageSource messageSource) {
|
|
this.signupService = signupService;
|
|
this.messageSource = messageSource;
|
|
}
|
|
|
|
@GetMapping("/login")
|
|
public String index(Model model, Locale locale) {
|
|
model.addAttribute("form", "_login");
|
|
return "imprimelibros/login/login";
|
|
}
|
|
|
|
@GetMapping("/signup")
|
|
public String signup(Model model, Locale locale) {
|
|
if (!model.containsAttribute("signupForm")) {
|
|
model.addAttribute("signupForm", new SignupForm());
|
|
}
|
|
model.addAttribute("form", "_signup");
|
|
return "imprimelibros/login/login";
|
|
}
|
|
|
|
@PostMapping("/signup")
|
|
public String doSignup(@Valid @ModelAttribute("signupForm") SignupForm form,
|
|
BindingResult br,
|
|
RedirectAttributes ra,
|
|
Locale locale) {
|
|
if (br.hasErrors()) {
|
|
ra.addFlashAttribute("org.springframework.validation.BindingResult.signupForm", br);
|
|
ra.addFlashAttribute("signupForm", form);
|
|
ra.addFlashAttribute("signup_error",
|
|
messageSource.getMessage("login.signup.error.review", null, locale));
|
|
return "redirect:/signup";
|
|
}
|
|
try {
|
|
signupService.register(form, locale);
|
|
ra.addFlashAttribute("info", messageSource.getMessage("login.signup.success", null, locale));
|
|
return "redirect:/login";
|
|
} catch (IllegalArgumentException ex) {
|
|
ra.addFlashAttribute("signup_error", ex.getMessage());
|
|
ra.addFlashAttribute("signupForm", form);
|
|
return "redirect:/signup";
|
|
}
|
|
}
|
|
|
|
@GetMapping("/verify")
|
|
public String verify(@RequestParam("token") String token, RedirectAttributes ra, Locale locale) {
|
|
boolean ok = signupService.verify(token);
|
|
if (ok) {
|
|
ra.addFlashAttribute("info", messageSource.getMessage("login.signup.success.verified", null, locale));
|
|
} else {
|
|
ra.addFlashAttribute("danger", messageSource.getMessage("login.signup.error.token.invalid", null, locale));
|
|
}
|
|
return "redirect:/login";
|
|
}
|
|
|
|
}
|