1
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
const Framework = require("../../framework/node-core-framework.js");
|
const Framework = require("../../framework/node-core-framework.js");
|
||||||
const dayjs = require('dayjs');
|
const dayjs = require('dayjs');
|
||||||
const email_service = require('../services/email_service.js');
|
const email_service = require('../services/email_service.js');
|
||||||
|
const redis = require('../../middleware/redis_proxy');
|
||||||
module.exports = {
|
module.exports = {
|
||||||
/**
|
/**
|
||||||
* @swagger
|
* @swagger
|
||||||
@@ -550,7 +550,7 @@ module.exports = {
|
|||||||
async function sendEmailCode(email) {
|
async function sendEmailCode(email) {
|
||||||
try {
|
try {
|
||||||
// 获取框架的 Redis 服务
|
// 获取框架的 Redis 服务
|
||||||
const redis_service = Framework.getServices().redisService;
|
|
||||||
|
|
||||||
// 统一邮箱地址为小写,避免大小写不一致导致的问题
|
// 统一邮箱地址为小写,避免大小写不一致导致的问题
|
||||||
const email_lower = email.toLowerCase().trim();
|
const email_lower = email.toLowerCase().trim();
|
||||||
@@ -569,7 +569,7 @@ async function sendEmailCode(email) {
|
|||||||
|
|
||||||
// 存储到 Redis,设置 5 分钟过期时间(300秒)
|
// 存储到 Redis,设置 5 分钟过期时间(300秒)
|
||||||
try {
|
try {
|
||||||
await redis_service.set(redis_key, JSON.stringify(code_data), 300);
|
await redis.set(redis_key, JSON.stringify(code_data), 300);
|
||||||
} catch (redis_error) {
|
} catch (redis_error) {
|
||||||
console.error(`[邮箱验证] Redis 存储失败: ${email_lower}`, redis_error);
|
console.error(`[邮箱验证] Redis 存储失败: ${email_lower}`, redis_error);
|
||||||
return {
|
return {
|
||||||
@@ -586,7 +586,7 @@ async function sendEmailCode(email) {
|
|||||||
if (!email_result.success) {
|
if (!email_result.success) {
|
||||||
// 如果邮件发送失败,删除已生成的验证码
|
// 如果邮件发送失败,删除已生成的验证码
|
||||||
try {
|
try {
|
||||||
await redis_service.del(redis_key);
|
await redis.del(redis_key);
|
||||||
} catch (del_error) {
|
} catch (del_error) {
|
||||||
console.error(`[邮箱验证] 删除验证码失败:`, del_error);
|
console.error(`[邮箱验证] 删除验证码失败:`, del_error);
|
||||||
}
|
}
|
||||||
@@ -621,7 +621,7 @@ async function sendEmailCode(email) {
|
|||||||
async function verifyEmailCode(email, code) {
|
async function verifyEmailCode(email, code) {
|
||||||
try {
|
try {
|
||||||
// 获取框架的 Redis 服务
|
// 获取框架的 Redis 服务
|
||||||
const redis_service = Framework.getServices().redisService;
|
const redis = Framework.getServices().redisService;
|
||||||
|
|
||||||
// 统一邮箱地址为小写,避免大小写不一致导致的问题
|
// 统一邮箱地址为小写,避免大小写不一致导致的问题
|
||||||
const email_lower = email.toLowerCase().trim();
|
const email_lower = email.toLowerCase().trim();
|
||||||
@@ -634,7 +634,7 @@ async function verifyEmailCode(email, code) {
|
|||||||
// 从 Redis 获取验证码
|
// 从 Redis 获取验证码
|
||||||
let cached_str;
|
let cached_str;
|
||||||
try {
|
try {
|
||||||
cached_str = await redis_service.get(redis_key);
|
cached_str = await redis.get(redis_key);
|
||||||
} catch (redis_error) {
|
} catch (redis_error) {
|
||||||
console.error(`[邮箱验证] Redis 获取失败:`, redis_error);
|
console.error(`[邮箱验证] Redis 获取失败:`, redis_error);
|
||||||
return {
|
return {
|
||||||
@@ -658,7 +658,7 @@ async function verifyEmailCode(email, code) {
|
|||||||
} catch (parse_error) {
|
} catch (parse_error) {
|
||||||
console.error(`[邮箱验证] 解析验证码数据失败:`, parse_error);
|
console.error(`[邮箱验证] 解析验证码数据失败:`, parse_error);
|
||||||
try {
|
try {
|
||||||
await redis_service.del(redis_key);
|
await redis.del(redis_key);
|
||||||
} catch (del_error) {
|
} catch (del_error) {
|
||||||
console.error(`[邮箱验证] 删除异常数据失败:`, del_error);
|
console.error(`[邮箱验证] 删除异常数据失败:`, del_error);
|
||||||
}
|
}
|
||||||
@@ -681,7 +681,7 @@ async function verifyEmailCode(email, code) {
|
|||||||
|
|
||||||
// 验证成功后删除缓存
|
// 验证成功后删除缓存
|
||||||
try {
|
try {
|
||||||
await redis_service.del(redis_key);
|
await redis.del(redis_key);
|
||||||
} catch (del_error) {
|
} catch (del_error) {
|
||||||
console.error(`[邮箱验证] 删除验证码失败:`, del_error);
|
console.error(`[邮箱验证] 删除验证码失败:`, del_error);
|
||||||
}
|
}
|
||||||
|
|||||||
22
api/middleware/redis_proxy.js
Normal file
22
api/middleware/redis_proxy.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/**
|
||||||
|
* Redis 服务代理
|
||||||
|
* 从 Framework 获取 redisService
|
||||||
|
*/
|
||||||
|
|
||||||
|
const Framework = require("../framework/node-core-framework.js");
|
||||||
|
|
||||||
|
module.exports = new Proxy({}, {
|
||||||
|
get(_, prop) {
|
||||||
|
const services = Framework.getServices();
|
||||||
|
const redisService = services?.redisService;
|
||||||
|
|
||||||
|
if (!redisService) {
|
||||||
|
throw new Error('Redis service not available. Framework may not be initialized.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return typeof redisService[prop] === 'function'
|
||||||
|
? redisService[prop].bind(redisService)
|
||||||
|
: redisService[prop];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Reference in New Issue
Block a user