From 5506edbe54883b31db3cc8e4a1d9d0795a18a3c9 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期五, 27 十二月 2024 14:37:54 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1 --- server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java | 39 +++++++++++++++++++++++++++++++++++++-- 1 files changed, 37 insertions(+), 2 deletions(-) diff --git a/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java index 405d787..a1c4a95 100644 --- a/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java +++ b/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java @@ -162,7 +162,7 @@ } // 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜 Subject subject = SecurityUtils.getSubject(); - ShiroToken token = new ShiroToken(dto.getUsername(), dto.getPassword(),true,type); + ShiroToken token = new ShiroToken(dto.getUsername(), dto.getPassword(),true,type,null); try { subject.login(token); loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId()); @@ -215,7 +215,7 @@ } // 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜 Subject subject = SecurityUtils.getSubject(); - ShiroToken token = new ShiroToken(dto.getPhone(), null,false,type); + ShiroToken token = new ShiroToken(dto.getPhone(), null,false,type,null); try { subject.login(token); loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId()); @@ -231,4 +231,39 @@ } } + + + + @Override + public String switchCompany (LoginUserInfo loginUserInfo,Integer companyId, HttpServletRequest request) { + SystemLoginLog loginLog = new SystemLoginLog(); + loginLog.setLoginUsername(loginUserInfo.getMobile()); + loginLog.setLoginTime(new Date()); + loginLog.setSystemVersion(systemVersion); + loginLog.setIp(Utils.User_Client.getIP(request)); + loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); + loginLog.setPlatform(Utils.User_Client.getPlatform(request)); + loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); + loginLog.setOsInfo(Utils.User_Client.getOS(request)); + loginLog.setServerIp(Utils.Server.getIP()); + + // 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜 + Subject subject = SecurityUtils.getSubject(); + ShiroToken token = new ShiroToken(loginUserInfo.getMobile(), null,false,loginUserInfo.getType(),companyId); + try { + subject.login(token); + loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId()); + loginLog.setSuccess(Boolean.TRUE); + systemLoginLogService.create(loginLog); + return (String)subject.getSession().getId(); + } catch (AuthenticationException e) { + log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); + loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); + loginLog.setSuccess(Boolean.FALSE); + systemLoginLogService.create(loginLog); + throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), Objects.isNull(e.getCause())?ResponseStatus.ACCOUNT_INCORRECT.getMessage():e.getCause().getMessage()); + } + } + + } -- Gitblit v1.9.3