|
|
@@ -78,16 +78,16 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|
|
// 校验账号是否存在
|
|
|
AdminUserDO user = userService.getUserByUsername(username);
|
|
|
if (user == null) {
|
|
|
- createLoginLog(null, username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
|
|
|
+ createLoginLog(null, username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS,user.getDeptId());
|
|
|
throw exception(AUTH_LOGIN_BAD_CREDENTIALS);
|
|
|
}
|
|
|
if (!userService.isPasswordMatch(password, user.getPassword())) {
|
|
|
- createLoginLog(user.getId(), username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
|
|
|
+ createLoginLog(user.getId(), username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS,user.getDeptId());
|
|
|
throw exception(AUTH_LOGIN_BAD_CREDENTIALS);
|
|
|
}
|
|
|
// 校验是否禁用
|
|
|
if (CommonStatusEnum.isDisable(user.getStatus())) {
|
|
|
- createLoginLog(user.getId(), username, logTypeEnum, LoginResultEnum.USER_DISABLED);
|
|
|
+ createLoginLog(user.getId(), username, logTypeEnum, LoginResultEnum.USER_DISABLED,user.getDeptId());
|
|
|
throw exception(AUTH_LOGIN_USER_DISABLED);
|
|
|
}
|
|
|
return user;
|
|
|
@@ -95,19 +95,20 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|
|
|
|
|
@Override
|
|
|
public AuthLoginRespVO login(AuthLoginReqVO reqVO) {
|
|
|
- // 校验验证码
|
|
|
- validateCaptcha(reqVO);
|
|
|
|
|
|
// 使用账号密码,进行登录
|
|
|
AdminUserDO user = authenticate(reqVO.getUsername(), reqVO.getPassword());
|
|
|
|
|
|
+ // 校验验证码
|
|
|
+ validateCaptcha(reqVO,user);
|
|
|
+
|
|
|
// 如果 socialType 非空,说明需要绑定社交用户
|
|
|
if (reqVO.getSocialType() != null) {
|
|
|
socialUserService.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
|
|
reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()));
|
|
|
}
|
|
|
// 创建 Token 令牌,记录登录日志
|
|
|
- return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(),user.getLoginDate(),LoginLogTypeEnum.LOGIN_USERNAME);
|
|
|
+ return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(),user.getLoginDate(),LoginLogTypeEnum.LOGIN_USERNAME,user.getDeptId());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -132,11 +133,11 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|
|
}
|
|
|
|
|
|
// 创建 Token 令牌,记录登录日志
|
|
|
- return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(),user.getLoginDate(), LoginLogTypeEnum.LOGIN_MOBILE);
|
|
|
+ return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(),user.getLoginDate(), LoginLogTypeEnum.LOGIN_MOBILE,user.getDeptId());
|
|
|
}
|
|
|
|
|
|
private void createLoginLog(Long userId, String username,
|
|
|
- LoginLogTypeEnum logTypeEnum, LoginResultEnum loginResult) {
|
|
|
+ LoginLogTypeEnum logTypeEnum, LoginResultEnum loginResult,Long deptId) {
|
|
|
// 插入登录日志
|
|
|
LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO();
|
|
|
reqDTO.setLogType(logTypeEnum.getType());
|
|
|
@@ -147,6 +148,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|
|
reqDTO.setUserAgent(ServletUtils.getUserAgent());
|
|
|
reqDTO.setUserIp(ServletUtils.getClientIP());
|
|
|
reqDTO.setResult(loginResult.getResult());
|
|
|
+ reqDTO.setDeptId(deptId);
|
|
|
loginLogService.createLoginLog(reqDTO);
|
|
|
// 更新最后登录时间
|
|
|
if (userId != null && Objects.equals(LoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) {
|
|
|
@@ -170,11 +172,11 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|
|
}
|
|
|
|
|
|
// 创建 Token 令牌,记录登录日志
|
|
|
- return createTokenAfterLoginSuccess(user.getId(), user.getUsername(),user.getLoginDate(),LoginLogTypeEnum.LOGIN_SOCIAL);
|
|
|
+ return createTokenAfterLoginSuccess(user.getId(), user.getUsername(),user.getLoginDate(),LoginLogTypeEnum.LOGIN_SOCIAL,user.getDeptId());
|
|
|
}
|
|
|
|
|
|
@VisibleForTesting
|
|
|
- void validateCaptcha(AuthLoginReqVO reqVO) {
|
|
|
+ void validateCaptcha(AuthLoginReqVO reqVO,AdminUserDO user) {
|
|
|
// 如果验证码关闭,则不进行校验
|
|
|
if (!captchaEnable) {
|
|
|
return;
|
|
|
@@ -187,14 +189,14 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
|
|
// 验证不通过
|
|
|
if (!response.isSuccess()) {
|
|
|
// 创建登录失败日志(验证码不正确)
|
|
|
- createLoginLog(null, reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME, LoginResultEnum.CAPTCHA_CODE_ERROR);
|
|
|
+ createLoginLog(null, reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME, LoginResultEnum.CAPTCHA_CODE_ERROR,user.getDeptId());
|
|
|
throw exception(AUTH_LOGIN_CAPTCHA_CODE_ERROR, response.getRepMsg());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LocalDateTime loginDate,LoginLogTypeEnum logType) {
|
|
|
+ private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LocalDateTime loginDate,LoginLogTypeEnum logType,Long deptId) {
|
|
|
// 插入登陆日志
|
|
|
- createLoginLog(userId, username, logType, LoginResultEnum.SUCCESS);
|
|
|
+ createLoginLog(userId, username, logType, LoginResultEnum.SUCCESS,deptId);
|
|
|
// 创建访问令牌
|
|
|
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, getUserType().getValue(),
|
|
|
OAuth2ClientConstants.CLIENT_ID_DEFAULT, null);
|