Mastodon¶
Helper routines for authorizing against Mastodon instances.
- members:
from jupyterhub_oauthenticator_authz_helpers.mastodon import get_followed_groups, build_auth_urls
mastodon_url = "<MASTODON_URL>"
id_to_alias = {
"<ACCOUNT-ID-1>": "group-one",
"<ACCOUNT-ID-2>": "group-two",
}
async def auth_state_hook(authenticator, auth_state):
if auth_state:
access_token = auth_state["access_token"]
auth_state[authenticator.auth_state_groups_key] = [
# Populate groups from Canvas courses, using the scheme defined in get_course_groups
*await get_followed_groups(mastodon_url, access_token, id_to_alias),
]
return auth_state
cfg = c.GenericOAuthenticator
cfg.modify_auth_state_hook = auth_state_hook
cfg.authorize_url, cfg.token_url, cfg.userdata_url = build_auth_urls(mastodon_url)
# Scopes that this token will need, pulled from functions that we've used above
cfg.scope = [*build_auth_urls.scopes, *get_followed_groups.scopes]
- async jupyterhub_oauthenticator_authz_helpers.mastodon.get_followed_groups(mastodon_url: str, token: str, id_to_group_name: dict[str, Any]) list[str]¶
Get list of account IDs that are followed by the user identified by the given token from a pre-determined allow-list of accounts.
- Parameters:
mastodon_url – URL to Mastodon instance
token – Bearer token for authorization
id_to_group_name – mapping from permitted Mastodon server account IDs to user-friendly names
See https://docs.joinmastodon.org/methods/accounts/#relationships.
- jupyterhub_oauthenticator_authz_helpers.mastodon.build_auth_urls(mastodon_url: str) AuthURLs¶
Return a named tuple of the
(auth, token, userdata)URLs for the given Mastodon instance.Examples
>>> cfg = c.GenericOAuthenticator >>> cfg.authorize_url, cfg.token_url, cfg.userdata_url = build_auth_urls(mastodon_url) # noqa: B950
- Parameters:
canvas_url – URL to Mastodon instance
- class jupyterhub_oauthenticator_authz_helpers.mastodon.AuthURLs(authorize, token, userdata)¶