コード例 #1
0
    def _logout(
        self,
        sudo: bool = False,
        transport_options: Optional[transport.TransportOptions] = None,
    ) -> None:

        if sudo:
            token = self.sudo_token.access_token
            self.sudo_token = auth_token.AuthToken()
        else:
            token = self.token.access_token
            self.token = auth_token.AuthToken()

        def authenticator(
            _transport_options: transport.TransportOptions,
        ) -> Dict[str, str]:
            return {"Authorization": f"Bearer {token}"}

        self._ok(
            self.transport.request(
                transport.HttpMethod.DELETE,
                f"{self.settings.base_url}/api/logout",
                authenticator=authenticator,
                transport_options=transport_options,
            )
        )
コード例 #2
0
 def __init__(
     self,
     settings: api_settings.ApiSettings,
     transport: transport.Transport,
     deserialize: serialize.TDeserialize,
 ):
     self.user_token: auth_token.AuthToken = auth_token.AuthToken()
     self.admin_token: auth_token.AuthToken = auth_token.AuthToken()
     self._sudo_id: Optional[int] = None
     self.settings = settings
     self.transport = transport
     self.deserialize = deserialize
コード例 #3
0
ファイル: auth_session.py プロジェクト: tpindar1/sdk-codegen
    def _logout(self, sudo: bool = False) -> None:

        if sudo:
            token = self.sudo_token.access_token
            self.sudo_token = auth_token.AuthToken()
        else:
            token = self.token.access_token
            self.token = auth_token.AuthToken()

        self._ok(
            self.transport.request(
                transport.HttpMethod.DELETE,
                f"{self.settings.base_url}/api/logout",
                authenticator=lambda: {"Authorization": f"Bearer {token}"},
            ))
コード例 #4
0
 def __init__(
     self,
     settings: api_settings.PApiSettings,
     transport: transport.Transport,
     deserialize: serialize.TDeserialize,
 ):
     if not settings.is_configured():
         raise error.SDKError(
             "Missing required configuration values like base_url and api_version."
         )
     self.settings = settings
     self.user_token: auth_token.AuthToken = auth_token.AuthToken()
     self.admin_token: auth_token.AuthToken = auth_token.AuthToken()
     self._sudo_id: Optional[int] = None
     self.transport = transport
     self.deserialize = deserialize
コード例 #5
0
 def __init__(
     self,
     settings: api_settings.PApiSettings,
     transport: transport.Transport,
     deserialize: serialize.TDeserialize,
     api_version: str,
 ):
     settings.is_configured()
     self.settings = settings
     self.api_version = api_version
     self.sudo_token: auth_token.AuthToken = auth_token.AuthToken()
     self.token: auth_token.AuthToken = auth_token.AuthToken()
     self._sudo_id: Optional[int] = None
     self.transport = transport
     self.deserialize = deserialize
     self.token_model = auth_token.AccessToken
コード例 #6
0
ファイル: auth_session.py プロジェクト: tpindar1/sdk-codegen
    def _login(self) -> None:
        client_id = self.settings.read_config().get("client_id")
        client_secret = self.settings.read_config().get("client_secret")
        if not (client_id and client_secret):
            raise error.SDKError("Required auth credentials not found.")

        serialized = urllib.parse.urlencode({
            "client_id":
            cast(str, client_id),
            "client_secret":
            cast(str, client_secret),
        }).encode("utf-8")

        response = self._ok(
            self.transport.request(
                transport.HttpMethod.POST,
                f"{self.settings.base_url}/api/{self.version}/login",
                body=serialized,
                headers={"Content-Type": "application/x-www-form-urlencoded"},
            ))

        # ignore type: mypy bug doesn't recognized kwarg `structure` to partial func
        access_token = self.deserialize(
            data=response, structure=self.token_model)  # type: ignore
        assert isinstance(access_token, token_model_isinstances)
        self.token = auth_token.AuthToken(access_token)
コード例 #7
0
    def _login_admin(self) -> None:
        config_data = self.settings.read_ini(self.settings._filename,
                                             self.settings._section)
        client_id = os.getenv(f"{versions.environment_prefix}_CLIENT_ID"
                              ) or config_data.get("client_id")
        client_secret = os.getenv(
            f"{versions.environment_prefix}_CLIENT_SECRET") or config_data.get(
                "client_secret")

        if not (client_id and client_secret):
            raise error.SDKError("Required auth credentials not found.")

        serialized = urllib.parse.urlencode({
            "client_id":
            cast(str, client_id),
            "client_secret":
            cast(str, client_secret),
        }).encode("utf-8")

        response = self._ok(
            self.transport.request(
                transport.HttpMethod.POST,
                "/login",
                body=serialized,
                headers={"Content-Type": "application/x-www-form-urlencoded"},
            ))

        access_token = self.deserialize(response, models.AccessToken)
        assert isinstance(access_token, models.AccessToken)
        self.admin_token = auth_token.AuthToken(access_token)
コード例 #8
0
 def _login(self, transport_options: transport.TransportOptions) -> None:
     params = self.RefreshTokenGrantTypeParams(
         client_id=self.client_id,
         redirect_uri=self.redirect_uri,
         refresh_token=self.token.refresh_token,
     )
     access_token = self._request_token(params, transport_options)
     self.token = auth_token.AuthToken(access_token)
コード例 #9
0
def test_defaults_with_empty_token():
    """Confirm the defaults when initializing AuthToken without arguments."""
    actual = auth_token.AuthToken()

    assert actual.access_token == ""
    assert actual.token_type == ""
    assert actual.expires_in == 0
    assert actual.is_active is False
コード例 #10
0
ファイル: auth_session.py プロジェクト: tpindar1/sdk-codegen
 def _login(self) -> None:
     params = self.RefreshTokenGrantTypeParams(
         client_id=self.client_id,
         redirect_uri=self.redirect_uri,
         refresh_token=self.token.refresh_token,
     )
     access_token = self._request_token(params)
     self.token = auth_token.AuthToken(access_token)
コード例 #11
0
def test_lag_time_is_used():
    """Confirm active token when expiration is > lag time."""
    actual = auth_token.AuthToken(
        models.AccessToken(
            access_token="all-access", token_type="backstage", expires_in=9
        )
    )

    assert actual.access_token == "all-access"
    assert actual.token_type == "backstage"
    assert actual.expires_in == 9
    assert actual.is_active is False

    actual = auth_token.AuthToken(
        models.AccessToken(
            access_token="all-access", token_type="backstage", expires_in=11
        )
    )

    assert actual.expires_in == 11
    assert actual.is_active is True
コード例 #12
0
def test_is_active_with_full_token():
    """Confirm active token when AuthToken is initialized properly."""
    actual = auth_token.AuthToken(
        models.AccessToken(
            access_token="all-access", token_type="backstage", expires_in=3600
        )
    )

    assert actual.access_token == "all-access"
    assert actual.token_type == "backstage"
    assert actual.expires_in == 3600
    assert actual.is_active is True
コード例 #13
0
ファイル: auth_session.py プロジェクト: tpindar1/sdk-codegen
    def redeem_auth_code(self,
                         auth_code: str,
                         code_verifier: Optional[str] = None) -> None:
        params = self.AuthCodeGrantTypeParams(
            client_id=self.client_id,
            redirect_uri=self.redirect_uri,
            code=auth_code,
            code_verifier=code_verifier or self.code_verifier,
        )

        access_token = self._request_token(params)
        self.token = auth_token.AuthToken(access_token)
コード例 #14
0
 def _login_user(self) -> None:
     response = self._ok(
         self.transport.request(
             transport.HttpMethod.POST,
             f"/login/{self._sudo_id}",
             authenticator=lambda: {
                 "Authorization":
                 f"token {self._get_admin_token().access_token}"
             },
         ))
     access_token = self.deserialize(response, models.AccessToken)
     assert isinstance(access_token, models.AccessToken)
     self.user_token = auth_token.AuthToken(access_token)
コード例 #15
0
ファイル: auth_session.py プロジェクト: tpindar1/sdk-codegen
 def _login_sudo(self) -> None:
     response = self._ok(
         self.transport.request(
             transport.HttpMethod.POST,
             f"{self.settings.base_url}/api/{self.version}/login/{self._sudo_id}",
             authenticator=lambda:
             {"Authorization": f"Bearer {self._get_token().access_token}"},
         ))
     # ignore type: mypy bug doesn't recognized kwarg `structure` to partial func
     access_token = self.deserialize(
         data=response, structure=self.token_model)  # type: ignore
     assert isinstance(access_token, token_model_isinstances)
     self.sudo_token = auth_token.AuthToken(access_token)
コード例 #16
0
 def _login_user(self) -> None:
     response = self._ok(
         self.transport.request(
             transport.HttpMethod.POST,
             f"/login/{self._sudo_id}",
             authenticator=lambda: {
                 "Authorization":
                 f"Bearer {self._get_admin_token().access_token}"
             },
         ))
     access_token = self.deserialize(data=response, structure=token_model)
     assert isinstance(access_token, token_model_isinstances)
     self.user_token = auth_token.AuthToken(access_token)
コード例 #17
0
 def __init__(
     self,
     settings: api_settings.PApiSettings,
     transport: transport.Transport,
     deserialize: serialize.TDeserialize,
     version: str,
 ):
     if not settings.is_configured():
         raise error.SDKError(
             "Missing required configuration values like base_url and api_version."
         )
     self.settings = settings
     self.sudo_token: auth_token.AuthToken = auth_token.AuthToken()
     self.token: auth_token.AuthToken = auth_token.AuthToken()
     self._sudo_id: Optional[int] = None
     self.transport = transport
     self.deserialize = deserialize
     self.version = version
     self.token_model: Union[Type[models31.AccessToken], Type[models40.AccessToken]]
     if self.version == "3.1":
         self.token_model = models31.AccessToken
     elif self.version == "4.0":
         self.token_model = models40.AccessToken
コード例 #18
0
    def _login_sudo(self,
                    transport_options: transport.TransportOptions) -> None:
        def authenticator(
            transport_options: transport.TransportOptions, ) -> Dict[str, str]:
            return {
                "Authorization":
                f"Bearer {self._get_token(transport_options).access_token}"
            }

        response = self._ok(
            self.transport.request(
                transport.HttpMethod.POST,
                f"{self.settings.base_url}/api/{self.api_version}/login/{self._sudo_id}",
                authenticator=authenticator,
                transport_options=transport_options,
            ))
        # ignore type: mypy bug doesn't recognized kwarg `structure` to partial func
        access_token = self.deserialize(
            data=response, structure=self.token_model)  # type: ignore
        assert isinstance(access_token, auth_token.AccessToken)
        self.sudo_token = auth_token.AuthToken(access_token)
コード例 #19
0
    def _login_admin(self) -> None:
        client_id = self.settings.get_client_id()
        client_secret = self.settings.get_client_secret()
        if not (client_id and client_secret):
            raise error.SDKError("Required auth credentials not found.")

        serialized = urllib.parse.urlencode({
            "client_id":
            cast(str, client_id),
            "client_secret":
            cast(str, client_secret),
        }).encode("utf-8")

        response = self._ok(
            self.transport.request(
                transport.HttpMethod.POST,
                "/login",
                body=serialized,
                headers={"Content-Type": "application/x-www-form-urlencoded"},
            ))

        access_token = self.deserialize(data=response, structure=token_model)
        assert isinstance(access_token, token_model_isinstances)
        self.admin_token = auth_token.AuthToken(access_token)
コード例 #20
0
 def _reset_admin_token(self) -> None:
     self.admin_token = auth_token.AuthToken()
コード例 #21
0
 def _reset_user_token(self) -> None:
     self.user_token = auth_token.AuthToken()