|
@@ -2,23 +2,29 @@ package com.citu.module.menduner.system.service.auth;
|
|
|
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import cn.hutool.core.util.RandomUtil;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.citu.framework.common.enums.UserTypeEnum;
|
|
import com.citu.framework.common.enums.UserTypeEnum;
|
|
import com.citu.framework.common.util.monitor.TracerUtils;
|
|
import com.citu.framework.common.util.monitor.TracerUtils;
|
|
import com.citu.framework.common.util.servlet.ServletUtils;
|
|
import com.citu.framework.common.util.servlet.ServletUtils;
|
|
|
|
+import com.citu.framework.common.util.validation.ValidationUtils;
|
|
import com.citu.framework.security.core.LoginUser;
|
|
import com.citu.framework.security.core.LoginUser;
|
|
import com.citu.module.menduner.common.util.LoginUserContext;
|
|
import com.citu.module.menduner.common.util.LoginUserContext;
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.auth.enterprise.AppEnterpriseAuthSwitchLoginReqVO;
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.auth.enterprise.AppEnterpriseAuthSwitchLoginReqVO;
|
|
|
|
+import com.citu.module.menduner.system.controller.app.jobhunt.auth.enterprise.AppEnterpriseResetPasswordReqVO;
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.auth.vo.AppMdeAuthLoginRespVO;
|
|
import com.citu.module.menduner.system.controller.app.jobhunt.auth.vo.AppMdeAuthLoginRespVO;
|
|
import com.citu.module.menduner.system.convert.MdeAuthConvert;
|
|
import com.citu.module.menduner.system.convert.MdeAuthConvert;
|
|
import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
|
|
import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
|
|
import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
|
|
import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
|
|
|
|
+import com.citu.module.menduner.system.enums.CommonConstants;
|
|
import com.citu.module.menduner.system.enums.MendunerStatusEnum;
|
|
import com.citu.module.menduner.system.enums.MendunerStatusEnum;
|
|
import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
|
|
import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
|
|
import com.citu.module.menduner.system.service.enterprise.register.EnterpriseRegisterService;
|
|
import com.citu.module.menduner.system.service.enterprise.register.EnterpriseRegisterService;
|
|
import com.citu.module.menduner.system.service.user.MdeUserService;
|
|
import com.citu.module.menduner.system.service.user.MdeUserService;
|
|
import com.citu.module.system.api.logger.LoginLogApi;
|
|
import com.citu.module.system.api.logger.LoginLogApi;
|
|
import com.citu.module.system.api.logger.dto.LoginLogCreateReqDTO;
|
|
import com.citu.module.system.api.logger.dto.LoginLogCreateReqDTO;
|
|
|
|
+import com.citu.module.system.api.mail.MailSendApi;
|
|
|
|
+import com.citu.module.system.api.mail.dto.MailSendSingleToUserReqDTO;
|
|
import com.citu.module.system.api.oauth2.OAuth2TokenApi;
|
|
import com.citu.module.system.api.oauth2.OAuth2TokenApi;
|
|
import com.citu.module.system.api.oauth2.dto.OAuth2AccessTokenCheckRespDTO;
|
|
import com.citu.module.system.api.oauth2.dto.OAuth2AccessTokenCheckRespDTO;
|
|
import com.citu.module.system.api.oauth2.dto.OAuth2AccessTokenCreateReqDTO;
|
|
import com.citu.module.system.api.oauth2.dto.OAuth2AccessTokenCreateReqDTO;
|
|
@@ -26,11 +32,18 @@ import com.citu.module.system.api.oauth2.dto.OAuth2AccessTokenRespDTO;
|
|
import com.citu.module.system.enums.logger.LoginLogTypeEnum;
|
|
import com.citu.module.system.enums.logger.LoginLogTypeEnum;
|
|
import com.citu.module.system.enums.logger.LoginResultEnum;
|
|
import com.citu.module.system.enums.logger.LoginResultEnum;
|
|
import com.citu.module.system.enums.oauth2.OAuth2ClientConstants;
|
|
import com.citu.module.system.enums.oauth2.OAuth2ClientConstants;
|
|
|
|
+import com.xingyuv.captcha.model.common.ResponseModel;
|
|
|
|
+import com.xingyuv.captcha.model.vo.CaptchaVO;
|
|
|
|
+import com.xingyuv.captcha.service.CaptchaService;
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
+import javax.validation.Validator;
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static com.citu.framework.common.util.servlet.ServletUtils.getClientIP;
|
|
import static com.citu.framework.common.util.servlet.ServletUtils.getClientIP;
|
|
@@ -52,11 +65,23 @@ public class MdeEnterpriseAuthServiceImpl implements MdeEnterpriseAuthService {
|
|
protected LoginLogApi loginLogApi;
|
|
protected LoginLogApi loginLogApi;
|
|
@Resource
|
|
@Resource
|
|
protected OAuth2TokenApi oauth2TokenApi;
|
|
protected OAuth2TokenApi oauth2TokenApi;
|
|
|
|
+ /**
|
|
|
|
+ * 验证码的开关,默认为 true
|
|
|
|
+ */
|
|
|
|
+ @Value("${citu.captcha.enable:true}")
|
|
|
|
+ protected Boolean captchaEnable;
|
|
|
|
+ @Resource
|
|
|
|
+ protected Validator validator;
|
|
|
|
+ @Resource
|
|
|
|
+ protected CaptchaService captchaService;
|
|
@Resource
|
|
@Resource
|
|
private EnterpriseUserBindService userBindService;
|
|
private EnterpriseUserBindService userBindService;
|
|
@Resource
|
|
@Resource
|
|
private EnterpriseRegisterService registerService;
|
|
private EnterpriseRegisterService registerService;
|
|
-
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private MailSendApi mailSendApi;
|
|
|
|
+ @Resource
|
|
|
|
+ private RedisTemplate<String, Object> redisTemplate;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@DSTransactional
|
|
@DSTransactional
|
|
@@ -225,4 +250,45 @@ public class MdeEnterpriseAuthServiceImpl implements MdeEnterpriseAuthService {
|
|
).getCheckedData();
|
|
).getCheckedData();
|
|
return MdeAuthConvert.INSTANCE.convert(accessTokenDO, null);
|
|
return MdeAuthConvert.INSTANCE.convert(accessTokenDO, null);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void sendEmail(String email) {
|
|
|
|
+ MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
|
|
|
|
+ reqDTO.setMail(email);
|
|
|
|
+ reqDTO.setTemplateCode(CommonConstants.EMAIL_TEMPLATE_CODE);
|
|
|
|
+ Object code = RandomUtil.randomNumbers(6);
|
|
|
|
+ reqDTO.setTemplateParams(MapUtil.builder("code", code).build());
|
|
|
|
+ mailSendApi.sendSingleMailToMember(reqDTO).getCheckedData();
|
|
|
|
+ redisTemplate.opsForValue().set(email, code, 5, TimeUnit.MINUTES);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void resetPassword(AppEnterpriseResetPasswordReqVO reqVO) {
|
|
|
|
+ if (captchaEnable) {
|
|
|
|
+ // 校验验证码
|
|
|
|
+ ValidationUtils.validate(validator, reqVO, AppEnterpriseResetPasswordReqVO.CodeEnableGroup.class);
|
|
|
|
+ CaptchaVO captchaVO = new CaptchaVO();
|
|
|
|
+ captchaVO.setCaptchaVerification(reqVO.getCaptchaVerification());
|
|
|
|
+ ResponseModel response = captchaService.verification(captchaVO);
|
|
|
|
+ // 验证不通过
|
|
|
|
+ if (!response.isSuccess()) {
|
|
|
|
+ // 创建登录失败日志(验证码不正确)
|
|
|
|
+ throw exception(MDE_AUTH_LOGIN_CAPTCHA_CODE_ERROR, response.getRepMsg());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ Object code = redisTemplate.opsForValue().get(reqVO.getEmail());
|
|
|
|
+ if (null == code || !reqVO.getCode().equals(code.toString())) {
|
|
|
|
+ throw exception(MDE_USER_EMAIL_CODE_ERROR);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ EnterpriseUserBindDO user = userBindService.getByEmail(reqVO.getEmail());
|
|
|
|
+ if (null == user) {
|
|
|
|
+ throw exception(MDE_USER_EMAIL_NOT_REGISTERED);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ userBindService.updatePassword(user.getId(), reqVO.getPassword());
|
|
|
|
+ redisTemplate.delete(reqVO.getEmail());
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|