From 846b8cddfeba109329f834d040161b9aec57ba9d Mon Sep 17 00:00:00 2001 From: nidapeng <jp@doumee.com> Date: 星期四, 25 四月 2024 18:37:19 +0800 Subject: [PATCH] 最新版本 --- server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java | 68 +++++++++++++++++++++++++++++++++- 1 files changed, 66 insertions(+), 2 deletions(-) diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java index 86ba347..6b87b55 100644 --- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java +++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java @@ -6,20 +6,26 @@ import com.doumee.core.utils.Utils; import com.doumee.dao.system.dto.LoginDTO; import com.doumee.dao.system.model.SystemLoginLog; +import com.doumee.dao.system.model.SystemPermission; +import com.doumee.dao.system.model.SystemRole; +import com.doumee.dao.system.model.SystemUser; import com.doumee.service.common.CaptchaService; -import com.doumee.service.system.SystemLoginLogService; -import com.doumee.service.system.SystemLoginService; +import com.doumee.service.system.*; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; +import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.Date; +import java.util.List; @Slf4j @Service @@ -29,6 +35,17 @@ private String systemVersion; @Value("${debug_model}") private Boolean isDebug; + @Lazy + @Autowired + private SystemUserService systemUserService; + + @Lazy + @Autowired + private SystemRoleService systemRoleService; + + @Lazy + @Autowired + private SystemPermissionService systemPermissionService; @Autowired private CaptchaService captchaService; @@ -77,4 +94,51 @@ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); } } + + @Override + public LoginUserInfo loginByPasswordNew(LoginDTO dto, ServerHttpRequest request) { + SystemLoginLog loginLog = new SystemLoginLog(); + loginLog.setLoginUsername(dto.getUsername()); + loginLog.setLoginTime(new Date()); + loginLog.setSystemVersion(systemVersion); + loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); + if(request!=null&&request.getHeaders()!=null && request.getHeaders().size()>0){ + loginLog.setIp(Utils.User_Client.getIP(request)); + 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()); + if(isDebug == null || !isDebug){ + // 鏍¢獙楠岃瘉鐮� + try { + captchaService.check(dto.getUuid(), dto.getCode()); + } catch (Exception e) { + log.error(e.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(),"瀵逛笉璧凤紝楠岃瘉鐮佷笉姝g‘锛�"); + } + } + + // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞� + SystemUser queryDto = new SystemUser(); + queryDto.setUsername(dto.getUsername()); + queryDto.setDeleted(Boolean.FALSE); + SystemUser user = systemUserService.findOne(queryDto); + if (user == null) { + throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); + } + String pwd = Utils.Secure.encryptPassword(new String(dto.getPassword()), user.getSalt()); + // 姣旇緝瀵嗙爜 + if( StringUtils.equals(pwd, user.getPassword())){ + throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); + } + // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅 + List<SystemRole> roles = systemRoleService.findByUserId(user.getId()); + List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId()); + LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,null); + return userInfo; + } } -- Gitblit v1.9.3