def set_refresh_token(self, issuer: str, client_id: str, refresh_token: str): data = self.load() log.info("Storing refresh token for issuer {i!r} (client {c!r})".format(i=issuer, c=client_id)) deep_set(data, _normalize_url(issuer), client_id, value={ "date": utcnow_rfc3339(), "refresh_token": refresh_token, }) self._write(data)
def set_oidc_client_config( self, backend: str, provider_id: str, client_id: str, client_secret: str = None, issuer: str = None ): data = self.load() keys = ("backends", _normalize_url(backend), "oidc", "providers", provider_id) # TODO: support multiple clients? (pick latest by default for example) deep_set(data, *keys, "date", value=utcnow_rfc3339()) deep_set(data, *keys, "client_id", value=client_id) if client_secret: deep_set(data, *keys, "client_secret", value=client_secret) if issuer: deep_set(data, *keys, "issuer", value=issuer) self._write(data)
def set_basic_auth(self, backend: str, username: str, password: Union[str, None]): data = self.load() keys = ("backends", _normalize_url(backend), "basic",) # TODO: support multiple basic auth credentials? (pick latest by default for example) deep_set(data, *keys, "date", value=utcnow_rfc3339()) deep_set(data, *keys, "username", value=username) if password: deep_set(data, *keys, "password", value=password) self._write(data)
def test_deep_set_dict(init, keys, expected): d = init deep_set(d, *keys, value=42) assert d == expected
def set(self, *keys, value): data = self.load() deep_set(data, *keys, value=value) self._write(data)