mirror of
https://github.com/kurbezz/discord-bot.git
synced 2025-12-06 15:15:37 +01:00
Update
This commit is contained in:
@@ -96,12 +96,14 @@ class TwitchService:
|
||||
|
||||
assert self.twitch._user_auth_token is not None
|
||||
|
||||
logger.info("Check token...")
|
||||
val_result = await validate_token(
|
||||
self.twitch._user_auth_token,
|
||||
auth_base_url=self.twitch.auth_base_url
|
||||
)
|
||||
if val_result.get('status', 200) != 200:
|
||||
await self.twitch.refresh_used_token()
|
||||
logger.info("Token refreshed")
|
||||
|
||||
async def run(self) -> NoReturn:
|
||||
eventsub = EventSubWebhook(
|
||||
|
||||
@@ -3,3 +3,7 @@ from pydantic import BaseModel
|
||||
|
||||
class GetAuthorizationUrlResponse(BaseModel):
|
||||
authorization_url: str
|
||||
|
||||
|
||||
class CallbackResponse(BaseModel):
|
||||
token: str
|
||||
|
||||
5
src/modules/web_app/serializers/streamer.py
Normal file
5
src/modules/web_app/serializers/streamer.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class StreamerSerializer(BaseModel):
|
||||
pass
|
||||
@@ -4,7 +4,7 @@ from domain.auth import OAuthProvider, OAuthData
|
||||
from domain.users import CreateUser
|
||||
from modules.web_app.services.oauth.process_callback import process_callback
|
||||
from modules.web_app.services.oauth.authorization_url_getter import get_authorization_url as gen_auth_link
|
||||
from modules.web_app.serializers.auth import GetAuthorizationUrlResponse
|
||||
from modules.web_app.serializers.auth import GetAuthorizationUrlResponse, CallbackResponse
|
||||
from modules.web_app.auth.authx import auth
|
||||
from repositories.users import UserRepository
|
||||
|
||||
@@ -20,7 +20,7 @@ async def get_authorization_url(provider: OAuthProvider) -> GetAuthorizationUrlR
|
||||
|
||||
|
||||
@auth_router.get("/callback/{provider}/")
|
||||
async def callback(provider: OAuthProvider, code: str):
|
||||
async def callback(provider: OAuthProvider, code: str) -> CallbackResponse:
|
||||
user_data = await process_callback(provider, code)
|
||||
|
||||
user = await UserRepository.get_or_create_user(
|
||||
@@ -30,6 +30,9 @@ async def callback(provider: OAuthProvider, code: str):
|
||||
)
|
||||
)
|
||||
|
||||
token = auth.create_access_token(uid=user.id, data={"is_admin": user.is_admin})
|
||||
token = auth.create_access_token(
|
||||
uid=user.id,
|
||||
is_admin=user.is_admin
|
||||
)
|
||||
|
||||
return {"token": token}
|
||||
return CallbackResponse(token=token)
|
||||
|
||||
37
src/modules/web_app/views/streamer.py
Normal file
37
src/modules/web_app/views/streamer.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from authx import RequestToken
|
||||
|
||||
from modules.web_app.auth.authx import auth
|
||||
from modules.web_app.serializers.streamer import StreamerSerializer
|
||||
from repositories.streamers import StreamerConfigRepository
|
||||
from repositories.users import UserRepository
|
||||
from domain.auth import OAuthProvider
|
||||
|
||||
|
||||
streamer_router = APIRouter(prefix="/streamers")
|
||||
|
||||
|
||||
@streamer_router.get("/")
|
||||
async def get_streamers(
|
||||
token: RequestToken = Depends(RequestToken)
|
||||
) -> list[StreamerSerializer]:
|
||||
payload = auth.verify_token(token)
|
||||
|
||||
u_id = payload.sub
|
||||
is_admin: bool = getattr(payload, "is_admin", False)
|
||||
|
||||
|
||||
if is_admin:
|
||||
streamers = await StreamerConfigRepository.all()
|
||||
else:
|
||||
user = await UserRepository.get(u_id)
|
||||
|
||||
twith_oauth = user.oauths.get(OAuthProvider.TWITCH)
|
||||
if not twith_oauth:
|
||||
return []
|
||||
|
||||
streamers = [await StreamerConfigRepository.get_by_twitch_id(
|
||||
int(twith_oauth.id)
|
||||
)]
|
||||
|
||||
return [StreamerSerializer(**streamer.model_dump()) for streamer in streamers]
|
||||
Reference in New Issue
Block a user