"""认证服务接口。"""

from abc import ABC, abstractmethod

from fastapi_modules.fastapi_leaudit.domian.vo.auth.loginTokenVo import LoginTokenVO


class IAuthService(ABC):
    """认证服务接口。"""

    @abstractmethod
    async def PasswordLogin(self, Sub: str, Password: str) -> LoginTokenVO:
        """账密登录。"""
        ...

    @abstractmethod
    async def OAuthLogin(self, Sub: str, Username: str | None, Nickname: str | None,
                         Email: str | None, PhoneNumber: str | None,
                         OuId: str | None, OuName: str | None,
                         IsLeader: bool | None, Area: str | None, ExpiresIn: int) -> LoginTokenVO:
        """OAuth 登录。"""
        ...

    @abstractmethod
    async def GetCurrentUser(self, UserId: int) -> dict:
        """获取当前登录用户信息。"""
        ...
