doclib.py 1.0 KB

123456789101112131415161718192021222324252627
  1. """门户进入文档库。"""
  2. from fastapi import APIRouter, Depends
  3. from app.core.auth import get_current_user
  4. from app.core.response import error_response, success_response
  5. from app.services.doclib_sso import consume_ticket, open_session
  6. router = APIRouter(tags=["文档库"])
  7. @router.post("/web/doclib/sso")
  8. def doclib_sso(user: dict = Depends(get_current_user)):
  9. """当前门户用户换取文档库一次性进入地址。所有已登录角色都可调用。"""
  10. try:
  11. data = open_session(user["user_id"], user.get("real_name") or user.get("username") or "")
  12. except Exception as exc:
  13. return error_response(502, str(exc) or "无法连接文档库")
  14. return success_response(data)
  15. @router.get("/public/doclib/exchange")
  16. def doclib_exchange(code: str = ""):
  17. """文档库页面用一次性票据换登录会话。票据 60 秒内只能用一次。"""
  18. login = consume_ticket(code)
  19. if not login:
  20. return error_response(400, "进入票据无效或已过期")
  21. return success_response(login)