Web UI公共Cookie管理增加暂停使用功能

This commit is contained in:
CMHopeSunshine 2022-11-11 19:24:27 +08:00
parent 9afea36787
commit d9398c2fb2
5 changed files with 43 additions and 14 deletions

View File

@ -13,7 +13,7 @@ class PublicCookie(Model):
cookie: str = fields.TextField()
"""cookie内容"""
status: int = fields.IntField(default=1)
"""cookie状态0为疑似失效1为可用2为每日限制"""
"""cookie状态0为疑似失效1为可用2为每日限制3为暂停使用"""
class Meta:
table = 'public_cookie'

View File

@ -184,7 +184,7 @@ async def check_retcode(data: dict, cookie_info, cookie_type: str, user_id: str,
logger.info('原神Cookie', f'UID<m>{cookie_info.uid}</m>使用的缓存cookie已达到每日30次查询上限')
return False
else:
if cookie_type == 'public':
if cookie_type == 'public' and data['retcode'] != 1034:
await CookieCache.update_or_create(uid=uid, defaults={'cookie': cookie_info.cookie})
return True

View File

@ -5,7 +5,7 @@ from fastapi import APIRouter
from fastapi.responses import JSONResponse
from pydantic import BaseModel
from LittlePaimon.database import PublicCookie, PrivateCookie, LastQuery
from LittlePaimon.database import PublicCookie, PrivateCookie, LastQuery, CookieCache
from LittlePaimon.utils.api import get_bind_game_info, get_stoken_by_cookie
from .utils import authentication
@ -49,6 +49,26 @@ async def get_public_cookies(status: Optional[int] = None):
return await PublicCookie.filter(status=status).values()
@route.post('/set_public_cookie', response_class=JSONResponse, dependencies=[authentication()])
async def set_public_cookie(id: int):
cookie = await PublicCookie.get_or_none(id=id)
if cookie.status != 3:
await CookieCache.filter(cookie=cookie.cookie).delete()
cookie.status = 3
await cookie.save()
return {
'status': 0,
'msg': f'{id}号公共Cookie暂停使用成功'
}
else:
cookie.status = 1
await cookie.save()
return {
'status': 0,
'msg': f'{id}号公共Cookie恢复使用成功'
}
@route.get('/get_private_cookies', response_class=JSONResponse, dependencies=[authentication()])
async def get_private_cookies(
page: int = 1,
@ -83,7 +103,9 @@ async def get_private_cookie(id: int):
@route.delete('/delete_cookie', response_class=JSONResponse, dependencies=[authentication()])
async def delete_public_cookie(cookie_type: str, id: int):
if cookie_type == 'public':
await PublicCookie.filter(id=id).delete()
cookie = await PublicCookie.get(id=id)
await CookieCache.filter(cookie=cookie.cookie).delete()
await cookie.delete()
return {'status': 0, 'msg': f'{id}号公共Cookie删除成功'}
else:
await PrivateCookie.filter(id=id).delete()

View File

@ -1,9 +1,11 @@
status_map = {
0: '疑似失效',
1: '可用',
2: '达到每日限制'
2: '达到每日限制',
3: '暂停使用'
}
status_filter = {
'options': [{'label': '疑似失效', 'value': 0},
{'label': '可用', 'value': 1},
{'label': '达到每日限制', 'value': 2}]}
{'label': '达到每日限制', 'value': 2},
{'label': '暂停使用', 'value': 3}]}

View File

@ -5,17 +5,22 @@ from .constants import status_map, status_filter
add_button = ActionType.Dialog(label='添加公共Cookie',
level=LevelEnum.primary,
dialog=Dialog(title='添加公共Cookie',
body=Form(api='post:/LittlePaimon/api/add_cookie?cookie_type=public&force=false',
body=[Textarea(name='cookie', label='Cookie', required=True,
showCounter=False)])))
body=Form(
api='post:/LittlePaimon/api/add_cookie?cookie_type=public&force=false',
body=[Textarea(name='cookie', label='Cookie', required=True,
showCounter=False)])))
add_button_force = ActionType.Dialog(label='强制添加公共Cookie',
level=LevelEnum.warning,
confirmText='强制添加公共Cookie不会对Cookie有效性进行校验如果你不确定是否正确有效请不要强制添加。',
dialog=Dialog(title='强制添加公共Cookie',
body=Form(api='post:/LittlePaimon/api/add_cookie?cookie_type=public&force=true',
body=[
Textarea(name='cookie', label='Cookie', required=True,
showCounter=False)])))
body=Form(
api='post:/LittlePaimon/api/add_cookie?cookie_type=public&force=true',
body=[
Textarea(name='cookie', label='Cookie', required=True,
showCounter=False)])))
set_button = ActionType.Ajax(label='${status == 3 ? "恢复使用" : "暂停使用"}', level=LevelEnum.warning,
confirmText='将该公共Cookie设为${status == 3 ? "恢复使用恢复后该Cookie将回到可用状态" : "暂停使用暂停后在查询时将不使用该Cookie"}',
api='post:/LittlePaimon/api/set_public_cookie?id=${id}')
delete_button = ActionType.Ajax(label='删除', level=LevelEnum.danger,
confirmText='确认删除该公共Cookie',
api='delete:/LittlePaimon/api/delete_cookie?cookie_type=public&id=${id}')
@ -27,7 +32,7 @@ table = TableCRUD(mode='table',
TableColumn(label='Cookie', name='cookie', width='64%'),
TableColumn(type='mapping', label='状态', name='status', filterable=status_filter,
map=status_map, width='12%'),
ColumnOperation(label='操作', buttons=[delete_button], width='16%')],
ColumnOperation(label='操作', buttons=[set_button, delete_button], width='16%')],
headerToolbar=[add_button, add_button_force])
page = PageSchema(label='公共Cookie', icon='fa fa-key', url='/cookie/public',
schema=Page(title='公共Cookie', body=table))