Ver código fonte

复制一个登录接口

pans 5 meses atrás
pai
commit
79cb597e32

+ 2 - 1
snowy-modules/snowy-web-app/src/main/java/vip/xiaonuo/web/core/config/GlobalConfigure.java

@@ -189,7 +189,8 @@ public class GlobalConfigure implements WebMvcConfigurer {
             "/disk/resourcecentre/detail",
             "/disk/courseauditrecord/addViewCount",
             "/disk/resourcecentre/top5",
-            "/resourceFile/getResourceStorage"
+            "/resourceFile/getResourceStorage",
+            "/auth/b/doBLogin"
     };
 
     /**

+ 14 - 0
snowy-plugin/snowy-plugin-auth/snowy-plugin-auth-func/src/main/java/vip/xiaonuo/auth/modular/login/controller/AuthController.java

@@ -89,6 +89,20 @@ public class AuthController {
         return CommonResult.data(authService.doLogin(authAccountPasswordLoginParam, SaClientTypeEnum.B.getValue()));
     }
 
+
+    /**
+     * B端账号密码登录
+     *
+     * @author xuyuxiang
+     * @date 2021/10/15 13:12
+     **/
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("B端账号密码登录")
+    @PostMapping("/auth/b/doBLogin")
+    public CommonResult<String> doBLogin(@RequestBody @Valid AuthAccountPasswordLoginParam authAccountPasswordLoginParam) {
+        return CommonResult.data(authService.doBLogin(authAccountPasswordLoginParam, SaClientTypeEnum.B.getValue()));
+    }
+
     /**
      * B端手机验证码登录
      *

+ 4 - 0
snowy-plugin/snowy-plugin-auth/snowy-plugin-auth-func/src/main/java/vip/xiaonuo/auth/modular/login/service/AuthService.java

@@ -19,6 +19,8 @@ import vip.xiaonuo.auth.modular.login.param.AuthGetPhoneValidCodeParam;
 import vip.xiaonuo.auth.modular.login.param.AuthPhoneValidCodeLoginParam;
 import vip.xiaonuo.auth.modular.login.result.AuthPicValidCodeResult;
 
+import javax.validation.Valid;
+
 /**
  * 登录Service接口
  *
@@ -82,4 +84,6 @@ public interface AuthService {
      * @date 2022/7/9 14:44
      */
     String doLoginById(String userId, String device, String type);
+
+    String doBLogin(@Valid AuthAccountPasswordLoginParam authAccountPasswordLoginParam, String value);
 }

+ 58 - 0
snowy-plugin/snowy-plugin-auth/snowy-plugin-auth-func/src/main/java/vip/xiaonuo/auth/modular/login/service/impl/AuthServiceImpl.java

@@ -190,7 +190,63 @@ public class AuthServiceImpl implements AuthService {
             }
         }
     }
+    @Override
+    public String doBLogin(AuthAccountPasswordLoginParam authAccountPasswordLoginParam, String type) {
+        // 判断账号是否被封禁
+        isDisableTime(authAccountPasswordLoginParam.getAccount());
+        // 获取账号
+        String account = authAccountPasswordLoginParam.getAccount();
+        // 获取密码
+        String password = authAccountPasswordLoginParam.getPassword();
+        // 获取设备
+        String device = authAccountPasswordLoginParam.getDevice();
+        // 默认指定为PC,如在小程序跟移动端的情况下,自行指定即可
+        if(ObjectUtil.isEmpty(device)) {
+            device = AuthDeviceTypeEnum.PC.getValue();
+        } else {
+            AuthDeviceTypeEnum.validate(device);
+        }
+        // SM2解密并获得前端传来的密码哈希值
+        String passwordHash;
+        try {
+            // 解密,并做哈希值
+            passwordHash = CommonCryptogramUtil.doHashValue(CommonCryptogramUtil.doSm2Decrypt(password));
+        } catch (Exception e) {
+            throw new CommonException(AuthExceptionEnum.PWD_DECRYPT_ERROR.getValue());
+        }
+        // 根据账号获取用户信息,根据B端或C端判断
+        if(SaClientTypeEnum.B.getValue().equals(type)) {
+            SaBaseLoginUser saBaseLoginUser = loginUserApi.getUserByAccount(account);
+            if(ObjectUtil.isEmpty(saBaseLoginUser)) {
+                throw new CommonException(AuthExceptionEnum.ACCOUNT_ERROR.getValue());
+            }
+            //校验用户的教育身份在所处端是否有权限登录
+            if(!saBaseLoginUser.getEduIdentity().equals(authAccountPasswordLoginParam.getEduIdentity()))
+            {
+                throw new CommonException(AuthExceptionEnum.EDU_IDENTITY_ERROR.getValue());
+            }
 
+            if (!saBaseLoginUser.getPassword().equals(passwordHash)) {
+                // 记录登录次数 和 过期时间
+                saveLoginTimes(account);
+                throw new CommonException(AuthExceptionEnum.PWD_ERROR.getValue());
+            }
+            // 删除redis 中的key
+            clearLoginErrorTimes(account);
+            // 执行B端登录
+            return execLoginB(saBaseLoginUser, device);
+        } else {
+            SaBaseClientLoginUser saBaseClientLoginUser = clientLoginUserApi.getClientUserByAccount(account);
+            if(ObjectUtil.isEmpty(saBaseClientLoginUser)) {
+                throw new CommonException(AuthExceptionEnum.ACCOUNT_ERROR.getValue());
+            }
+            if (!saBaseClientLoginUser.getPassword().equals(passwordHash)) {
+                throw new CommonException(AuthExceptionEnum.PWD_ERROR.getValue());
+            }
+            // 执行C端登录
+            return execLoginC(saBaseClientLoginUser, device);
+        }
+    }
     @Override
     public String doLogin(AuthAccountPasswordLoginParam authAccountPasswordLoginParam, String type) {
         // 判断账号是否被封禁
@@ -480,4 +536,6 @@ public class AuthServiceImpl implements AuthService {
             return execLoginC(saBaseClientLoginUser, device);
         }
     }
+
+
 }

+ 2 - 1
snowy-server/snowy-gateway-app/src/main/java/vip/xiaonuo/gateway/config/GatewayConfigure.java

@@ -156,7 +156,8 @@ public class GatewayConfigure {
             "/api/webapp/disk/courseauditrecord/addViewCount",
             "/webSocket/**",
             "/api/webapp/disk/resourcecentre/top5",
-            "/api/webapp/resourceFile/getResourceStorage"
+            "/api/webapp/resourceFile/getResourceStorage",
+            "/api/webapp/auth/b/doBLogin"
     };
 
     /**