You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.2 KiB
30 lines
1.2 KiB
1 year ago
|
import uuid
|
||
|
from fastapi import APIRouter, Request
|
||
|
from config.env import RedisInitKeyConfig
|
||
|
from module_admin.service.captcha_service import *
|
||
|
from module_admin.entity.vo.login_vo import CaptchaCode
|
||
|
from utils.response_util import *
|
||
|
from utils.log_util import *
|
||
|
from datetime import timedelta
|
||
|
|
||
|
|
||
|
captchaController = APIRouter()
|
||
|
|
||
|
|
||
|
@captchaController.get("/captchaImage")
|
||
|
async def get_captcha_image(request: Request):
|
||
|
try:
|
||
|
captcha_enabled = True if await request.app.state.redis.get(f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:sys.account.captchaEnabled") == 'true' else False
|
||
|
session_id = str(uuid.uuid4())
|
||
|
captcha_result = CaptchaService.create_captcha_image_service()
|
||
|
image = captcha_result[0]
|
||
|
computed_result = captcha_result[1]
|
||
|
await request.app.state.redis.set(f"{RedisInitKeyConfig.CAPTCHA_CODES.get('key')}:{session_id}", computed_result, ex=timedelta(minutes=2))
|
||
|
logger.info(f'编号为{session_id}的会话获取图片验证码成功')
|
||
|
return ResponseUtil.success(
|
||
|
model_content=CaptchaCode(captchaEnabled=captcha_enabled, img=image, uuid=session_id)
|
||
|
)
|
||
|
except Exception as e:
|
||
|
logger.exception(e)
|
||
|
return ResponseUtil.error(msg=str(e))
|