Commit 6a569627 authored by ml's avatar ml

修改

parent d09345a0
import { coinAddress, coinWithdraw, ormDB, userAccountChangeLog, userInfo, userProfile } from "@madex/ex-ts-dao";
import { coinAddress, coinWithdraw, ormDB, userAccountChangeLog, userInfo } from "@madex/ex-ts-dao";
import { ErrorCode } from "../../../constant/errorCode";
import { getProfileByUserIds } from "./mUserProfile.service";
import { getRealNameMapByUserIds, getRealNameByUserId } from "./mUserRealName.service";
import { getRealNameByUserId, getRealNameMapByUserIds } from "./mUserRealName.service";
import { MUserRedisKey } from "../../../constant/mUserRedisKey";
import { getMUserInfoByEmail, getMUserInfoByUid, getUserInfoMapByUids, sendEmail, updateMUserInfo } from "../../../utils/mUserUtils";
import { existEmail, getProcessingEmailListByMUserId } from "./mUserAccountChangeLog.service";
......@@ -131,7 +130,7 @@ export async function oneUserDetail(m_user_id: number) {
throw ErrorCode.DATA_NOT_EXIST;
}
let oneRealName = await getRealNameByUserId(m_user_id);
let isLoginLock = await redisUtilsCommon.getSync(m_user_id + MUserRedisKey.USER_LOCK_SUFFIX);
let isLoginLock = await getLoginLimit(m_user_id);
//24小时提现限制
let dead_line = datetimeUtils.add(oneUser.secure_modifiedAt, datetimeUtils.DAY);
let is_withdraw = datetimeUtils.between(new Date(), dead_line);
......@@ -145,7 +144,7 @@ export async function oneUserDetail(m_user_id: number) {
kyc_identity: oneRealName ? oneRealName.identity : 0,//证件号
is_bind_totp: oneUser.totp_encrypt ? 1 : 0,
lock_status: oneUser.is_lock, //0 否 1 是
login_lock: isLoginLock ? 1 : 0,//登陆锁定 0 否 1 是
login_lock: isLoginLock.is_limit ? 1 : 0,//登陆锁定 0 否 1 是
withdraw_limit_24: is_withdraw > 0 ? 0 : 1,//24小时提现限制
}
return res;
......@@ -312,7 +311,8 @@ export async function unlockAccount(currentUserId: number, m_user_id: any, ip: a
export async function clearLoginLimit(currentUserId: number, m_user_id: any, ip: any, totp_code: any) {
//校验谷歌
await checkTotp(currentUserId, totp_code);
await redisUtilsCommon.delSync(m_user_id + MUserRedisKey.USER_LOCK_SUFFIX);
await delLoginLimit(m_user_id);
//管理后台操作日志
addOptLog(currentUserId, Number(m_user_id), '清除用户登陆限制', ip, "", '用户管理');
......@@ -463,6 +463,82 @@ async function buildReturnData(pageData: any, fill_user_info: boolean, fill_coin
}
}
/**
* 查询登陆是否被限制 以及限制次数
* @param user_id
*/
async function getLoginLimit(user_id: number) {
let res = {
is_limit: 0,//是否被限制 1 登陆密码限制 2 谷歌验证码限制 3 验证码限制
times: 0
}
let [totpCodeErrKey, verifyCodeErrKey,
totpCodeErrTimesKey, verifyCodeErrTimesKey,
loginPwdErrKey] = getLoginLimitKeys(user_id);
let loginPwdErrKeyData = await redisUtilsCommon.getSync(loginPwdErrKey);
if (loginPwdErrKeyData) {
res.is_limit = 1;
res.times = loginPwdErrKeyData;
return res;
}
let totpCodeErrKeyData = await redisUtilsCommon.getSync(totpCodeErrKey);
if (totpCodeErrKeyData) {
res.is_limit = 2;
res.times = await redisUtilsCommon.getSync(totpCodeErrTimesKey);
return res;
}
let verifyCodeErrKeyData = await redisUtilsCommon.getSync(verifyCodeErrKey);
if (verifyCodeErrKeyData) {
res.is_limit = 3;
res.times = await redisUtilsCommon.getSync(verifyCodeErrTimesKey);
return res;
}
return res;
}
/**
* 清除登陆限制
* @param user_id
*/
async function delLoginLimit(user_id: number) {
let [totpCodeErrKey, verifyCodeErrKey,
totpCodeErrTimesKey, verifyCodeErrTimesKey,
loginPwdErrKey] = getLoginLimitKeys(user_id);
redisUtilsCommon.delSync(loginPwdErrKey);
redisUtilsCommon.delSync(totpCodeErrKey);
redisUtilsCommon.delSync(verifyCodeErrKey);
redisUtilsCommon.writeSync(totpCodeErrTimesKey,0);
redisUtilsCommon.writeSync(verifyCodeErrTimesKey,0);
}
/**
* 获取登陆限制的redis key
* @param user_id
*/
function getLoginLimitKeys(user_id: number) {
//谷歌验证码错误
let totpCodeErr = '2015';
//验证码错误
let verifyCodeErr = '2018';
//谷歌验证码错误 锁2小时 的key
let totpCodeErrKey = "lock2hourExpiredKey.userId." + user_id + ".errorCode." + totpCodeErr;
//验证码错误 锁2小时 的key
let verifyCodeErrKey = "lock2hourExpiredKey.userId." + user_id + ".errorCode." + verifyCodeErr;
//谷歌验证码错误次数 的key
let totpCodeErrTimesKey = "errorTimesWithCode.userId." + user_id + ".errorCode." + totpCodeErr;
//验证码错误 次数 的key
let verifyCodeErrTimesKey = "errorTimesWithCode.userId." + user_id + ".errorCode." + verifyCodeErr;
//登陆密码错误 的key
let loginPwdErrKey = user_id + MUserRedisKey.USER_LOCK_SUFFIX;
return [totpCodeErrKey, verifyCodeErrKey, totpCodeErrTimesKey, verifyCodeErrTimesKey, loginPwdErrKey];
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment