fixes
This commit is contained in:
parent
ce5bab1f29
commit
f788127716
|
|
@ -3,10 +3,11 @@
|
|||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from typing import Annotated
|
||||
|
||||
from hubgw.api.deps import get_luckperms_service, verify_api_key
|
||||
from hubgw.api.deps import get_luckperms_service, get_user_service, verify_api_key
|
||||
from hubgw.services.luckperms_service import LuckPermsService
|
||||
from hubgw.services.users_service import UserService
|
||||
from hubgw.schemas.luckperms import (
|
||||
LuckPermsPlayer, LuckPermsGroup, LuckPermsUserPermission,
|
||||
LuckPermsPlayer, LuckPermsGroup, LuckPermsUserPermission,
|
||||
LuckPermsPlayerWithPermissions, LuckPermsPlayerCreateRequest
|
||||
)
|
||||
from hubgw.core.errors import AppError, create_http_exception
|
||||
|
|
@ -82,11 +83,12 @@ async def get_player_with_permissions(
|
|||
@router.post("/players", response_model=LuckPermsPlayer, status_code=201)
|
||||
async def create_player(
|
||||
request: LuckPermsPlayerCreateRequest,
|
||||
service: Annotated[LuckPermsService, Depends(get_luckperms_service)],
|
||||
luckperms_service: Annotated[LuckPermsService, Depends(get_luckperms_service)],
|
||||
user_service: Annotated[UserService, Depends(get_user_service)],
|
||||
_: Annotated[str, Depends(verify_api_key)]
|
||||
):
|
||||
"""Create a new player in LuckPerms."""
|
||||
try:
|
||||
return await service.create_player(request)
|
||||
return await luckperms_service.create_player(request, user_service)
|
||||
except AppError as e:
|
||||
raise create_http_exception(e)
|
||||
|
|
|
|||
|
|
@ -3,8 +3,10 @@
|
|||
from fastapi import APIRouter, Depends
|
||||
from typing import Annotated, Optional
|
||||
|
||||
from hubgw.api.deps import get_whitelist_service, verify_api_key
|
||||
from hubgw.api.deps import get_whitelist_service, get_luckperms_service, get_user_service, verify_api_key
|
||||
from hubgw.services.whitelist_service import WhitelistService
|
||||
from hubgw.services.luckperms_service import LuckPermsService
|
||||
from hubgw.services.users_service import UserService
|
||||
from hubgw.schemas.whitelist import (
|
||||
WhitelistAddRequest, WhitelistRemoveRequest, WhitelistCheckRequest,
|
||||
WhitelistEntry, WhitelistCheckResponse, WhitelistListResponse, WhitelistQuery
|
||||
|
|
@ -18,11 +20,13 @@ router = APIRouter()
|
|||
async def add_player(
|
||||
request: WhitelistAddRequest,
|
||||
service: Annotated[WhitelistService, Depends(get_whitelist_service)],
|
||||
luckperms_service: Annotated[LuckPermsService, Depends(get_luckperms_service)],
|
||||
user_service: Annotated[UserService, Depends(get_user_service)],
|
||||
_: Annotated[str, Depends(verify_api_key)]
|
||||
):
|
||||
"""Add player to whitelist."""
|
||||
try:
|
||||
return await service.add_player(request)
|
||||
return await service.add_player(request, luckperms_service, user_service)
|
||||
except AppError as e:
|
||||
raise create_http_exception(e)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
from uuid import UUID
|
||||
from hubgw.schemas.common import BaseSchema
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,4 +7,4 @@ from typing import Optional
|
|||
class GetUserGameIdResponse(BaseModel):
|
||||
"""Response schema for getting user's game ID."""
|
||||
|
||||
game_id: Optional[str]
|
||||
game_id: str
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ class WhitelistAddRequest(BaseModel):
|
|||
"""Whitelist add request schema."""
|
||||
|
||||
player_name: str
|
||||
player_uuid: Optional[str] = None
|
||||
player_uuid: str
|
||||
added_by: str
|
||||
added_at: datetime
|
||||
expires_at: Optional[datetime] = None
|
||||
|
|
|
|||
|
|
@ -1,15 +1,16 @@
|
|||
"""LuckPerms service."""
|
||||
|
||||
from loguru import logger
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from typing import List
|
||||
from uuid import uuid3, NAMESPACE_OID
|
||||
from typing import List, TYPE_CHECKING
|
||||
|
||||
from hubgw.repositories.luckperms_repo import LuckPermsRepository
|
||||
from hubgw.schemas.luckperms import (
|
||||
LuckPermsPlayer, LuckPermsGroup, LuckPermsUserPermission,
|
||||
LuckPermsPlayer, LuckPermsGroup, LuckPermsUserPermission,
|
||||
LuckPermsPlayerWithPermissions, LuckPermsPlayerCreateRequest
|
||||
)
|
||||
from hubgw.core.errors import NotFoundError, AlreadyExistsError
|
||||
from hubgw.services.users_service import UserService
|
||||
|
||||
|
||||
class LuckPermsService:
|
||||
|
|
@ -56,13 +57,14 @@ class LuckPermsService:
|
|||
|
||||
return LuckPermsPlayerWithPermissions.model_validate(player, permissions=permission_schemas)
|
||||
|
||||
async def create_player(self, request: LuckPermsPlayerCreateRequest) -> LuckPermsPlayer:
|
||||
async def create_player(self, request: LuckPermsPlayerCreateRequest, user_service: UserService) -> LuckPermsPlayer:
|
||||
"""Create a new player in LuckPerms."""
|
||||
existing_player = await self.repo.get_player_by_username(request.username)
|
||||
if existing_player:
|
||||
raise AlreadyExistsError(f"Player with username {request.username} already exists")
|
||||
|
||||
uuid = str(uuid3(NAMESPACE_OID, request.username))
|
||||
user_game_id = await user_service.get_game_id_by_name(request.username)
|
||||
uuid = user_game_id.game_id
|
||||
|
||||
created_player = await self.repo.create_player(
|
||||
uuid=uuid,
|
||||
|
|
@ -70,4 +72,4 @@ class LuckPermsService:
|
|||
primary_group=request.primary_group
|
||||
)
|
||||
|
||||
return LuckPermsPlayer.model_validate(created_player)
|
||||
return created_player
|
||||
|
|
|
|||
|
|
@ -8,7 +8,10 @@ from hubgw.schemas.whitelist import (
|
|||
WhitelistAddRequest, WhitelistRemoveRequest, WhitelistCheckRequest,
|
||||
WhitelistEntry as SchemaWhitelistEntry, WhitelistCheckResponse, WhitelistListResponse, WhitelistQuery
|
||||
)
|
||||
from hubgw.schemas.luckperms import LuckPermsPlayerCreateRequest
|
||||
from hubgw.core.errors import AlreadyExistsError, NotFoundError
|
||||
from hubgw.services.luckperms_service import LuckPermsService
|
||||
from hubgw.services.users_service import UserService
|
||||
|
||||
|
||||
class WhitelistService:
|
||||
|
|
@ -17,7 +20,21 @@ class WhitelistService:
|
|||
def __init__(self, session: AsyncSession):
|
||||
self.repo = WhitelistRepository(session)
|
||||
|
||||
async def add_player(self, request: WhitelistAddRequest) -> SchemaWhitelistEntry:
|
||||
async def add_player(
|
||||
self,
|
||||
request: WhitelistAddRequest,
|
||||
luckperms_service: LuckPermsService,
|
||||
user_service: UserService
|
||||
) -> SchemaWhitelistEntry:
|
||||
try:
|
||||
luckperms_create_request = LuckPermsPlayerCreateRequest(
|
||||
username=request.player_name,
|
||||
primary_group="default"
|
||||
)
|
||||
await luckperms_service.create_player(luckperms_create_request, user_service)
|
||||
except AlreadyExistsError:
|
||||
pass
|
||||
|
||||
existing = await self.repo.get_by_player_name(request.player_name)
|
||||
if existing:
|
||||
if existing.is_active:
|
||||
|
|
|
|||
Loading…
Reference in New Issue