123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- import sys,os
- import uuid
- current_path = os.getcwd()
- sys.path.append(current_path)
- from config.site import SiteConfig
- from fastapi import APIRouter, Depends, Query
- from db.database import get_db
- from sqlalchemy.orm import Session
- from agent.models.web.response import StandardResponse,FAILED,SUCCESS
- from agent.models.web.request import BasicRequest
- from agent.libs.user import UserBusiness,SessionBusiness
- import logging
- router = APIRouter(prefix="/user", tags=["agent job interface"])
- logger = logging.getLogger(__name__)
- config = SiteConfig()
- @router.post("/session", response_model=StandardResponse)
- def register(request: BasicRequest, db: Session = Depends(get_db)):
- if request.action == 'register':
- biz = UserBusiness(db)
- request_username = request.get_param("username", "")
- request_password = request.get_param("password", "")
- user = biz.get_user_by_username(request_username)
- if user is not None:
- return StandardResponse(code=FAILED, message="user already exists")
- user = biz.create_user(request_username, request_password)
- if user is None:
- return StandardResponse(code=FAILED, message="create user failed")
- return StandardResponse(code=SUCCESS, message="create user success")
- elif request.action =='login':
- request_username = request.get_param("username", "")
- request_password = request.get_param("password", "")
- logger.info(f"login: {request_username} {request_password}")
- biz = UserBusiness(db)
- user = biz.get_user_by_username(request_username)
- if user is None:
- return StandardResponse(code=FAILED, message="user not exists")
- if not biz.verify_password(request_password, user.hashed_password):
- return StandardResponse(code=FAILED, message="password error")
- session = SessionBusiness(db)
- old_session = session.get_session_by_user_id(user.id)
- if old_session is not None:
- logger.info("delete old session")
- session.delete_session(old_session.session_id)
-
- logger.info("create new session")
- new_session = session.create_session(user)
- return StandardResponse(code=SUCCESS, message="login success", records=[new_session])
- elif request.action == "login_session":
- session_id = request.get_param("session_id", "")
- session = SessionBusiness(db)
- old_session = session.get_session(session_id)
- if old_session is None:
- return StandardResponse(code=FAILED, message="session not exists")
- return StandardResponse(code=SUCCESS, message="login success", records=[old_session])
- elif request.action == "logout":
- session_id = request.get_param("session_id", "")
- session = SessionBusiness(db)
- session.delete_session(session_id)
- return StandardResponse(code=SUCCESS, message="logout success")
- @router.get("/logout/{session_id}", response_model=StandardResponse)
- def logout(session_id: str, db: Session = Depends(get_db)):
- session = SessionBusiness(db)
- session.delete_session(session_id)
- return StandardResponse(code=SUCCESS, message="logout success")
- @router.post("/signin", response_model=StandardResponse)
- def signin(request: BasicRequest, db: Session = Depends(get_db)):
- if request.action == 'signin':
- biz = UserBusiness(db)
- request_username = request.get_param("username", "")
- request_password = request.get_param("password", "")
- request_fullname = request.get_param("full_name", "")
- request_email = request.get_param("email", "")
- user = biz.get_user_by_username(request_username)
- if user is not None:
- return StandardResponse(code=FAILED, message="用户名已存在")
- user = biz.create_user(request_username, request_password, request_fullname, request_email)
- if user is None:
- return StandardResponse(code=FAILED, message="创建用户失败")
- return StandardResponse(code=SUCCESS, message="成功创建用户,请继续登录")
- return StandardResponse(code=FAILED, message="invalid action")
- user_router = router
|