Parcourir la source

增加无秘登录

lishuangjiang@potevio.com il y a 1 an
Parent
commit
0c2a3b656b

+ 20 - 0
iot-starter/src/main/java/cc/iotkit/web/controller/AuthController.java

@@ -69,6 +69,26 @@ public class AuthController {
         return loginVo;
     }
 
+    /**
+     * 登录方法
+     *
+     * @param body 登录信息
+     * @return 结果
+     */
+    @ApiOperation("无秘登录")
+    @PostMapping("/loginWithoutPass")
+    public LoginVo loginWithoutPass(@Validated @RequestBody Request<LoginBody> body) {
+        LoginBody loginBody=body.getData();
+        LoginVo loginVo = new LoginVo();
+        // 生成令牌
+        String token = loginService.loginWithoutPass(
+                loginBody.getTenantId(),
+                loginBody.getUsername(), loginBody.getPassword(),
+                loginBody.getCode(), loginBody.getUuid());
+        loginVo.setToken(token);
+        return loginVo;
+    }
+
 
     /**
      * 退出登录

+ 18 - 0
iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java

@@ -435,4 +435,22 @@ public class SysLoginService {
         }
     }
 
+    public String loginWithoutPass(String tenantId, String username, String password, String code, String uuid) {
+
+        // 校验租户
+        checkTenant(tenantId);
+        //未登录前临时设置租户id
+        LoginHelper.setTenantId(tenantId);
+        SysUserVo user = loadUserByUsername(tenantId, username);
+        user.setTenantId(tenantId);
+        checkLogin(LoginType.PASSWORD, tenantId, username, () -> true);
+        // 此处可根据登录用户的数据不同 自行创建 loginUser
+        LoginUser loginUser = buildLoginUser(user);
+        // 生成token
+        LoginHelper.loginByDevice(loginUser, DeviceType.PC);
+
+        recordLoginInfo(loginUser.getTenantId(), username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
+        recordLoginInfo(user.getId());
+        return StpUtil.getTokenValue();
+    }
 }