Package net.baguajie.web.mvc.controllers

Source Code of net.baguajie.web.mvc.controllers.SignInController

package net.baguajie.web.mvc.controllers;

import java.util.Calendar;
import java.util.TimeZone;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;

import net.baguajie.constants.AjaxResultCode;
import net.baguajie.constants.ApplicationConstants;
import net.baguajie.constants.UserStatus;
import net.baguajie.domains.User;
import net.baguajie.domains.UserPreference;
import net.baguajie.exceptions.ResourceNotFoundException;
import net.baguajie.repositories.UserPreferenceRepository;
import net.baguajie.repositories.UserRepository;
import net.baguajie.vo.AjaxResult;
import net.baguajie.vo.SignInCredentialVo;
import net.baguajie.vo.ValidationEngineError;
import net.baguajie.web.utils.AjaxUtil;
import net.baguajie.web.utils.SessionUtil;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class SignInController {

  @Autowired
  UserRepository userPepository;
  @Autowired
  UserPreferenceRepository userPreferenceRepository;
  @Autowired
  SessionUtil sessionUtil;
  @Autowired
  AjaxUtil ajaxUtil;

  @RequestMapping(value = "/signin", method = RequestMethod.GET)
  public String signIn(HttpSession session) {
    if (session.getAttribute(ApplicationConstants.SESSION_SIGNIN_USER) != null) {
      return "redirect:/";
    }
    return "sign.in";
  }

  @RequestMapping(value = "/checksignin", method = RequestMethod.GET)
  public @ResponseBody
  AjaxResult checkSignIn(HttpServletRequest request, ModelAndView mav,
      HttpSession session) {
    if (!ajaxUtil.isAjaxRequest(request)) {
      throw new ResourceNotFoundException();
    }
    if (sessionUtil.getSignInUser(session) != null) {
      Calendar c = Calendar.getInstance();
      c.setTimeZone(TimeZone.getTimeZone("UTC"));
      return new AjaxResult(AjaxResultCode.SUCCESS, c.getTimeInMillis());
    } else {
      return new AjaxResult(AjaxResultCode.NEED_SIGNIN);
    }
  }

  @RequestMapping(value = "/signin/validate", method = RequestMethod.POST)
  public @ResponseBody
  Object[] validateSignIn(@Valid SignInCredentialVo signInCredentialVo,
      BindingResult result, Model model, HttpSession session) {
    User existed = null;
    if (!result.hasFieldErrors("signInName")) {
      existed = userPepository.getByEmail(signInCredentialVo
          .getSignInName());
      if (existed == null) {
        result.addError(new FieldError("signInCredentialVo",
            "signInName", "注册邮箱不存在"));
      } else {
        if (!signInCredentialVo.getSignInPassword().equals(
            existed.getPassword())) {
          result.addError(new FieldError("signInCredentialVo",
              "signInPassword", "密码不正确"));
        }
        if(existed.getStatus() == UserStatus.INVALID){
          result.addError(new FieldError("signInCredentialVo",
              "signInName", "账号暂时不能登陆"));
        }
      }
    }
    if (result.hasErrors()) {
      return ValidationEngineError.normalize(ValidationEngineError
          .from(result));
    }else{
      if (existed != null) {
        session.setAttribute(ApplicationConstants.SESSION_SIGNIN_USER,
            existed);
        UserPreference up = userPreferenceRepository.getByUser(existed);
        if (up != null) {
          sessionUtil.setSignInUserPrefer(up, session);
        }
      }
      return new ValidationEngineError[]{};
    }
  }

  @RequestMapping(value = "/signin", method = RequestMethod.POST)
  public String signIn(@Valid SignInCredentialVo signInCredentialVo,
      BindingResult result, Model model, HttpSession session) {
    User existed = null;
    if (!result.hasFieldErrors("signInName")) {
      existed = userPepository.getByEmail(signInCredentialVo
          .getSignInName());
      if (existed == null) {
        result.addError(new FieldError("signInCredentialVo",
            "signInName", "注册邮箱不存在"));
      } else {
        if (!signInCredentialVo.getSignInPassword().equals(
            existed.getPassword())) {
          result.addError(new FieldError("signInCredentialVo",
              "signInPassword", "密码不正确"));
        }
        if(existed.getStatus() == UserStatus.INVALID){
          result.addError(new FieldError("signInCredentialVo",
              "signInName", "账号暂时不能登陆"));
        }
      }
    }

    if (result.hasErrors()) {
      return "sign.in";
    }

    if (existed != null) {
      session.setAttribute(ApplicationConstants.SESSION_SIGNIN_USER,
          existed);
      UserPreference up = userPreferenceRepository.getByUser(existed);
      if (up != null) {
        sessionUtil.setSignInUserPrefer(up, session);
      }
    }

    return "redirect:/";
  }
}
TOP

Related Classes of net.baguajie.web.mvc.controllers.SignInController

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.