Package fr.ippon.tatami.web.controller

Source Code of fr.ippon.tatami.web.controller.HomeController

package fr.ippon.tatami.web.controller;

import fr.ippon.tatami.config.Constants;
import fr.ippon.tatami.domain.User;
import fr.ippon.tatami.security.AuthenticationService;
import fr.ippon.tatami.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.env.Environment;
import org.springframework.security.crypto.password.StandardPasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.inject.Inject;

/**
* @author Julien Dubois
*/
@Controller
public class HomeController {

    private final Logger log = LoggerFactory.getLogger(HomeController.class);

    @Inject
    private UserService userService;

    @Inject
    private AuthenticationService authenticationService;

    @Inject
    private Environment env;

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public ModelAndView login(@RequestParam(required = false) String action) {
        ModelAndView mv = new ModelAndView("login");
        mv.addObject("action", action);
        return mv;
    }

    @RequestMapping(value = {"/", "/home/**", "/home", "/home/"}, method = RequestMethod.GET)
    public ModelAndView home(@RequestParam(required = false) String ios) {
        ModelAndView mv = new ModelAndView("home");
        User currentUser = authenticationService.getCurrentUser();
        mv.addObject("user", currentUser);
        if (ios == null) {
            mv.addObject("ios", false);
        } else {
            mv.addObject("ios", true);
        }
        return mv;
    }

    @RequestMapping(value = "/register", method = RequestMethod.POST)
    public String register(@RequestParam String email) {
        email = email.toLowerCase();
        if (userService.getUserByLogin(email) != null) {
            return "redirect:/tatami/login?action=registerFailure";
        }
        User user = new User();
        user.setLogin(email);
        userService.registerUser(user);
        return "redirect:/tatami/login?action=register";
    }

    @RequestMapping(value = "/register", method = RequestMethod.GET)
    public ModelAndView validateRegistration(@RequestParam String key) {
        ModelAndView mv = new ModelAndView("register");
        String login = userService.validateRegistration(key);
        mv.addObject("login", login);
        return mv;
    }

    @RequestMapping(value = "/register/automatic", method = RequestMethod.POST)
    public String automaticRegistration(@RequestParam String email, @RequestParam String password) {
        String enabled = env.getProperty("tatami.automatic.registration");
        if (enabled != null && !enabled.equals("true")) {
            log.warn("Automatic registration should not have been called.");
            return "redirect:/tatami/login";
        }
        if (email == null || email.equals("")) {
            return "redirect:/tatami/login";
        }
        email = email.toLowerCase();
        if (userService.getUserByLogin(email) != null) {
            log.debug("User {} already exists.", email);
            return "redirect:/tatami/login";
        }
        if (email.equals(Constants.TATAMIBOT_NAME)) {
            log.debug("E-mail {} can only be used by the Tatami Bot.", email);
            return "redirect:/tatami/login";
        }
        log.debug("Creating user {}", email);
        User user = new User();
        user.setLogin(email);
        StandardPasswordEncoder encoder = new StandardPasswordEncoder();
        String encryptedPassword = encoder.encode(password);
        user.setPassword(encryptedPassword);
        userService.createUser(user);
        return "redirect:/tatami/login";
    }

    @RequestMapping(value = "/lostpassword", method = RequestMethod.POST)
    public String lostPassword(@RequestParam String email) {
        email = email.toLowerCase();
        User user = userService.getUserByLogin(email);
        if (user == null) {
            return "redirect:/tatami/login?action=lostPasswordFailure";
        }
        if (userService.isDomainHandledByLDAP(user.getDomain())) {
            return "redirect:/tatami/login?action=ldapPasswordFailure";
        }
        userService.lostPassword(user);
        return "redirect:/tatami/login?action=lostPassword";
    }


    @RequestMapping(value = "/tos", method = RequestMethod.GET)
    public String termsOfService() {
        return "terms_of_service";
    }

    @RequestMapping(value = "/presentation", method = RequestMethod.GET)
    public String presentation() {
        return "presentation";
    }

    @RequestMapping(value = "/license", method = RequestMethod.GET)
    public String license() {
        return "license";
    }

    /**
     * This maps any GET request to /tatami/customization/[subpath]
     * to the jsp named /customization/[subpath].jsp.
     * <p/>
     * It allows adding easily new pages with tatamiCustomization
     */
    @RequestMapping(value = "/customization/{subPath}", method = RequestMethod.GET)
    public String anyOtherSubPath(@PathVariable String subPath) {
        return "/customization/" + subPath;
    }
}
TOP

Related Classes of fr.ippon.tatami.web.controller.HomeController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.