update 生产环境开启谷歌验证

This commit is contained in:
yyb
2026-01-09 13:36:11 +08:00
parent 4ff004f2ac
commit 267c79152c
7 changed files with 75 additions and 86 deletions

View File

@@ -48,11 +48,10 @@ public class LoginInterceptor implements HandlerInterceptor {
if (loginRequired == null) { if (loginRequired == null) {
loginRequired = handlerMethod.getBeanType().getAnnotation(LoginRequired.class); loginRequired = handlerMethod.getBeanType().getAnnotation(LoginRequired.class);
} }
// 如果没有注解或者注解值为true则校验token
if (loginRequired == null || loginRequired.value()) {
String token = request.getHeader(AUTHENTICATION); String token = request.getHeader(AUTHENTICATION);
if (token == null || !isValidToken(token)) { // 如果没有注解或者注解值为true则校验token
if (loginRequired == null || loginRequired.value() || token != null) {
if (!isValidToken(token)) {
throw new AuthException("用户未登录"); throw new AuthException("用户未登录");
} }
} }

View File

@@ -20,10 +20,7 @@ import com.m2pool.lease.netty.handler.ChannelManager;
import com.m2pool.lease.netty.message.ClientMessage; import com.m2pool.lease.netty.message.ClientMessage;
import com.m2pool.lease.redis.service.RedisService; import com.m2pool.lease.redis.service.RedisService;
import com.m2pool.lease.service.*; import com.m2pool.lease.service.*;
import com.m2pool.lease.utils.DateUtils; import com.m2pool.lease.utils.*;
import com.m2pool.lease.utils.SecurityUtils;
import com.m2pool.lease.utils.UuidGeneratorUtil;
import com.m2pool.lease.utils.WalletRuleCheckUtils;
import com.m2pool.lease.vo.*; import com.m2pool.lease.vo.*;
import com.m2pool.lease.vo.v2.CoinAndAlgorithmVo; import com.m2pool.lease.vo.v2.CoinAndAlgorithmVo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -106,14 +103,14 @@ public class LeaseOrderInfoServiceImpl extends ServiceImpl<LeaseOrderInfoMapper,
public Result<String> addOrders(OrderAndCodeVo orderAndCodeVo ) { public Result<String> addOrders(OrderAndCodeVo orderAndCodeVo ) {
String userEmail = SecurityUtils.getUsername(); String userEmail = SecurityUtils.getUsername();
GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(userEmail); GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(userEmail);
//TODO 开发环境
//if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){ if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){
// //未绑定定谷歌验证器 //未绑定定谷歌验证器
// return Result.fail("您的账号未开启双重验证,请先开启验证!"); return Result.fail("您的账号未开启双重验证,请先开启验证!");
//} }
//if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), orderAndCodeVo.getCode(), System.currentTimeMillis())){ if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), orderAndCodeVo.getCode(), System.currentTimeMillis())){
// return Result.fail("谷歌验证码错误"); return Result.fail("谷歌验证码错误");
//} }
List<OrderInfoVo> orderInfoVoList = orderAndCodeVo.getOrderInfoVoList(); List<OrderInfoVo> orderInfoVoList = orderAndCodeVo.getOrderInfoVoList();
@@ -710,14 +707,13 @@ public class LeaseOrderInfoServiceImpl extends ServiceImpl<LeaseOrderInfoMapper,
} }
Map<Long, OrderMiningInfoDto> userAndMinerMap = orderMiningInfoDtoList.stream().collect(Collectors.toMap(OrderMiningInfoDto::getMachineId, Function.identity())); Map<Long, OrderMiningInfoDto> userAndMinerMap = orderMiningInfoDtoList.stream().collect(Collectors.toMap(OrderMiningInfoDto::getMachineId, Function.identity()));
GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(userEmail); GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(userEmail);
//TODO 开发环境 if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){
//if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){ //未绑定定谷歌验证器
// //未绑定定谷歌验证器 return Result.fail("您的账号未开启双重验证,请先开启验证!");
// return Result.fail("您的账号未开启双重验证,请先开启验证!"); }
//} if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), orderAndCodeVo.getCode(), System.currentTimeMillis())){
//if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), orderAndCodeVo.getCode(), System.currentTimeMillis())){ return Result.fail("谷歌验证码错误");
// return Result.fail("谷歌验证码错误"); }
//}
Map<Long, OrderInfoVo> collect1 = orderInfoVoList.stream() Map<Long, OrderInfoVo> collect1 = orderInfoVoList.stream()
.collect(Collectors.toMap(OrderInfoVo::getMachineId,Function.identity())); .collect(Collectors.toMap(OrderInfoVo::getMachineId,Function.identity()));
List<LeaseMachine> machineList = leaseMachineMapper.selectBatchIds(collect1.keySet()); List<LeaseMachine> machineList = leaseMachineMapper.selectBatchIds(collect1.keySet());

View File

@@ -461,7 +461,7 @@ public class LeaseProductServiceImpl extends ServiceImpl<LeaseProductMapper, Lea
public Long getShopIdByUsername(){ public Long getShopIdByUsername(){
LeaseShop leaseShop = leaseShopMapper.selectOne(new LambdaQueryWrapper<LeaseShop>() LeaseShop leaseShop = leaseShopMapper.selectOne(new LambdaQueryWrapper<LeaseShop>()
.select(LeaseShop::getId) .select(LeaseShop::getId)
.eq(LeaseShop::getUserEmail, SecurityUtils.getUsername()) .eq(LeaseShop::getUserEmail,SecurityUtils.getUsername())
.eq(LeaseShop::getDel, false)); .eq(LeaseShop::getDel, false));
return leaseShop.getId(); return leaseShop.getId();
} }
@@ -474,7 +474,8 @@ public class LeaseProductServiceImpl extends ServiceImpl<LeaseProductMapper, Lea
String chain = productMachineForWalletConfigVo.getChain(); String chain = productMachineForWalletConfigVo.getChain();
String address = productMachineForWalletConfigVo.getPayAddress(); String address = productMachineForWalletConfigVo.getPayAddress();
LeaseShop leaseShop = leaseShopMapper.selectOne(new LambdaQueryWrapper<LeaseShop>() LeaseShop leaseShop = leaseShopMapper.selectOne(new LambdaQueryWrapper<LeaseShop>()
.eq(LeaseShop::getAuthId, SecurityUtils.getUserId())); .eq(LeaseShop::getAuthId, SecurityUtils.getUserId())
.eq(LeaseShop::getDel, false));
boolean check = checkHashWalletInfo(leaseShop.getId(),chain,address, payCoinsList); boolean check = checkHashWalletInfo(leaseShop.getId(),chain,address, payCoinsList);
if (!check){ if (!check){
return Result.fail("绑定钱包失败,钱包格式不正确或该链和币种钱包已绑定过"); return Result.fail("绑定钱包失败,钱包格式不正确或该链和币种钱包已绑定过");

View File

@@ -631,14 +631,13 @@ public class LeaseShopServiceImpl extends ServiceImpl<LeaseShopMapper, LeaseShop
return Result.fail("提现地址不属于您,请登录正确的账号"); return Result.fail("提现地址不属于您,请登录正确的账号");
} }
GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(username); GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(username);
//开发环境 if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){
//if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){ //未绑定定谷歌验证器
// //未绑定定谷歌验证器 return Result.fail("您的账号未开启双重验证,请先开启验证!");
// return Result.fail("您的账号未开启双重验证,请先开启验证!"); }
//} if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), balanceVo.getCode(), System.currentTimeMillis())){
//if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), balanceVo.getCode(), System.currentTimeMillis())){ return Result.fail("谷歌验证码错误");
// return Result.fail("谷歌验证码错误"); }
//}
//同一个from只能存在一笔提现中的订单 //同一个from只能存在一笔提现中的订单
Integer recentlyOneData = leasePayWithdrawMessageMapper.getRecentlyOneData(balanceVo.getFromAddress(), balanceVo.getToChain()); Integer recentlyOneData = leasePayWithdrawMessageMapper.getRecentlyOneData(balanceVo.getFromAddress(), balanceVo.getToChain());
@@ -711,14 +710,14 @@ public class LeaseShopServiceImpl extends ServiceImpl<LeaseShopMapper, LeaseShop
//谷歌验证 //谷歌验证
GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(username); GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(username);
//开发环境
//if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){ if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){
// //未绑定定谷歌验证器 //未绑定定谷歌验证器
// return Result.fail("您的账号未开启双重验证,请先开启验证!"); return Result.fail("您的账号未开启双重验证,请先开启验证!");
//} }
//if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), balanceVo.getCode(), System.currentTimeMillis())){ if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), shopWalletInfoVo.getGCode(), System.currentTimeMillis())){
// return Result.fail("谷歌验证码错误"); return Result.fail("谷歌验证码错误");
//} }
LeaseShopConfig leaseShopConfig = leaseShopConfigMapper.selectOne(new LambdaQueryWrapper<LeaseShopConfig>() LeaseShopConfig leaseShopConfig = leaseShopConfigMapper.selectOne(new LambdaQueryWrapper<LeaseShopConfig>()
.eq(LeaseShopConfig::getPayAddress, shopWalletInfoVo.getPayAddress()) .eq(LeaseShopConfig::getPayAddress, shopWalletInfoVo.getPayAddress())

View File

@@ -342,14 +342,13 @@ public class LeaseUserServiceImpl extends ServiceImpl<LeaseUserMapper, LeaseUser
verifyParams(email,password); verifyParams(email,password);
//2.验证码校验 和谷歌验证码校验 //2.验证码校验 和谷歌验证码校验
GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(SecurityUtils.getUsername()); GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(SecurityUtils.getUsername());
//开发环境 if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){
//if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){ //未绑定定谷歌验证器
// //未绑定定谷歌验证器 return Result.fail("您的账号未开启双重验证,请先开启验证!");
// return Result.fail("您的账号未开启双重验证,请先开启验证!"); }
//} if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), restPwdVo.getGCode(), System.currentTimeMillis())){
//if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), restPwdVo.getGCode(), System.currentTimeMillis())){ return Result.fail("谷歌验证码错误");
// return Result.fail("谷歌验证码错误"); }
//}
verifyCode(updatePasswordCodeKey,restPwdVo.getCode()); verifyCode(updatePasswordCodeKey,restPwdVo.getCode());
//3.修改密码 //3.修改密码
LeaseUser user = getUser(email); LeaseUser user = getUser(email);
@@ -385,15 +384,14 @@ public class LeaseUserServiceImpl extends ServiceImpl<LeaseUserMapper, LeaseUser
String userEmail = SecurityUtils.getUsername(); String userEmail = SecurityUtils.getUsername();
//1. //1.
GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(userEmail); GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(userEmail);
// 开发环境
//1.1谷歌验证 //1.1谷歌验证
//if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){ if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){
// //未绑定定谷歌验证器 //未绑定定谷歌验证器
// return Result.fail("您的账号未开启双重验证,请先开启验证!"); return Result.fail("您的账号未开启双重验证,请先开启验证!");
//} }
//if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), closeAccountVo.getGCode(), System.currentTimeMillis())){ if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), closeAccountVo.getGCode(), System.currentTimeMillis())){
// return Result.fail("谷歌验证码错误"); return Result.fail("谷歌验证码错误");
//} }
//1.2邮箱验证码验证 //1.2邮箱验证码验证
verifyCode(RedisAuthKey.getCloseAccountKey(userEmail),closeAccountVo.getECode()); verifyCode(RedisAuthKey.getCloseAccountKey(userEmail),closeAccountVo.getECode());
LeaseShop leaseShop = leaseShopMapper.selectOne(new LambdaQueryWrapper<LeaseShop>().eq(LeaseShop::getUserEmail, userEmail) LeaseShop leaseShop = leaseShopMapper.selectOne(new LambdaQueryWrapper<LeaseShop>().eq(LeaseShop::getUserEmail, userEmail)
@@ -752,15 +750,14 @@ public class LeaseUserServiceImpl extends ServiceImpl<LeaseUserMapper, LeaseUser
// 根据邮箱查询是否已绑定 // 根据邮箱查询是否已绑定
UserGoogleAuthInfo info = leaseUserMapper.getUserInfoByEmail(email); UserGoogleAuthInfo info = leaseUserMapper.getUserInfoByEmail(email);
if(StringUtils.isBlank(info.getSecret())){ if(info == null || StringUtils.isBlank(info.getSecret())){
//未绑定 正常走绑定流程 //未绑定 正常走绑定流程
//校验gcode //校验gcode
boolean gResult = GoogleAuthenticator.checkCode(googleBindVo.getSecret(), boolean gResult = GoogleAuthenticator.checkCode(googleBindVo.getSecret(),
googleBindVo.getGCode(), System.currentTimeMillis()); googleBindVo.getGCode(), System.currentTimeMillis());
//开发环境 if(!gResult){
//if(!gResult){ return Result.fail("谷歌验证码错误");
// return Result.fail("谷歌验证码错误"); }
//}
//校验邮箱验证码 //校验邮箱验证码
String redisKey = RedisAuthKey.getGoogleBindCodeKey(email); String redisKey = RedisAuthKey.getGoogleBindCodeKey(email);
if(redisService.hasKey(redisKey)){ if(redisService.hasKey(redisKey)){
@@ -812,7 +809,7 @@ public class LeaseUserServiceImpl extends ServiceImpl<LeaseUserMapper, LeaseUser
GoogleInfo info = leaseUserMapper.getGoogleInfoByEmail(email); GoogleInfo info = leaseUserMapper.getGoogleInfoByEmail(email);
GoogleInfoDto dto = new GoogleInfoDto(); GoogleInfoDto dto = new GoogleInfoDto();
if(StringUtils.isBlank(info.getSecret())){ if(info == null || StringUtils.isBlank(info.getSecret())){
//生成谷歌验证码 //生成谷歌验证码
String secret = GoogleAuthenticator.getSecretKey(); String secret = GoogleAuthenticator.getSecretKey();
String qrCodeText = GoogleAuthenticator.getQrCodeText(secret, email, domain); String qrCodeText = GoogleAuthenticator.getQrCodeText(secret, email, domain);
@@ -998,17 +995,16 @@ public class LeaseUserServiceImpl extends ServiceImpl<LeaseUserMapper, LeaseUser
// 根据邮箱查询是否已绑定 // 根据邮箱查询是否已绑定
UserGoogleAuthInfo info = leaseUserMapper.getUserInfoByEmail(email); UserGoogleAuthInfo info = leaseUserMapper.getUserInfoByEmail(email);
if(StringUtils.isBlank(info.getSecret())){ if(info == null || StringUtils.isBlank(info.getSecret())){
return Result.success(); return Result.success();
}else { }else {
//已绑定 正常走关闭谷歌验证流程 //已绑定 正常走关闭谷歌验证流程
//校验gcode //校验gcode
boolean gResult = GoogleAuthenticator.checkCode(info.getSecret(), vo.getGCode(), System.currentTimeMillis()); boolean gResult = GoogleAuthenticator.checkCode(info.getSecret(), vo.getGCode(), System.currentTimeMillis());
//开发环境 if(!gResult){
//if(!gResult){ return Result.fail("谷歌验证码错误");
// return Result.fail("谷歌验证码错误"); }
//}
//校验邮箱验证码 //校验邮箱验证码
String redisKey = RedisAuthKey.getGoogleCloseCodeKey( email); String redisKey = RedisAuthKey.getGoogleCloseCodeKey( email);
if(redisService.hasKey(redisKey)){ if(redisService.hasKey(redisKey)){
@@ -1059,10 +1055,9 @@ public class LeaseUserServiceImpl extends ServiceImpl<LeaseUserMapper, LeaseUser
//已绑定 正常走关闭谷歌验证流程 //已绑定 正常走关闭谷歌验证流程
//校验gcode //校验gcode
boolean gResult = GoogleAuthenticator.checkCode(info.getSecret(), vo.getGCode(), System.currentTimeMillis()); boolean gResult = GoogleAuthenticator.checkCode(info.getSecret(), vo.getGCode(), System.currentTimeMillis());
//开发环境 if(!gResult){
//if(!gResult){ return Result.fail("谷歌验证码错误");
// return Result.fail("谷歌验证码错误"); }
//}
//校验邮箱验证码 //校验邮箱验证码
String redisKey = RedisAuthKey.getGoogleBindCodeKey( email); String redisKey = RedisAuthKey.getGoogleBindCodeKey( email);
if(redisService.hasKey(redisKey)){ if(redisService.hasKey(redisKey)){
@@ -1278,14 +1273,13 @@ public class LeaseUserServiceImpl extends ServiceImpl<LeaseUserMapper, LeaseUser
} }
GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(username); GoogleInfo googleInfo = leaseUserMapper.getGoogleInfoByEmail(username);
//开发环境 if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){
//if(googleInfo == null || StringUtils.isBlank(googleInfo.getSecret())){ //未绑定定谷歌验证器
// //未绑定定谷歌验证器 return Result.fail("您的账号未开启双重验证,请先开启验证!");
// return Result.fail("您的账号未开启双重验证,请先开启验证!"); }
//} if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), balanceVo.getCode(), System.currentTimeMillis())){
//if(!GoogleAuthenticator.checkCode(googleInfo.getSecret(), balanceVo.getCode(), System.currentTimeMillis())){ return Result.fail("谷歌验证码错误");
// return Result.fail("谷歌验证码错误"); }
//}
//同一个from只能存在一笔提现中的订单 //同一个from只能存在一笔提现中的订单
Integer recentlyOneData = leasePayWithdrawMessageMapper.getRecentlyOneData(balanceVo.getFromAddress(), balanceVo.getToChain()); Integer recentlyOneData = leasePayWithdrawMessageMapper.getRecentlyOneData(balanceVo.getFromAddress(), balanceVo.getToChain());

View File

@@ -98,7 +98,7 @@ image:
prefix: https://test.m2pool.com prefix: https://test.m2pool.com
myenv: myenv:
domain: https://www.m2pool.com domain: http://18.183.240.108/
path: /var/www/html/web path: /var/www/html/web_test
img: /img img: /img
filepath: /home/ubuntu/prod filepath: /home/ubuntu/web

View File

@@ -24,7 +24,7 @@
from from
lease_user lease_user
where where
user_id = #{email} user_id = #{email} AND del = false AND google_status = 0
limit 1 limit 1
</select> </select>
<select id="checkSecretIfExist" resultType="java.lang.Boolean"> <select id="checkSecretIfExist" resultType="java.lang.Boolean">
@@ -40,7 +40,7 @@
from from
lease_user lease_user
where where
user_id = #{email} user_id = #{email} AND del = false
limit 1 limit 1
</select> </select>
<select id="checkIfBindByEmail" resultType="java.lang.Integer"> <select id="checkIfBindByEmail" resultType="java.lang.Integer">