add bots
This commit is contained in:
parent
910c0201b4
commit
43c385386e
@ -1,5 +1,5 @@
|
|||||||
import httpx
|
import httpx
|
||||||
from fastapi import Depends, Request, HTTPException, status
|
from fastapi import Depends, Request, HTTPException, status, Header
|
||||||
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
|
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
@ -15,14 +15,17 @@ auth_scheme = HTTPBearer()
|
|||||||
@dataclass
|
@dataclass
|
||||||
class CurrentUser:
|
class CurrentUser:
|
||||||
token: str
|
token: str
|
||||||
|
is_bot: str
|
||||||
user_id: str
|
user_id: str
|
||||||
session_id: str
|
session_id: str
|
||||||
permissions: List[str]
|
permissions: List[str]
|
||||||
|
|
||||||
|
|
||||||
async def _fetch_current_user(
|
async def _fetch_current_user(
|
||||||
request: Request,
|
request: Request,
|
||||||
credentials: HTTPAuthorizationCredentials,
|
credentials: HTTPAuthorizationCredentials,
|
||||||
require_permissions: bool
|
require_permissions: bool,
|
||||||
|
is_bot=False
|
||||||
) -> CurrentUser:
|
) -> CurrentUser:
|
||||||
token = credentials.credentials
|
token = credentials.credentials
|
||||||
ip = request.client.host or "(unknown)"
|
ip = request.client.host or "(unknown)"
|
||||||
@ -36,7 +39,8 @@ async def _fetch_current_user(
|
|||||||
"token": token,
|
"token": token,
|
||||||
"ip": ip,
|
"ip": ip,
|
||||||
"user_agent": user_agent,
|
"user_agent": user_agent,
|
||||||
"require_permissions": require_permissions
|
"require_permissions": require_permissions,
|
||||||
|
"is_bot": is_bot
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
except httpx.RequestError as e:
|
except httpx.RequestError as e:
|
||||||
@ -54,6 +58,7 @@ async def _fetch_current_user(
|
|||||||
|
|
||||||
return CurrentUser(
|
return CurrentUser(
|
||||||
token=token,
|
token=token,
|
||||||
|
is_bot=data["is_bot"],
|
||||||
user_id=data["user_id"],
|
user_id=data["user_id"],
|
||||||
session_id=data["session_id"],
|
session_id=data["session_id"],
|
||||||
permissions=data["permissions"]
|
permissions=data["permissions"]
|
||||||
@ -120,6 +125,7 @@ async def fetch_user_for_sio(
|
|||||||
|
|
||||||
return CurrentUser(
|
return CurrentUser(
|
||||||
token=token,
|
token=token,
|
||||||
|
is_bot=data["is_bot"],
|
||||||
user_id=data["user_id"],
|
user_id=data["user_id"],
|
||||||
session_id=data["session_id"],
|
session_id=data["session_id"],
|
||||||
permissions=data["permissions"]
|
permissions=data["permissions"]
|
||||||
@ -139,6 +145,16 @@ async def get_current_user_with_permissions(
|
|||||||
) -> CurrentUser:
|
) -> CurrentUser:
|
||||||
return await _fetch_current_user(request, credentials, require_permissions=True)
|
return await _fetch_current_user(request, credentials, require_permissions=True)
|
||||||
|
|
||||||
|
|
||||||
|
async def get_current_user_or_bot(
|
||||||
|
request: Request,
|
||||||
|
is_bot: str | None = Header(default=None),
|
||||||
|
credentials: HTTPAuthorizationCredentials = Depends(auth_scheme)
|
||||||
|
) -> CurrentUser:
|
||||||
|
is_bot_flag = str(is_bot).lower() in ("true", "1", "yes") if is_bot else False
|
||||||
|
return await _fetch_current_user(request, credentials, require_permissions=False, is_bot=is_bot_flag)
|
||||||
|
|
||||||
|
|
||||||
def validate_username(value: str,
|
def validate_username(value: str,
|
||||||
field_name: str = "login",
|
field_name: str = "login",
|
||||||
with_httpexception=False,
|
with_httpexception=False,
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "common-lib"
|
name = "common-lib"
|
||||||
version = "0.0.30"
|
version = "0.0.31"
|
||||||
description = "Библиотека общих компонентов для микросервисов yobble"
|
description = "Библиотека общих компонентов для микросервисов yobble"
|
||||||
authors = [{ name = "cheykrym", email = "you@example.com" }]
|
authors = [{ name = "cheykrym", email = "you@example.com" }]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user