async def create_upload_file(request: Request): form = await request.form() file = form.get('file') key = str(uuid.uuid4()) data = await file.read() path = os.path.join(BASE_DIR, f'static/images/{key}') with open(path, 'wb') as f: f.write(data) return success_response({'key': key})
async def regist(data: Request): form = UserRegistForm(data=await data.json()) if await form.is_valid(): user = await form.create(form.validated_data) del user['password'] token = gen_token(user) content = success_response({'token': token}) response = JSONResponse(content=content) response.set_cookie('token', token, max_age=7200) return response return {'code': 400, 'message': form.errors}
async def login(data: Login): print(data) user = await mongodb.users.find_one( { 'email': data.email, 'password': gen_password(data.password) }, {'password': 0}) if not user: return { 'code': 400, 'message': '用户名或密码错误', } token = gen_token(user) content = success_response({'token': token}) response = JSONResponse(content=content) response.set_cookie('token', token, max_age=7200) return response
async def update_password(data: UpdatePassword): is_valid, userinfo = check_token(data.token) if not is_valid: return {'code': 400, 'message': "链接已失效"} if data.password != data.password_ensure: return {'code': 400, 'message': "密码不匹配"} await mongodb.users.update_one( {'email': userinfo['email']}, {'$set': { 'password': gen_password(data.password) }}) userinfo = await mongodb.users.find_one({'email': userinfo['email']}, {'password': 0}) token = gen_token(userinfo) content = success_response({'token': token}) response = JSONResponse(content=content) response.set_cookie('token', token, max_age=7200) return response
async def send_email(email: str): code = f'{random.randint(100000,999999):06}' redis.set(f'{email}_code', code, ex=300) # send_mail_code(email, code) return success_response({'email_code': code})
async def upload_token(): return success_response({"token": generate_upload_token()})
async def reset_password(email: str): token = gen_mail_token({'email': email}) send_mail_reset(email, token) return success_response({'token': token})