From 3a271cd11a45e3a901ed3e93936e168f33695324 Mon Sep 17 00:00:00 2001 From: qiangyanwen <508737091@qq.com> Date: Sun, 29 May 2022 12:10:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/user_api.py | 17 ++++++++++++++++- logs/automation_info.log | 32 ++++++++++++++++++++++++++++++++ repository/user_repository.py | 12 +++++++++++- 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/api/user_api.py b/api/user_api.py index 64a927c..adb3707 100644 --- a/api/user_api.py +++ b/api/user_api.py @@ -6,12 +6,18 @@ from fastapi import APIRouter, Body, Depends, Query from typing_extensions import Annotated + +from config import settings +from config.factory import AutomationResponse from entity.user_entity import UserFrom from sqlalchemy.orm import Session from config.db_session import get_db +from repository.user_repository import login_user from service.user_service import user_service +from utils.jwt_token import create_token from utils.response import success_200,error_211 - +from fastapi.security import OAuth2PasswordRequestForm +from datetime import timedelta router = APIRouter(prefix="/api", tags=["用户模块"]) @@ -22,3 +28,12 @@ def register(user: Annotated[UserFrom, Body(...)], db: Session = Depends(get_db) return success_200(data=user, message="用户注册成功") return error_211(message=user) + +@router.post("/login", summary="用户登录", name="用户登录") +def login(user: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)): + user = login_user(db, user.username, user.password) + if user[0]: + expire_time = timedelta(minutes=settings.ACCESS.ACCESS_TOKEN_EXPIRE_MINUTES) + token = create_token(AutomationResponse.model_to_dict(user[1], "password"), expire_time) + return {"code": 200, "message": "登录成功", "access_token": token, "user": user[1], "token_type": "Bearer"} + return error_211(message=user[1]) diff --git a/logs/automation_info.log b/logs/automation_info.log index c47ec89..a2e9de2 100644 --- a/logs/automation_info.log +++ b/logs/automation_info.log @@ -372,3 +372,35 @@ 2022-05-29 11:57:02 | MainThread:8676804096 | :__init__:22 - INFO - loading environment configuration file 2022-05-29 11:57:36 | MainThread:8639112704 | :__init__:16 - INFO - start the automation service development environment 2022-05-29 11:57:36 | MainThread:8639112704 | :__init__:22 - INFO - loading environment configuration file +2022-05-29 11:58:43 | MainThread:8643393024 | :__init__:16 - INFO - start the automation service development environment +2022-05-29 11:58:43 | MainThread:8643393024 | :__init__:22 - INFO - loading environment configuration file +2022-05-29 11:58:43 | MainThread:8643393024 | create_app:app:15 - INFO - loading application configuration +2022-05-29 11:58:43 | MainThread:8643393024 | create_app:app:16 - INFO - create FastApi app object +2022-05-29 11:58:43 | MainThread:8643393024 | create_app:app:25 - INFO - Adding a New route success +2022-05-29 11:58:43 | MainThread:8643393024 | create_app:app:26 - INFO - Start registering middleware +2022-05-29 11:58:43 | MainThread:8643393024 | create_app:app:36 - INFO - Application started successfully:CORSMiddleware +2022-05-29 11:58:43 | MainThread:8643393024 | create_app:app:37 - INFO - Server address http://192.168.1.107:8000 +2022-05-29 11:58:43 | MainThread:8643393024 | create_app:app:38 - INFO - Api doc address http://192.168.1.107:8000/docs +2022-05-29 11:58:43 | MainThread:8643393024 | create_app:app:39 - INFO - Api redoc address http://192.168.1.107:8000/redoc +2022-05-29 11:58:44 | MainThread:8627394048 | :__init__:16 - INFO - start the automation service development environment +2022-05-29 11:58:44 | MainThread:8627394048 | :__init__:22 - INFO - loading environment configuration file +2022-05-29 11:58:44 | MainThread:8627394048 | create_app:app:15 - INFO - loading application configuration +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:16 - INFO - create FastApi app object +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:25 - INFO - Adding a New route success +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:26 - INFO - Start registering middleware +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:36 - INFO - Application started successfully:CORSMiddleware +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:37 - INFO - Server address http://192.168.1.107:8000 +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:38 - INFO - Api doc address http://192.168.1.107:8000/docs +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:39 - INFO - Api redoc address http://192.168.1.107:8000/redoc +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:15 - INFO - loading application configuration +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:16 - INFO - create FastApi app object +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:25 - INFO - Adding a New route success +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:26 - INFO - Start registering middleware +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:36 - INFO - Application started successfully:CORSMiddleware +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:37 - INFO - Server address http://192.168.1.107:8000 +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:38 - INFO - Api doc address http://192.168.1.107:8000/docs +2022-05-29 11:58:45 | MainThread:8627394048 | create_app:app:39 - INFO - Api redoc address http://192.168.1.107:8000/redoc +2022-05-29 12:10:12 | MainThread:8635991552 | :__init__:16 - INFO - start the automation service development environment +2022-05-29 12:10:12 | MainThread:8635991552 | :__init__:22 - INFO - loading environment configuration file +2022-05-29 12:10:17 | MainThread:8604014080 | :__init__:16 - INFO - start the automation service development environment +2022-05-29 12:10:17 | MainThread:8604014080 | :__init__:22 - INFO - loading environment configuration file diff --git a/repository/user_repository.py b/repository/user_repository.py index a7d3704..7f6b2d3 100644 --- a/repository/user_repository.py +++ b/repository/user_repository.py @@ -9,7 +9,9 @@ from sqlalchemy.orm import Session from config.db_session import db_add from config.factory import AutomationResponse from entity.user_entity import UserFrom +from enums.enums import RegisterUser from models.model import User +from utils.jwt_token import get_md5_pwd def check_user_email(db: Session, user: UserFrom) -> bool: @@ -19,7 +21,15 @@ def check_user_email(db: Session, user: UserFrom) -> bool: return False -def register_user(db: Session, user: UserFrom)->dict: +def register_user(db: Session, user: UserFrom) -> dict: us_er = User(**user.dict()) db_add(db, us_er) return AutomationResponse.model_to_dict(us_er, "password") + + +def login_user(db: Session, username, password): + password = get_md5_pwd(password) + user = db.query(User).filter(User.username == username, User.password == password).first() + if user: + return True, user + return False, RegisterUser.LOGIN_USER_ERROR.value