Browse Source

im修改密码接口

wangmh 7 years ago
parent
commit
03186cd4a8

+ 83 - 0
sso-server/src/main/java/com/uas/sso/uu/controller/ImResetPasswordController.java

@@ -0,0 +1,83 @@
+package com.uas.sso.uu.controller;
+
+import com.uas.sso.controller.BaseController;
+import com.uas.sso.core.PasswordStrength;
+import com.uas.sso.entity.User;
+import com.uas.sso.service.UserService;
+import com.uas.sso.util.PasswordLevelUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author wangmh
+ * @create 2018-05-02 13:43
+ * @desc im修改密码接口
+ **/
+@RestController
+@RequestMapping("/im/resetPwd")
+public class ImResetPasswordController extends BaseController {
+
+    @Autowired
+    private UserService userService;
+
+    /**
+     * 获取验证码
+     * @param mobile 用户手机号
+     * @return token
+     */
+    @RequestMapping(value = "/checkCode", method = RequestMethod.GET)
+    public ModelMap checkCode(String mobile) {
+        String token = getMobileToken(mobile);
+        return success(new ModelMap("token", token));
+    }
+
+    /**
+     * 校验验证码
+     * @param token 获取验证码返回的token
+     * @param mobile 获取验证码的手机号
+     * @param code 用户输入的验证码
+     * @return
+     */
+    @RequestMapping(value = "/checkCode", method = RequestMethod.POST)
+    public ModelMap checkCode(String token, String mobile, String code) {
+        checkMobileCode(token, mobile, code);
+        return success();
+    }
+
+    /**
+     * 重置密码
+     * @param mobile 获取验证码的手机号
+     * @param token 获取验证码返回的token
+     * @param code 用户输入的验证码
+     * @param password 用户新密码,未加密
+     * @return
+     */
+    @RequestMapping(method = RequestMethod.POST)
+    public ModelMap resetPassword(String mobile, String token, String code, String password) {
+        // 校验验证码
+        checkMobileCode(token, mobile, code);
+
+        // 判断手机号是否注册
+        User user = userService.findByMobile(mobile);
+        if (user == null) {
+            return error("未找到用户");
+        }
+
+        PasswordStrength strength = PasswordLevelUtils.checkPasswordLevel(password);
+        if (PasswordStrength.WEAK.getValue() == strength.getValue()) {
+            return error("密码须为8-20字符的英文、数字混合");
+        }
+
+        // 修改密码
+        userService.updatePassword(user.getUserUU(), password);
+
+        // 删除token
+        tokenService.delete(token);
+
+        // 返回成功
+        return success();
+    }
+}