File: C:/Users/fred/anaconda3/Lib/site-packages/anaconda_cloud_auth/panel.py
from functools import cached_property
from panel.auth import OAuthLoginHandler
from panel.config import config
from anaconda_cloud_auth.config import AuthConfig
class AnacondaCloudLoginHandler(OAuthLoginHandler):
"""Anaconda.cloud OAuth2 Authentication
To utilize this handler you must have a Client ID (key)
and secret. The OAuth client at Anaconda.cloud must be
configured for
Set scopes: offline_access, openid, email, profile
Set redirect url to http://localhost:5006
Set grant type: Authorization Code
Set response types: ID Token, Token, Code
Set access token type: JWT
Set Authentication Method: HTTP Body"""
_access_token_header: str = "Bearer {}"
_EXTRA_TOKEN_PARAMS: dict = {"grant_type": "authorization_code"}
_USER_KEY: str = "email"
_OAUTH_REDIRECT_URL: str = "http://localhost:5006"
@cached_property
def _auth_config(self) -> AuthConfig:
c = AuthConfig()
return c
@property
def _OAUTH_AUTHORIZE_URL(self) -> str:
domain = config.oauth_extra_params.get("auth-domain", self._auth_config.domain) # type: ignore
return f"https://{domain}/oauth2/auth"
@property
def _OAUTH_USER_URL(self) -> str:
domain = config.oauth_extra_params.get("auth-domain", self._auth_config.domain) # type: ignore
return f"https://{domain}/oauth2/userinfo"
@property
def _OAUTH_ACCESS_TOKEN_URL(self) -> str:
domain = config.oauth_extra_params.get("auth-domain", self._auth_config.domain) # type: ignore
return f"https://{domain}/oauth2/token"