增加微信手机号登录。
This commit is contained in:
parent
e4f7c11c28
commit
871260de3f
@ -1,6 +1,6 @@
|
||||
from fastapi import APIRouter, HTTPException, Depends, Response, Body
|
||||
from sqlalchemy.orm import Session
|
||||
from app.models.user import UserLogin, UserInfo, VerifyCodeRequest, UserDB, UserUpdate, UserRole, UserPasswordLogin, ReferralUserInfo, generate_user_code
|
||||
from app.models.user import UserLogin, UserInfo, ResetPasswordRequest,PhoneLoginRequest,VerifyCodeRequest, UserDB, UserUpdate, UserRole, UserPasswordLogin, ReferralUserInfo, generate_user_code
|
||||
from app.models.coupon import CouponDB, UserCouponDB
|
||||
from app.api.deps import get_current_user, get_admin_user
|
||||
from app.models.database import get_db
|
||||
@ -15,6 +15,7 @@ from app.core.security import create_access_token, set_jwt_cookie, clear_jwt_coo
|
||||
from app.core.response import success_response, error_response, ResponseModel
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import List
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
router = APIRouter()
|
||||
@ -31,14 +32,6 @@ redis_client = redis.Redis(
|
||||
# 初始化短信客户端
|
||||
client = UniSMS(settings.UNI_APP_ID)
|
||||
|
||||
# 添加 Mock 登录请求模型
|
||||
class MockLoginRequest(BaseModel):
|
||||
phone: str = Field(..., pattern="^1[3-9]\d{9}$")
|
||||
|
||||
class ResetPasswordRequest(BaseModel):
|
||||
user_id: int
|
||||
new_password: str = Field(..., min_length=6, max_length=20)
|
||||
|
||||
@router.post("/send-code")
|
||||
async def send_verify_code(request: VerifyCodeRequest):
|
||||
"""发送验证码"""
|
||||
@ -135,15 +128,13 @@ async def get_user_info(
|
||||
"""获取用户信息"""
|
||||
return success_response(data=UserInfo.model_validate(current_user))
|
||||
|
||||
@router.post("/mock-login", response_model=ResponseModel)
|
||||
async def mock_login(
|
||||
request: MockLoginRequest,
|
||||
@router.post("/phone-login", response_model=ResponseModel)
|
||||
async def phone_login(
|
||||
request: PhoneLoginRequest,
|
||||
db: Session = Depends(get_db),
|
||||
response: Response = None
|
||||
):
|
||||
"""Mock登录接口(仅用于开发测试)"""
|
||||
if not settings.DEBUG:
|
||||
return error_response(code=403, message="该接口仅在开发环境可用")
|
||||
"""手机号登录 (用于微信)"""
|
||||
|
||||
# 查找或创建用户
|
||||
user = db.query(UserDB).filter(UserDB.phone == request.phone).first()
|
||||
@ -155,6 +146,7 @@ async def mock_login(
|
||||
username=f"user_{request.phone[-4:]}",
|
||||
phone=request.phone,
|
||||
user_code=user_code,
|
||||
referral_code=request.referral_code,
|
||||
roles=[UserRole.USER]
|
||||
)
|
||||
db.add(user)
|
||||
|
||||
@ -57,6 +57,14 @@ class UserInfo(BaseModel):
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
class PhoneLoginRequest(BaseModel):
|
||||
phone: str = Field(..., pattern="^1[3-9]\d{9}$")
|
||||
referral_code: Optional[str] = Field(None, min_length=6, max_length=6)
|
||||
|
||||
class ResetPasswordRequest(BaseModel):
|
||||
user_id: int
|
||||
new_password: str = Field(..., min_length=6, max_length=20)
|
||||
|
||||
class VerifyCodeRequest(BaseModel):
|
||||
phone: str = Field(..., pattern="^1[3-9]\d{9}$")
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user