feat: 新增用户注册模块
This commit is contained in:
@@ -15,6 +15,8 @@ captchaController = APIRouter()
|
||||
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
|
||||
register_enabled = True if await request.app.state.redis.get(
|
||||
f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:sys.account.registerUser") == 'true' else False
|
||||
session_id = str(uuid.uuid4())
|
||||
captcha_result = CaptchaService.create_captcha_image_service()
|
||||
image = captcha_result[0]
|
||||
@@ -22,7 +24,7 @@ async def get_captcha_image(request: Request):
|
||||
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)
|
||||
model_content=CaptchaCode(captchaEnabled=captcha_enabled, registerEnabled=register_enabled, img=image, uuid=session_id)
|
||||
)
|
||||
except Exception as e:
|
||||
logger.exception(e)
|
||||
|
@@ -82,6 +82,21 @@ async def get_login_user_routers(request: Request, current_user: CurrentUserMode
|
||||
return ResponseUtil.error(msg=str(e))
|
||||
|
||||
|
||||
@loginController.post("/register", response_model=CrudResponseModel)
|
||||
async def register_user(request: Request, user_register: UserRegister, query_db: Session = Depends(get_db)):
|
||||
try:
|
||||
user_register_result = await register_user_services(request, query_db, user_register)
|
||||
if user_register_result.is_success:
|
||||
logger.info(user_register_result.message)
|
||||
return ResponseUtil.success(data=user_register_result, msg=user_register_result.message)
|
||||
else:
|
||||
logger.warning(user_register_result.message)
|
||||
return ResponseUtil.failure(msg=user_register_result.message)
|
||||
except Exception as e:
|
||||
logger.exception(e)
|
||||
return ResponseUtil.error(msg=str(e))
|
||||
|
||||
|
||||
@loginController.post("/getSmsCode", response_model=SmsCode)
|
||||
async def get_sms_code(request: Request, user: ResetUserModel, query_db: Session = Depends(get_db)):
|
||||
try:
|
||||
|
@@ -14,6 +14,16 @@ class UserLogin(BaseModel):
|
||||
captcha_enabled: Optional[bool] = None
|
||||
|
||||
|
||||
class UserRegister(BaseModel):
|
||||
model_config = ConfigDict(alias_generator=to_camel)
|
||||
|
||||
username: str
|
||||
password: str
|
||||
confirm_password: str
|
||||
code: Optional[str] = None
|
||||
uuid: Optional[str] = None
|
||||
|
||||
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
token_type: str
|
||||
@@ -23,6 +33,7 @@ class CaptchaCode(BaseModel):
|
||||
model_config = ConfigDict(alias_generator=to_camel)
|
||||
|
||||
captcha_enabled: bool
|
||||
register_enabled: bool
|
||||
img: str
|
||||
uuid: str
|
||||
|
||||
|
@@ -262,6 +262,41 @@ class LoginService:
|
||||
return router_list
|
||||
|
||||
|
||||
async def register_user_services(request: Request, query_db: Session, user_register: UserRegister):
|
||||
"""
|
||||
用户注册services
|
||||
:param request: Request对象
|
||||
:param query_db: orm对象
|
||||
:param user_register: 注册用户对象
|
||||
:return: 注册结果
|
||||
"""
|
||||
register_enabled = True if await request.app.state.redis.get(f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:sys.account.registerUser") == 'true' else False
|
||||
captcha_enabled = True if await request.app.state.redis.get(f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:sys.account.captchaEnabled") == 'true' else False
|
||||
if user_register.password == user_register.confirm_password:
|
||||
if register_enabled:
|
||||
if captcha_enabled:
|
||||
captcha_value = await request.app.state.redis.get(f"{RedisInitKeyConfig.CAPTCHA_CODES.get('key')}:{user_register.uuid}")
|
||||
if not captcha_value:
|
||||
logger.warning("验证码已失效")
|
||||
return CrudResponseModel(is_success=False, message='验证码已失效')
|
||||
elif user_register.code != str(captcha_value):
|
||||
logger.warning("验证码错误")
|
||||
return CrudResponseModel(is_success=False, message='验证码错误')
|
||||
add_user = AddUserModel(
|
||||
userName=user_register.username,
|
||||
nickName=user_register.username,
|
||||
password=PwdUtil.get_password_hash(user_register.password)
|
||||
)
|
||||
result = UserService.add_user_services(query_db, add_user)
|
||||
return result
|
||||
else:
|
||||
result = dict(is_success=False, message='注册程序已关闭,禁止注册')
|
||||
else:
|
||||
result = dict(is_success=False, message='两次输入的密码不一致')
|
||||
|
||||
return CrudResponseModel(**result)
|
||||
|
||||
|
||||
async def get_sms_code_services(request: Request, query_db: Session, user: ResetUserModel):
|
||||
"""
|
||||
获取短信验证码service
|
||||
|
@@ -140,6 +140,7 @@ function handleLogin() {
|
||||
function getCode() {
|
||||
getCodeImg().then(res => {
|
||||
captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled;
|
||||
register.value = res.registerEnabled === undefined ? false : res.registerEnabled;
|
||||
if (captchaEnabled.value) {
|
||||
codeUrl.value = "data:image/gif;base64," + res.img;
|
||||
loginForm.value.uuid = res.uuid;
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="register">
|
||||
<el-form ref="registerRef" :model="registerForm" :rules="registerRules" class="register-form">
|
||||
<h3 class="title">若依后台管理系统</h3>
|
||||
<h3 class="title">vfadmin后台管理系统</h3>
|
||||
<el-form-item prop="username">
|
||||
<el-input
|
||||
v-model="registerForm.username"
|
||||
@@ -70,7 +70,7 @@
|
||||
</el-form>
|
||||
<!-- 底部 -->
|
||||
<div class="el-register-footer">
|
||||
<span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>
|
||||
<span>Copyright © 2024 insistence.tech All Rights Reserved.</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
Reference in New Issue
Block a user