Skip to content

Commit 41397bd

Browse files
committed
Merge branch 'feature/passkey-login' into feature/ui-redesign
# Conflicts: # webui/src/components/ab-bangumi-card.vue # webui/src/components/ab-container.vue # webui/src/components/ab-fold-panel.vue # webui/src/components/ab-search-bar.vue # webui/src/components/basic/ab-search.vue # webui/src/components/basic/ab-tag.vue # webui/src/components/layout/ab-topbar.vue # webui/src/pages/index.vue # webui/src/pages/index/bangumi.vue # webui/src/pages/index/config.vue # webui/src/pages/index/player.vue # webui/src/pages/login.vue # webui/types/dts/auto-imports.d.ts # webui/vite.config.ts
2 parents 72679cc + 027222a commit 41397bd

53 files changed

Lines changed: 6922 additions & 6233 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

backend/pyproject.toml

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,64 @@
1+
[project]
2+
name = "auto-bangumi"
3+
version = "3.1.0"
4+
description = "AutoBangumi - Automated anime download manager"
5+
requires-python = ">=3.10"
6+
dependencies = [
7+
"anyio>=4.0.0",
8+
"beautifulsoup4>=4.12.0",
9+
"certifi>=2023.5.7",
10+
"charset-normalizer>=3.1.0",
11+
"click>=8.1.3",
12+
"fastapi>=0.109.0",
13+
"h11>=0.14.0",
14+
"idna>=3.4",
15+
"pydantic>=2.0.0",
16+
"sniffio>=1.3.0",
17+
"soupsieve>=2.4.1",
18+
"typing_extensions>=4.0.0",
19+
"urllib3>=2.0.3",
20+
"uvicorn>=0.27.0",
21+
"Jinja2>=3.1.2",
22+
"python-dotenv>=1.0.0",
23+
"python-jose>=3.3.0",
24+
"passlib>=1.7.4",
25+
"bcrypt>=4.0.1,<4.1",
26+
"python-multipart>=0.0.6",
27+
"sqlmodel>=0.0.14",
28+
"sse-starlette>=1.6.5",
29+
"semver>=3.0.1",
30+
"openai>=1.54.3",
31+
"httpx>=0.25.0",
32+
"httpx-socks>=0.9.0",
33+
"aiosqlite>=0.19.0",
34+
"sqlalchemy[asyncio]>=2.0.0",
35+
"webauthn>=2.0.0",
36+
]
37+
38+
[project.optional-dependencies]
39+
dev = [
40+
"pytest>=8.0.0",
41+
"pytest-asyncio>=0.23.0",
42+
"ruff>=0.1.0",
43+
"black>=24.0.0",
44+
]
45+
46+
[tool.pytest.ini_options]
47+
testpaths = ["src/test"]
48+
asyncio_mode = "auto"
49+
150
[tool.ruff]
251
select = [
352
# pycodestyle(E): https://beta.ruff.rs/docs/rules/#pycodestyle-e-w
4-
"E",
53+
"E",
554
# Pyflakes(F): https://beta.ruff.rs/docs/rules/#pyflakes-f
6-
"F",
55+
"F",
756
# isort(I): https://beta.ruff.rs/docs/rules/#isort-i
857
"I"
958
]
1059
ignore = [
1160
# E501: https://beta.ruff.rs/docs/rules/line-too-long/
12-
'E501',
61+
'E501',
1362
# F401: https://beta.ruff.rs/docs/rules/unused-import/
1463
# avoid unused imports lint in `__init__.py`
1564
'F401',

backend/requirements.txt

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
1-
anyio==3.7.0
1+
anyio>=4.0.0
22
bs4==0.0.1
3-
certifi==2023.5.7
4-
charset-normalizer==3.1.0
5-
click==8.1.3
6-
fastapi==0.97.0
7-
h11==0.14.0
8-
idna==3.4
9-
pydantic~=1.10
10-
PySocks==1.7.1
11-
qbittorrent-api==2023.9.53
12-
requests==2.31.0
13-
six==1.16.0
14-
sniffio==1.3.0
15-
soupsieve==2.4.1
16-
typing_extensions==4.6.3
17-
urllib3==2.0.3
18-
uvicorn==0.22.0
19-
attrdict==2.0.1
20-
Jinja2==3.1.2
21-
python-dotenv==1.0.0
22-
python-jose==3.3.0
23-
passlib==1.7.4
24-
bcrypt==4.0.1
25-
python-multipart==0.0.6
26-
sqlmodel==0.0.8
27-
sse-starlette==1.6.5
28-
semver==3.0.1
29-
openai==0.28.1
3+
certifi>=2023.5.7
4+
charset-normalizer>=3.1.0
5+
click>=8.1.3
6+
fastapi>=0.109.0
7+
h11>=0.14.0
8+
idna>=3.4
9+
pydantic>=2.0.0
10+
six>=1.16.0
11+
sniffio>=1.3.0
12+
soupsieve>=2.4.1
13+
typing_extensions>=4.0.0
14+
urllib3>=2.0.3
15+
uvicorn>=0.27.0
16+
Jinja2>=3.1.2
17+
python-dotenv>=1.0.0
18+
python-jose>=3.3.0
19+
passlib>=1.7.4
20+
bcrypt>=4.0.1
21+
python-multipart>=0.0.6
22+
sqlmodel>=0.0.14
23+
sse-starlette>=1.6.5
24+
semver>=3.0.1
25+
openai>=1.54.3
26+
httpx>=0.25.0
27+
httpx-socks>=0.9.0
28+
aiosqlite>=0.19.0
29+
sqlalchemy[asyncio]>=2.0.0
30+
webauthn>=2.0.0

backend/src/main.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ def create_app() -> FastAPI:
4040

4141
@app.get("/posters/{path:path}", tags=["posters"])
4242
def posters(path: str):
43+
# only allow access to files in the posters directory
44+
if not path.startswith("posters/"):
45+
return HTMLResponse(status_code=403)
4346
return FileResponse(f"data/posters/{path}")
4447

4548

backend/src/module/api/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from .bangumi import router as bangumi_router
55
from .config import router as config_router
66
from .log import router as log_router
7+
from .passkey import router as passkey_router
78
from .program import router as program_router
89
from .rss import router as rss_router
910
from .search import router as search_router
@@ -13,6 +14,7 @@
1314
# API 1.0
1415
v1 = APIRouter(prefix="/v1")
1516
v1.include_router(auth_router)
17+
v1.include_router(passkey_router)
1618
v1.include_router(log_router)
1719
v1.include_router(program_router)
1820
v1.include_router(bangumi_router)

backend/src/module/api/auth.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
@router.post("/login", response_model=dict)
2323
async def login(response: Response, form_data=Depends(OAuth2PasswordRequestForm)):
2424
user = User(username=form_data.username, password=form_data.password)
25-
resp = auth_user(user)
25+
resp = await auth_user(user)
2626
if resp.status:
2727
token = create_access_token(
2828
data={"sub": user.username}, expires_delta=timedelta(days=1)
@@ -58,7 +58,7 @@ async def logout(response: Response):
5858
@router.post("/update", response_model=dict, dependencies=[Depends(get_current_user)])
5959
async def update_user(user_data: UserUpdate, response: Response):
6060
old_user = active_user[0]
61-
if update_user_info(user_data, old_user):
61+
if await update_user_info(user_data, old_user):
6262
token = create_access_token(
6363
data={"sub": old_user}, expires_delta=timedelta(days=1)
6464
)

0 commit comments

Comments
 (0)