Browse Source

添加erp修改密码,用户绑定为注册用户接口

wangmh 8 years ago
parent
commit
598e0c24d2

+ 14 - 0
sso-common/src/main/java/com/uas/sso/core/Const.java

@@ -13,4 +13,18 @@ public class Const {
      */
     public static final String REPEAT_SEPARATOR = "#";
 
+    /**
+     * 邮箱正则
+     */
+    public static final String REGEXP_EMAIL = "^([\\w-])+(\\.\\w+)*@([\\w-])+((\\.\\w{2,3}){1,3})$";
+
+    /**
+     * 中国大陆手机号正则
+     */
+    public static final String REGEXP_MOBILE_CONTINENT = "1[0-9]{10}";
+
+    /**
+     * 香港手机号正则
+     */
+    public static final String REGEXP_MOBILE_HONGKONG = "[0-9]{8}";
 }

+ 29 - 0
sso-server/src/main/java/com/uas/sso/controller/BaseController.java

@@ -11,6 +11,7 @@ import com.uas.sso.exception.VisibleError;
 import com.uas.sso.service.SettingService;
 import com.uas.sso.service.TokenService;
 import com.uas.sso.util.StringUtil;
+import com.uas.sso.util.encry.HmacUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
@@ -51,6 +52,12 @@ public class BaseController {
     @Autowired
     protected SettingService settingService;
 
+    private final static String SIGNATURE_PARAM = "_signature";
+
+    private final static String TIMESTAMP_PARAM = "_timestamp";
+
+    private final static long EXPIRE_IN = 10 * 1000;
+
     protected static boolean isSuccess(ModelMap map) {
         return Boolean.TRUE.equals(map.get("success"));
     }
@@ -300,4 +307,26 @@ public class BaseController {
             throw new VisibleError("未找到所选地区");
         }
     }
+
+    public void checkRequest(String accessSecret) {
+        // 获取参数
+        String signature = request.getParameter(SIGNATURE_PARAM);
+        Long timestamp = Long.valueOf(request.getParameter(TIMESTAMP_PARAM));
+
+        if (StringUtils.isEmpty(accessSecret)) {
+            throw new VisibleError("接口未授权");
+        }
+
+        // 请求时间不小于当前时间10秒,单位毫秒
+        if (System.currentTimeMillis() - timestamp > EXPIRE_IN || System.currentTimeMillis() < timestamp) {
+            throw new VisibleError("请求超时");
+        }
+
+        // 判断加密信息是否有误
+        String urlMessage = request.getRequestURL() + "?"
+                + request.getQueryString().substring(0, request.getQueryString().indexOf("_signature") - 1);
+        if (!signature.equals(HmacUtils.encode(urlMessage, accessSecret))) {
+            throw new VisibleError("密钥错误");
+        }
+    }
 }

+ 2 - 15
sso-server/src/main/java/com/uas/sso/controller/LoginController.java

@@ -196,22 +196,9 @@ public class LoginController extends BaseController {
         if (userspace == null) {
             return error("没有找到企业");
         }
-        if (userspace.getAccessSecret() == null) {
-            return error("接口未授权");
-        }
-
-        // 请求时间不小于当前时间10秒,单位毫秒
-        long expires_request = 10 * 1000;
-        if (System.currentTimeMillis() - timestamp > expires_request || System.currentTimeMillis() < timestamp) {
-            return error("请求超时");
-        }
 
-        // 判断加密信息是否有误
-        String urlMessage = request.getRequestURL() + "?"
-                + request.getQueryString().substring(0, request.getQueryString().indexOf("_signature") - 1);
-        if (!signature.equals(HmacUtils.encode(urlMessage, userspace.getAccessSecret()))) {
-            return error("密钥错误");
-        }
+        // 校验请求
+        checkRequest(userspace.getAccessSecret());
 
         // 将企业信息、企业管理员信息写入SystemSession
         User user = userService.findOne(Long.valueOf(userUU));

+ 14 - 0
sso-server/src/main/java/com/uas/sso/controller/UserManagerController.java

@@ -242,6 +242,20 @@ public class UserManagerController extends BaseController {
         return error("请填写手机号");
     }
 
+    @RequestMapping("/update/password/{userUU}/{spaceUU}")
+    public ModelMap updatePassword(@PathVariable Long userUU, @PathVariable Long spaceUU, String password) {
+        // 获取企业密钥
+        Userspace userspace = userspaceService.findOne(spaceUU);
+
+        // 校验请求
+        checkRequest(userspace.getAccessSecret());
+
+        // 修改密码
+        userService.updatePassword(userUU, password);
+
+        return success();
+    }
+
     /**
      * 数据从旧账户中心同步
      * @return

+ 8 - 0
sso-server/src/main/java/com/uas/sso/service/UserService.java

@@ -221,4 +221,12 @@ public interface UserService {
      * @return
      */
     List<User> findByEmail(String email);
+
+    /**
+     * 修改用户密码
+     * @param userUU 用户uu号
+     * @param password 密码
+     * @return
+     */
+    User updatePassword(Long userUU, String password);
 }

+ 11 - 0
sso-server/src/main/java/com/uas/sso/service/impl/UserServiceImpl.java

@@ -418,6 +418,17 @@ public class UserServiceImpl implements UserService {
         return userDao.findByEmail(email);
     }
 
+    @Override
+    public User updatePassword(Long userUU, String noEncryPwd) {
+        User user = userDao.findOne(userUU);
+        if (user == null) {
+            throw new VisibleError("该用户不存在");
+        }
+        user.setPassword(getEncryPassword(Const.ENCRY_FORMAT, noEncryPwd, user.getSalt()));
+
+        return userDao.save(user);
+    }
+
     /**
      * 同步用户信息到各个应用
      * @param userUU 用户uu号