37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from fastapi import Depends, HTTPException
|
||
from provider.loveac.authme import fetch_user_by_token
|
||
from provider.aufe.jwc import JWCClient
|
||
from provider.aufe.client import AUFEConnection
|
||
from database.user import User
|
||
|
||
|
||
async def get_jwc_client(
|
||
user: User = Depends(fetch_user_by_token),
|
||
) -> JWCClient:
|
||
"""
|
||
获取教务处客户端
|
||
:param authme_request: AuthmeRequest
|
||
:return: JWCClient
|
||
"""
|
||
|
||
if not user:
|
||
raise HTTPException(status_code=400, detail="无效的令牌或用户不存在")
|
||
aufe = AUFEConnection.create_or_get_connection("vpn.aufe.edu.cn", user.userid)
|
||
if not aufe.login_status():
|
||
userid = user.userid
|
||
easyconnect_password = user.easyconnect_password
|
||
if not await aufe.login(userid, easyconnect_password):
|
||
raise HTTPException(
|
||
status_code=400,
|
||
detail="VPN登录失败,请检查用户名和密码",
|
||
)
|
||
if not aufe.uaap_login_status():
|
||
userid = user.userid
|
||
password = user.password
|
||
if not await aufe.uaap_login(userid, password):
|
||
raise HTTPException(
|
||
status_code=400,
|
||
detail="大学登录失败,请检查用户名和密码",
|
||
)
|
||
return JWCClient(aufe)
|