add verify_admin_token
This commit is contained in:
+1
-1
@@ -3,7 +3,7 @@ from api.routes import users, keys, coupons, servers, tariffs, gifts, referrals,
|
||||
|
||||
app = FastAPI(
|
||||
title="SoloBot API (preAlpha)",
|
||||
version="0.1.1",
|
||||
version="0.1.2",
|
||||
docs_url="/api/docs",
|
||||
redoc_url="/api/redoc",
|
||||
openapi_url="/api/openapi.json"
|
||||
|
||||
+21
-1
@@ -2,7 +2,7 @@ from fastapi import Depends, HTTPException, Path
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy import select
|
||||
|
||||
from database.models import Key, Admin
|
||||
from database.models import Key, Admin, Tariff
|
||||
from api.schemas.keys import KeyBase, KeyResponse, KeyUpdate
|
||||
from api.routes.base_crud import generate_crud_router
|
||||
from api.depends import get_session, verify_admin_token
|
||||
@@ -47,3 +47,23 @@ async def delete_key_by_email(
|
||||
except Exception as e:
|
||||
logger.error(f"[API] Ошибка при удалении ключа: {e}")
|
||||
raise HTTPException(status_code=500, detail="Ошибка при удалении ключа")
|
||||
|
||||
|
||||
@router.get("/routers/{tg_id}", response_model=list[KeyResponse])
|
||||
async def get_router_keys_by_tg_id(
|
||||
tg_id: int = Path(..., description="Telegram ID пользователя"),
|
||||
session: AsyncSession = Depends(get_session),
|
||||
admin: Admin = Depends(verify_admin_token),
|
||||
):
|
||||
tariffs_result = await session.execute(
|
||||
select(Tariff.id).where(Tariff.group_code == "routers")
|
||||
)
|
||||
tariff_ids = [row[0] for row in tariffs_result.all()]
|
||||
if not tariff_ids:
|
||||
return []
|
||||
|
||||
keys_result = await session.execute(
|
||||
select(Key).where(Key.tg_id == tg_id, Key.tariff_id.in_(tariff_ids))
|
||||
)
|
||||
keys = keys_result.scalars().all()
|
||||
return keys
|
||||
|
||||
+14
-10
@@ -25,7 +25,8 @@ router.include_router(
|
||||
enabled_methods=["get_all", "get_one", "delete"]
|
||||
),
|
||||
prefix="/payments",
|
||||
tags=["Payments"]
|
||||
tags=["Payments"],
|
||||
dependencies=[Depends(verify_admin_token)]
|
||||
)
|
||||
|
||||
|
||||
@@ -52,7 +53,8 @@ router.include_router(
|
||||
enabled_methods=["get_all", "get_one", "delete"]
|
||||
),
|
||||
prefix="/referrals",
|
||||
tags=["Referrals"]
|
||||
tags=["Referrals"],
|
||||
dependencies=[Depends(verify_admin_token)]
|
||||
)
|
||||
|
||||
router.include_router(
|
||||
@@ -65,7 +67,8 @@ router.include_router(
|
||||
enabled_methods=["get_all", "get_one", "delete"]
|
||||
),
|
||||
prefix="/notifications",
|
||||
tags=["Notifications"]
|
||||
tags=["Notifications"],
|
||||
dependencies=[Depends(verify_admin_token)]
|
||||
)
|
||||
|
||||
|
||||
@@ -79,10 +82,10 @@ router.include_router(
|
||||
enabled_methods=["get_all", "get_one", "delete"]
|
||||
),
|
||||
prefix="/manual-bans",
|
||||
tags=["Bans"]
|
||||
tags=["Bans"],
|
||||
dependencies=[Depends(verify_admin_token)]
|
||||
)
|
||||
|
||||
|
||||
router.include_router(
|
||||
generate_crud_router(
|
||||
model=BlockedUser,
|
||||
@@ -93,10 +96,10 @@ router.include_router(
|
||||
enabled_methods=["get_all", "get_one", "delete"]
|
||||
),
|
||||
prefix="/blocked-users",
|
||||
tags=["Bans"]
|
||||
tags=["Bans"],
|
||||
dependencies=[Depends(verify_admin_token)]
|
||||
)
|
||||
|
||||
|
||||
router.include_router(
|
||||
generate_crud_router(
|
||||
model=TemporaryData,
|
||||
@@ -107,10 +110,10 @@ router.include_router(
|
||||
enabled_methods=["get_all", "get_one", "delete"]
|
||||
),
|
||||
prefix="/temporary-data",
|
||||
tags=["TemporaryData"]
|
||||
tags=["TemporaryData"],
|
||||
dependencies=[Depends(verify_admin_token)]
|
||||
)
|
||||
|
||||
|
||||
router.include_router(
|
||||
generate_crud_router(
|
||||
model=TrackingSource,
|
||||
@@ -121,5 +124,6 @@ router.include_router(
|
||||
enabled_methods=["get_all", "get_one", "delete"]
|
||||
),
|
||||
prefix="/tracking-sources",
|
||||
tags=["TrackingSources"]
|
||||
tags=["TrackingSources"],
|
||||
dependencies=[Depends(verify_admin_token)]
|
||||
)
|
||||
|
||||
+27
-3
@@ -1,7 +1,10 @@
|
||||
from fastapi import APIRouter
|
||||
from fastapi import Depends, HTTPException, Query
|
||||
from api.routes.base_crud import generate_crud_router
|
||||
from api.schemas import ReferralResponse
|
||||
from database.models import Referral
|
||||
from database.models import Referral, Admin
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy import select, delete
|
||||
from api.depends import get_session, verify_admin_token
|
||||
|
||||
router = generate_crud_router(
|
||||
model=Referral,
|
||||
@@ -9,5 +12,26 @@ router = generate_crud_router(
|
||||
schema_create=None,
|
||||
schema_update=None,
|
||||
identifier_field="referrer_tg_id",
|
||||
enabled_methods=["get_all", "get_one", "delete", "get_all_by_field"]
|
||||
enabled_methods=["get_all", "get_one", "get_all_by_field"]
|
||||
)
|
||||
|
||||
|
||||
@router.delete("/one")
|
||||
async def delete_one_referral(
|
||||
referrer_tg_id: int = Query(..., description="ID пригласившего"),
|
||||
referred_tg_id: int = Query(..., description="ID приглашённого"),
|
||||
admin: Admin = Depends(verify_admin_token),
|
||||
session: AsyncSession = Depends(get_session)
|
||||
):
|
||||
result = await session.execute(
|
||||
select(Referral).where(
|
||||
Referral.referrer_tg_id == referrer_tg_id,
|
||||
Referral.referred_tg_id == referred_tg_id
|
||||
)
|
||||
)
|
||||
obj = result.scalar_one_or_none()
|
||||
if not obj:
|
||||
raise HTTPException(status_code=404, detail="Referral not found")
|
||||
await session.delete(obj)
|
||||
await session.commit()
|
||||
return {"status": "deleted_one"}
|
||||
@@ -6,7 +6,7 @@ from datetime import datetime
|
||||
class GiftBase(BaseModel):
|
||||
sender_tg_id: int
|
||||
recipient_tg_id: Optional[int] = None
|
||||
selected_months: int
|
||||
selected_months: Optional[int] = None
|
||||
expiry_time: datetime
|
||||
gift_link: str
|
||||
is_used: bool = False
|
||||
|
||||
+2
-1
@@ -13,6 +13,7 @@ from sqlalchemy import (
|
||||
Text,
|
||||
)
|
||||
import secrets
|
||||
import uuid
|
||||
from sqlalchemy.orm import Mapped, declarative_base, mapped_column
|
||||
|
||||
Base = declarative_base()
|
||||
@@ -150,7 +151,7 @@ class Notification(DictLikeMixin, Base):
|
||||
class Gift(DictLikeMixin, Base):
|
||||
__tablename__ = "gifts"
|
||||
|
||||
gift_id = Column(String, primary_key=True)
|
||||
gift_id = Column(String, primary_key=True, default=lambda: uuid.uuid4().hex)
|
||||
sender_tg_id = Column(BigInteger, ForeignKey("users.tg_id"))
|
||||
recipient_tg_id = Column(BigInteger, ForeignKey("users.tg_id"), nullable=True)
|
||||
selected_months = Column(Integer)
|
||||
|
||||
Reference in New Issue
Block a user