Skip to content

Commit 4554fb9

Browse files
committed
update finish
1 parent 4d6efd5 commit 4554fb9

Some content is hidden

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

42 files changed

+336
-682
lines changed

app/api/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44

55
from fastapi import APIRouter
66

7-
from .endpoints import users, tokens, admins
7+
from .endpoints import users, tokens
88

99
api_router = APIRouter()
1010
api_router.include_router(users.router)
1111
api_router.include_router(tokens.router)
12-
api_router.include_router(admins.router)
Lines changed: 37 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,37 @@
1-
"""
2-
Dependency Module
3-
"""
4-
5-
from fastapi import Depends, HTTPException, status, Header
6-
7-
from app.core import security
8-
from app.core.structures import Role
9-
from app.database import Database, new_session, models
10-
11-
12-
async def get_db() -> Database:
13-
session = await new_session()
14-
try:
15-
yield Database(session)
16-
finally:
17-
await session.close()
18-
19-
20-
async def get_current_user(
21-
short_token: str = Header(),
22-
db: Database = Depends(get_db),
23-
) -> models.User:
24-
payload = security.tkn_manager.decode_short_token(short_token)
25-
if not (user := await db.user.get(payload.get("id"))):
26-
raise HTTPException(
27-
status_code=status.HTTP_401_UNAUTHORIZED, detail="User not found"
28-
)
29-
30-
return user
31-
32-
33-
async def admins_access(
34-
user: models.User = Depends(get_current_user),
35-
) -> None:
36-
if not user.role >= Role.ADMIN:
37-
raise HTTPException(
38-
status_code=status.HTTP_403_FORBIDDEN,
39-
detail="You do not have access to this section",
40-
)
1+
"""
2+
Dependencies
3+
"""
4+
5+
from fastapi import Depends, HTTPException, status, Header
6+
7+
from app import models
8+
from app.core import security
9+
from app.core.db import SessionLocal, Database
10+
11+
12+
async def get_db() -> Database:
13+
async with SessionLocal() as session:
14+
yield Database(session)
15+
16+
17+
async def get_current_user(
18+
short_token: str = Header(),
19+
db: Database = Depends(get_db),
20+
) -> models.User:
21+
payload = security.tkn_manager.decode_short_token(short_token)
22+
if not (user := await db.user.get(payload.get("id"))):
23+
raise HTTPException(
24+
status_code=status.HTTP_401_UNAUTHORIZED, detail="User not found"
25+
)
26+
27+
return user
28+
29+
30+
async def staff_access(
31+
user: models.User = Depends(get_current_user),
32+
) -> None:
33+
if not user.staff:
34+
raise HTTPException(
35+
status_code=status.HTTP_403_FORBIDDEN,
36+
detail="You do not have access to this section",
37+
)

app/api/endpoints/admins/__init__.py

Lines changed: 0 additions & 17 deletions
This file was deleted.

app/api/endpoints/admins/stats/__init__.py

Lines changed: 0 additions & 10 deletions
This file was deleted.

app/api/endpoints/admins/stats/users.py

Lines changed: 0 additions & 30 deletions
This file was deleted.

app/api/endpoints/tokens/auth.py

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
1-
from fastapi import APIRouter, Depends, Request
1+
from fastapi import APIRouter, Depends
22

3-
from app.api import depends
3+
from app import models
4+
from app.api import deps
45
from app.core import exps
6+
from app.core.db import Database
57
from app.core.security import tkn_manager, pwd_manager
6-
from app.database import Database
7-
from app.schemas.tokens import AuthToken
8-
from app.schemas.users import AuthUser
98

109
router = APIRouter()
1110

1211

13-
@router.post("/auth/", response_model=AuthToken)
14-
async def new_auth_token(
15-
data: AuthUser, request: Request, db: Database = Depends(depends.get_db)
16-
):
12+
@router.post("/auth/", response_model=models.AuthToken)
13+
async def new_auth_token(data: models.UserCreate, db: Database = Depends(deps.get_db)):
1714
"""
1815
Получить токен аутентификации:
1916
@@ -27,12 +24,4 @@ async def new_auth_token(
2724
raise exps.USER_INCORRECT_PASSWORD
2825

2926
auth_token = tkn_manager.create_auth_token({"id": user.id})
30-
await db.user_activity.new(
31-
user_id=user.id,
32-
action="new_auth_token",
33-
comment="Новый токен аутентификации",
34-
user_agent=request.headers.get("User-Agent"),
35-
ip=request.client.host,
36-
)
37-
await db.session.commit()
38-
return AuthToken(auth_token=auth_token)
27+
return models.AuthToken(auth_token=auth_token)

app/api/endpoints/tokens/pair.py

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,19 @@
1-
from fastapi import APIRouter, Depends, Request
1+
from fastapi import APIRouter
22

3-
from app.api import depends
4-
from app.core import exps
3+
from app import models
54
from app.core.security import tkn_manager
6-
from app.database import Database
7-
from app.schemas.tokens import PairTokens, AuthToken
85

96
router = APIRouter()
107

118

12-
@router.post("/pair/", response_model=PairTokens)
13-
async def new_pair_tokens(
14-
data: AuthToken, request: Request, db: Database = Depends(depends.get_db)
15-
):
9+
@router.post("/pair/", response_model=models.PairTokens)
10+
async def new_pair_tokens(data: models.AuthToken):
1611
"""
1712
Получить парные токены:
1813
1914
- **auth_token**: Токен аутентификации
2015
"""
2116
payload = tkn_manager.decode_auth_token(data.auth_token)
22-
if not (user := await db.user.get(payload.get("id"))):
23-
raise exps.USER_NOT_FOUND
2417
long_token = tkn_manager.create_long_token(payload)
2518
short_token = tkn_manager.create_short_token(payload)
26-
await db.user_activity.new(
27-
user_id=user.id,
28-
action="new_pair_tokens",
29-
comment="Новая пара токенов",
30-
user_agent=request.headers.get("User-Agent"),
31-
ip=request.client.host,
32-
)
33-
await db.session.commit()
34-
return PairTokens(long_token=long_token, short_token=short_token)
19+
return models.PairTokens(long_token=long_token, short_token=short_token)

app/api/endpoints/tokens/refresh.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,25 @@
1-
from fastapi import APIRouter, Depends, Request
1+
from fastapi import APIRouter, Depends
22

3-
from app.api import depends
3+
from app import models
4+
from app.api import deps
45
from app.core import exps
6+
from app.core.db import Database
57
from app.core.security import tkn_manager
6-
from app.database import Database
7-
from app.schemas.tokens import LongToken, ShortToken
88

99
router = APIRouter()
1010

1111

12-
@router.post("/refresh/", response_model=ShortToken)
12+
@router.post("/refresh/", response_model=models.ShortToken)
1313
async def refresh_short_token(
14-
data: LongToken, request: Request, db: Database = Depends(depends.get_db)
14+
data: models.LongToken, db: Database = Depends(deps.get_db)
1515
):
1616
"""
1717
Обновить короткий токен:
1818
1919
- **long_token**: Длинный токен
2020
"""
2121
payload = tkn_manager.decode_long_token(data.long_token)
22-
if not (user := await db.user.get(payload.get("id"))):
22+
if not await db.user.get(payload.get("id")):
2323
raise exps.USER_NOT_FOUND
2424
short_token = tkn_manager.create_short_token(payload)
25-
await db.user_activity.new(
26-
user.id,
27-
"refresh_short_token",
28-
"Обновлён короткий токен",
29-
user_agent=request.headers.get("User-Agent"),
30-
ip=request.client.host,
31-
)
32-
await db.session.commit()
33-
return ShortToken(short_token=short_token)
25+
return models.ShortToken(short_token=short_token)

app/api/endpoints/users/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
from fastapi import APIRouter
66

7-
from . import get, new
87
from app.core.structures import Tags
8+
from . import create, read
99

1010
router = APIRouter(prefix="/users", tags=[Tags.users])
11-
router.include_router(new.router)
12-
router.include_router(get.router)
11+
router.include_router(create.router)
12+
router.include_router(read.router)

app/api/endpoints/users/new.py renamed to app/api/endpoints/users/create.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44

55
from fastapi import APIRouter, Depends
66

7-
from app.api import depends
7+
from app import models
8+
from app.api import deps
89
from app.core import exps
10+
from app.core.db import Database
911
from app.core.security import pwd_manager
10-
from app.database import Database
11-
from app.schemas.users import GetUser, NewUser
1212

1313
router = APIRouter()
1414

1515

16-
@router.post("/", response_model=GetUser)
17-
async def new(data: NewUser, db: Database = Depends(depends.get_db)):
16+
@router.post("/", response_model=models.UserRead)
17+
async def create(data: models.UserCreate, db: Database = Depends(deps.get_db)):
1818
"""
1919
Создать нового пользователя:
2020

0 commit comments

Comments
 (0)