सामग्री पर जाएं

के लिए संदर्भ hub_sdk/base/auth.py

नोट

यह फ़ाइल यहाँ उपलब्ध है https://github.com/ultralytics/hub-एसडीके/बूँद/मुख्य/hub_sdk/आधार/प्रमाणिक.py। यदि आप कोई समस्या देखते हैं तो कृपया पुल अनुरोध का योगदान करके इसे ठीक करने में मदद करें 🛠️। 🙏 धन्यवाद !



hub_sdk.base.auth.Auth

एक प्रमाणीकरण प्रबंधक का प्रतिनिधित्व करता है।

विशेषताएँ:

नाम प्रकार विवरण: __________
api_key (str, None)

प्रमाणीकरण के लिए उपयोग की जाने वाली API कुंजी.

id_token (str, None)

प्रमाणीकरण टोकन।

में स्रोत कोड hub_sdk/base/auth.py
 12 बांग्लादेश 12 बांग्लादेश 14 15 16 17 18  19 20 21 22 23 24 25 26 27 28 29 30 31 32 33  34 35 36  37  38        39 40   41 42    43 44   45        46   47 48 49 50 51 52 53 54 55 56 57 58  59 60 61 62 63 64 65 66 67 68          69 70   71 72  73 74 75  76 77          78  79 80 81 82 83 84 85 86 87 88  89 90 91 92   93 94 95 96 97  98    99  100  101  102  103  104  105  106  107108 109 110 111 112 113 114 115116
class Auth:
    """
    Represents an authentication manager.

    Attributes:
        api_key (str, None): The API key used for authentication.
        id_token (str, None): The authentication token.
    """

    def __init__(self):
        """Initializes the Auth class with default authentication settings."""
        self.api_key = None
        self.id_token = None

    def authenticate(self) -> bool:
        """
        Attempt to authenticate with the server using either id_token or API key.

        Returns:
            (bool): True if authentication is successful, False otherwise.

        Raises:
            (ConnectionError): If request response is hasn't success in json, raised connection error exception.
        """
        try:
            header = self.get_auth_header()
            if header:
                r = requests.post(f"{HUB_API_ROOT}/v1/auth", headers=header)
                if not r.json().get("success", False):
                    raise ConnectionError("Unable to authenticate.")
                return True
            raise ConnectionError("User has not authenticated locally.")
        except ConnectionError:
            logger.warning(f"{PREFIX} Invalid API key ⚠️")
        except requests.exceptions.RequestException as e:
            status_code = None
            if hasattr(e, "response"):
                status_code = e.response.status_code

            error_msg = ErrorHandler(status_code).handle()
            logger.warning(f"{PREFIX} {error_msg}")

        self.id_token = self.api_key = False  # reset invalid
        return False

    def get_auth_header(self) -> Optional[dict]:
        """
        Get the authentication header for making API requests.

        Returns:
            (Optional[dict]): The authentication header if id_token or API key is set, None otherwise.
        """
        if self.id_token:
            return {"authorization": f"Bearer {self.id_token}"}
        elif self.api_key:
            return {"x-api-key": self.api_key}
        else:
            return None

    def get_state(self) -> bool:
        """
        Get the authentication state.

        Returns:
            (bool): True if either id_token or API key is set, False otherwise.
        """
        return self.id_token or self.api_key

    def set_api_key(self, key: str):
        """
        Set the API key for authentication.

        Args:
            key (str): The API key string.
        """
        self.api_key = key

    def authorize(self, email: str, password: str) -> bool:
        """
        Authorize the user by obtaining an idToken through a POST request with email and password.

        Args:
            email (str): User's email.
            password (str): User's password.

        Returns:
            (bool): True if authorization is successful, False otherwise.
        """
        try:
            headers = {"origin": HUB_WEB_ROOT}
            response = requests.post(FIREBASE_AUTH_URL, json={"email": email, "password": password}, headers=headers)
            if response.status_code == 200:
                self.id_token = response.json().get("idToken")
                return True
            else:
                raise ConnectionError("Authorization failed.")
        except ConnectionError:
            logger.warning(f"{PREFIX} Invalid API key ⚠️")
        except requests.exceptions.RequestException as e:
            status_code = None
            if hasattr(e, "response"):
                status_code = e.response.status_code

            error_msg = ErrorHandler(status_code).handle()
            logger.warning(f"{PREFIX} {error_msg}")

__init__()

डिफ़ॉल्ट प्रमाणीकरण सेटिंग्स के साथ Auth वर्ग को प्रारंभ करता है।

में स्रोत कोड hub_sdk/base/auth.py
def __init__(self):
    """Initializes the Auth class with default authentication settings."""
    self.api_key = None
    self.id_token = None

authenticate()

id_token या एपीआई कुंजी का उपयोग करके सर्वर के साथ प्रमाणित करने का प्रयास करें।

देता:

प्रकार विवरण: __________
bool

यदि प्रमाणीकरण सफल होता है तो सत्य, अन्यथा असत्य।

उठाती:

प्रकार विवरण: __________
ConnectionError

यदि अनुरोध प्रतिक्रिया जेसन में सफल नहीं होती है, तो उठाया गया कनेक्शन त्रुटि अपवाद।

में स्रोत कोड hub_sdk/base/auth.py
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4647 484950 5152535455
def authenticate(self) -> bool:
    """
    Attempt to authenticate with the server using either id_token or API key.

    Returns:
        (bool): True if authentication is successful, False otherwise.

    Raises:
        (ConnectionError): If request response is hasn't success in json, raised connection error exception.
    """
    try:
        header = self.get_auth_header()
        if header:
            r = requests.post(f"{HUB_API_ROOT}/v1/auth", headers=header)
            if not r.json().get("success", False):
                raise ConnectionError("Unable to authenticate.")
            return True
        raise ConnectionError("User has not authenticated locally.")
    except ConnectionError:
        logger.warning(f"{PREFIX} Invalid API key ⚠️")
    except requests.exceptions.RequestException as e:
        status_code = None
        if hasattr(e, "response"):
            status_code = e.response.status_code

        error_msg = ErrorHandler(status_code).handle()
        logger.warning(f"{PREFIX} {error_msg}")

    self.id_token = self.api_key = False  # reset invalid
    return False

authorize(email, password)

ईमेल और पासवर्ड के साथ POST अनुरोध के माध्यम से idToken प्राप्त करके उपयोगकर्ता को अधिकृत करें.

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
email str

उपयोगकर्ता का ईमेल।

आवश्यक
password str

उपयोगकर्ता का पासवर्ड।

आवश्यक

देता:

प्रकार विवरण: __________
bool

सच है अगर प्राधिकरण सफल है, अन्यथा गलत।

में स्रोत कोड hub_sdk/base/auth.py
 89 90 91 92 93 94 95 96 97 98  99 100 101 102 103 104 105 106  107 108 109  110 111 112  113 114 115 116 
def authorize(self, email: str, password: str) -> bool:
    """
    Authorize the user by obtaining an idToken through a POST request with email and password.

    Args:
        email (str): User's email.
        password (str): User's password.

    Returns:
        (bool): True if authorization is successful, False otherwise.
    """
    try:
        headers = {"origin": HUB_WEB_ROOT}
        response = requests.post(FIREBASE_AUTH_URL, json={"email": email, "password": password}, headers=headers)
        if response.status_code == 200:
            self.id_token = response.json().get("idToken")
            return True
        else:
            raise ConnectionError("Authorization failed.")
    except ConnectionError:
        logger.warning(f"{PREFIX} Invalid API key ⚠️")
    except requests.exceptions.RequestException as e:
        status_code = None
        if hasattr(e, "response"):
            status_code = e.response.status_code

        error_msg = ErrorHandler(status_code).handle()
        logger.warning(f"{PREFIX} {error_msg}")

get_auth_header()

एपीआई अनुरोध करने के लिए प्रमाणीकरण हेडर प्राप्त करें।

देता:

प्रकार विवरण: __________
Optional[dict]

प्रमाणीकरण शीर्षलेख यदि id_token या एपीआई कुंजी सेट है, अन्यथा कोई नहीं।

में स्रोत कोड hub_sdk/base/auth.py
def get_auth_header(self) -> Optional[dict]:
    """
    Get the authentication header for making API requests.

    Returns:
        (Optional[dict]): The authentication header if id_token or API key is set, None otherwise.
    """
    if self.id_token:
        return {"authorization": f"Bearer {self.id_token}"}
    elif self.api_key:
        return {"x-api-key": self.api_key}
    else:
        return None

get_state()

प्रमाणीकरण स्थिति प्राप्त करें।

देता:

प्रकार विवरण: __________
bool

सही है अगर या तो id_token या एपीआई कुंजी सेट है, अन्यथा गलत।

में स्रोत कोड hub_sdk/base/auth.py
def get_state(self) -> bool:
    """
    Get the authentication state.

    Returns:
        (bool): True if either id_token or API key is set, False otherwise.
    """
    return self.id_token or self.api_key

set_api_key(key)

प्रमाणीकरण के लिए API कुंजी सेट करें।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
key str

API कुंजी स्ट्रिंग.

आवश्यक
में स्रोत कोड hub_sdk/base/auth.py
def set_api_key(self, key: str):
    """
    Set the API key for authentication.

    Args:
        key (str): The API key string.
    """
    self.api_key = key