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