package cn.binux.sso.controller; import cn.binux.constant.Const; import cn.binux.notify.service.NotifyUserService; import cn.binux.pojo.TbUser; import cn.binux.pojo.XbinResult; import cn.binux.sso.service.UserService; import cn.binux.utils.CookieUtils; import com.alibaba.dubbo.config.annotation.Reference; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.UUID; /** * 用户登录注册 Controller * * @author xubin. * @create 2017-04-08 */ @Controller public class UserController { @Reference(version = Const.XBIN_STORE_SSO_VERSION) private UserService userService; @Reference(version = Const.XBIN_STORE_NOTIFY_VERSION) private NotifyUserService notifyUserService; @Value("${user_not_exist}") private String USER_NOT_EXIST; @Value("${password_error}") private String PASSWORD_ERROR; @Value("${portal_path}") private String PORTAL_PATH; /** * 显示注册页面 * @param model * @param ReturnUrl 返回跳转URL * @return */ @RequestMapping(value = "/register",method = RequestMethod.GET) public String showRegister(Model model, String returnUrl) { model.addAttribute("uid", UUID.randomUUID().toString()); return "register"; } /** * 显示登录页面 * @param model * @param returnUrl 返回跳转URL * @return */ @RequestMapping(value = "/login",method = RequestMethod.GET) public String showLogin(Model model, String returnUrl) { model.addAttribute("returnUrl", returnUrl); return "login"; } /** * 显示注册成功页面 * @param username 注册用户名 * @param model * @return */ @RequestMapping(value = "/success",method = RequestMethod.GET) public String showSuccess(String username, Model model) { model.addAttribute("username", username); return "success"; } /** * 用户注册 * @param user POJO * @return */ @RequestMapping(value = "/user/register", method = RequestMethod.POST) @ResponseBody public XbinResult register(TbUser user) { return userService.register(user); } /** * 用户登录 * @param user POJO * @param returnUrl 返回跳转URL * @param response * @param request * @return */ @RequestMapping(value = "/user/login", method = RequestMethod.POST) @ResponseBody public String login(TbUser user, String returnUrl, HttpServletResponse response, HttpServletRequest request) { XbinResult result = userService.login(user); if (result.getStatus() == 200) { CookieUtils.setCookie(request, response, Const.TOKEN_LOGIN, result.getData().toString()); //有返回URL 跳转 if (StringUtils.isNotBlank(returnUrl)) { return "({'success':'" + returnUrl + "'})"; } return PORTAL_PATH; } if (result.getStatus() == 400) { return USER_NOT_EXIST; } if (result.getStatus() == 401) { return PASSWORD_ERROR; } return PASSWORD_ERROR; } @RequestMapping(value = "/loginservice") @ResponseBody public String valida(String callback, String method, Integer uid) { return callback + "({\"Identity\":{\"Unick\":\"\",\"Name\":\"\",\"IsAuthenticated\":false}})"; } /** * 验证用户名、邮箱、电话是否重复 * @param isEngaged 检测的名称 * @param regName 用户名 * @param email 邮箱 * @param phone 电话 * @return */ @RequestMapping("/validateuser/{isEngaged}") @ResponseBody public String validateUser(@PathVariable String isEngaged, @RequestParam(defaultValue = "") String regName, @RequestParam(defaultValue = "") String email, @RequestParam(defaultValue = "") String phone) { return userService.validateUser(isEngaged, regName, email, phone); } /** * 验证码判断 * @param authCode 判断验证码是否正确 * @param uuid * @return */ @RequestMapping("/validate/validateAuthCode") @ResponseBody public String validateUser(String authCode, String uuid) { return userService.validateAuthCode(authCode, uuid); } /** * 发送手机验证码 * @param mobile 电话号码 * @return */ //http://localhost:8104/notifyuser/mobileCode?state=&mobile=%2B008615669970074&_=1486641954248 @RequestMapping("/notifyuser/mobileCode") @ResponseBody public String mobileCode(String mobile) { return notifyUserService.mobileNotify(mobile); } /** * 请求格式 POST * 注册 不使用邮箱注册 * * @param regName 注册名 * @param pwd 第一次密码 * @param pwdRepeat 第二次密码 * @param phone 电话 * @param mobileCode 手机验证码 * @param authCode 输入的验证码 * @param uuid Redis验证码uuid * @return */ @RequestMapping("/register/regService") @ResponseBody public String regService(String regName, String pwd, String pwdRepeat, String phone, String mobileCode, String authCode, String uuid) { return userService.register(regName, pwd, pwdRepeat, phone, mobileCode, uuid,authCode, ""); } /** * 请求格式 POST * 注册 使用邮箱注册 * * @param regName 注册名 * @param pwd 第一次密码 * @param pwdRepeat 第二次密码 * @param phone 电话 * @param mobileCode 手机验证码 * @param email 邮箱 * @param authCode 输入的验证码 * @param uuid Redis验证码uuid * @return */ @RequestMapping("/register/sendRegEmail") @ResponseBody public String sendRegEmail(String regName, String pwdRepeat, String pwd, String phone, String mobileCode, String uuid, String authCode, String email) { return userService.register(regName, pwd, pwdRepeat, phone, mobileCode, uuid, authCode, email); } }