diff --git a/allauth/socialaccount/providers/agave/provider.py b/allauth/socialaccount/providers/agave/provider.py index e08e9dec81..6223347ced 100644 --- a/allauth/socialaccount/providers/agave/provider.py +++ b/allauth/socialaccount/providers/agave/provider.py @@ -1,3 +1,4 @@ +from allauth.socialaccount.providers.agave.views import AgaveAdapter from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -18,6 +19,7 @@ class AgaveProvider(OAuth2Provider): id = "agave" name = "Agave" account_class = AgaveAccount + oauth2_adapter_class = AgaveAdapter def extract_uid(self, data): return str(data.get("create_time")) diff --git a/allauth/socialaccount/providers/agave/views.py b/allauth/socialaccount/providers/agave/views.py index 23a656c8d8..7201681d79 100644 --- a/allauth/socialaccount/providers/agave/views.py +++ b/allauth/socialaccount/providers/agave/views.py @@ -1,6 +1,5 @@ from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.agave.provider import AgaveProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -9,7 +8,7 @@ class AgaveAdapter(OAuth2Adapter): - provider_id = AgaveProvider.id + provider_id = "agave" settings = app_settings.PROVIDERS.get(provider_id, {}) provider_base_url = settings.get("API_URL", "https://public.agaveapi.co") diff --git a/allauth/socialaccount/providers/amazon/provider.py b/allauth/socialaccount/providers/amazon/provider.py index 728340b6c1..0f23330865 100644 --- a/allauth/socialaccount/providers/amazon/provider.py +++ b/allauth/socialaccount/providers/amazon/provider.py @@ -1,3 +1,4 @@ +from allauth.socialaccount.providers.amazon.views import AmazonOAuth2Adapter from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -11,6 +12,7 @@ class AmazonProvider(OAuth2Provider): id = "amazon" name = "Amazon" account_class = AmazonAccount + oauth2_adapter_class = AmazonOAuth2Adapter def get_default_scope(self): return ["profile"] diff --git a/allauth/socialaccount/providers/amazon/views.py b/allauth/socialaccount/providers/amazon/views.py index 87bd7df599..2ea4fcd93f 100644 --- a/allauth/socialaccount/providers/amazon/views.py +++ b/allauth/socialaccount/providers/amazon/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import AmazonProvider - class AmazonOAuth2Adapter(OAuth2Adapter): - provider_id = AmazonProvider.id + provider_id = "amazon" access_token_url = "https://api.amazon.com/auth/o2/token" authorize_url = "http://www.amazon.com/ap/oa" profile_url = "https://api.amazon.com/user/profile" diff --git a/allauth/socialaccount/providers/amazon_cognito/provider.py b/allauth/socialaccount/providers/amazon_cognito/provider.py index 8ca3e2f04c..e0608fb82b 100644 --- a/allauth/socialaccount/providers/amazon_cognito/provider.py +++ b/allauth/socialaccount/providers/amazon_cognito/provider.py @@ -2,6 +2,9 @@ from allauth.socialaccount.providers.amazon_cognito.utils import ( convert_to_python_bool_if_value_is_json_string_bool, ) +from allauth.socialaccount.providers.amazon_cognito.views import ( + AmazonCognitoOAuth2Adapter, +) from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -23,6 +26,7 @@ class AmazonCognitoProvider(OAuth2Provider): id = "amazon_cognito" name = "Amazon Cognito" account_class = AmazonCognitoAccount + oauth2_adapter_class = AmazonCognitoOAuth2Adapter def extract_uid(self, data): return str(data["sub"]) diff --git a/allauth/socialaccount/providers/amazon_cognito/views.py b/allauth/socialaccount/providers/amazon_cognito/views.py index 5737beb7a9..4871138af1 100644 --- a/allauth/socialaccount/providers/amazon_cognito/views.py +++ b/allauth/socialaccount/providers/amazon_cognito/views.py @@ -1,8 +1,5 @@ from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.amazon_cognito.provider import ( - AmazonCognitoProvider, -) from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -11,7 +8,7 @@ class AmazonCognitoOAuth2Adapter(OAuth2Adapter): - provider_id = AmazonCognitoProvider.id + provider_id = "amazon_cognito" DOMAIN_KEY_MISSING_ERROR = ( '"DOMAIN" key is missing in Amazon Cognito configuration.' diff --git a/allauth/socialaccount/providers/angellist/provider.py b/allauth/socialaccount/providers/angellist/provider.py index 0be9ff2a0f..d4a5ace85c 100644 --- a/allauth/socialaccount/providers/angellist/provider.py +++ b/allauth/socialaccount/providers/angellist/provider.py @@ -1,3 +1,6 @@ +from allauth.socialaccount.providers.angellist.views import ( + AngelListOAuth2Adapter, +) from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -18,6 +21,7 @@ class AngelListProvider(OAuth2Provider): id = "angellist" name = "AngelList" account_class = AngelListAccount + oauth2_adapter_class = AngelListOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/angellist/views.py b/allauth/socialaccount/providers/angellist/views.py index 1bf1a43d59..fc663f2085 100644 --- a/allauth/socialaccount/providers/angellist/views.py +++ b/allauth/socialaccount/providers/angellist/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import AngelListProvider - class AngelListOAuth2Adapter(OAuth2Adapter): - provider_id = AngelListProvider.id + provider_id = "angellist" access_token_url = "https://angel.co/api/oauth/token/" authorize_url = "https://angel.co/api/oauth/authorize/" profile_url = "https://api.angel.co/1/me/" diff --git a/allauth/socialaccount/providers/apple/provider.py b/allauth/socialaccount/providers/apple/provider.py index 1916bd699f..771c77f6fe 100644 --- a/allauth/socialaccount/providers/apple/provider.py +++ b/allauth/socialaccount/providers/apple/provider.py @@ -1,5 +1,6 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.app_settings import QUERY_EMAIL +from allauth.socialaccount.providers.apple.views import AppleOAuth2Adapter from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -8,6 +9,7 @@ class AppleProvider(OAuth2Provider): id = "apple" name = "Apple" account_class = ProviderAccount + oauth2_adapter_class = AppleOAuth2Adapter def extract_uid(self, data): return str(data["sub"]) diff --git a/allauth/socialaccount/providers/apple/views.py b/allauth/socialaccount/providers/apple/views.py index 0ec13bae07..7028645b1a 100644 --- a/allauth/socialaccount/providers/apple/views.py +++ b/allauth/socialaccount/providers/apple/views.py @@ -19,12 +19,11 @@ from .apple_session import get_apple_session from .client import AppleOAuth2Client -from .provider import AppleProvider class AppleOAuth2Adapter(OAuth2Adapter): client_class = AppleOAuth2Client - provider_id = AppleProvider.id + provider_id = "apple" access_token_url = "https://appleid.apple.com/auth/token" authorize_url = "https://appleid.apple.com/auth/authorize" public_key_url = "https://appleid.apple.com/auth/keys" diff --git a/allauth/socialaccount/providers/asana/provider.py b/allauth/socialaccount/providers/asana/provider.py index e9685a26e9..020eeb6fd7 100644 --- a/allauth/socialaccount/providers/asana/provider.py +++ b/allauth/socialaccount/providers/asana/provider.py @@ -1,3 +1,4 @@ +from allauth.socialaccount.providers.asana.views import AsanaOAuth2Adapter from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -10,6 +11,7 @@ class AsanaProvider(OAuth2Provider): id = "asana" name = "Asana" account_class = AsanaAccount + oauth2_adapter_class = AsanaOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/asana/views.py b/allauth/socialaccount/providers/asana/views.py index 31dfa4191b..68b006cbfc 100644 --- a/allauth/socialaccount/providers/asana/views.py +++ b/allauth/socialaccount/providers/asana/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import AsanaProvider - class AsanaOAuth2Adapter(OAuth2Adapter): - provider_id = AsanaProvider.id + provider_id = "asana" access_token_url = "https://app.asana.com/-/oauth_token" authorize_url = "https://app.asana.com/-/oauth_authorize" profile_url = "https://app.asana.com/api/1.0/users/me" diff --git a/allauth/socialaccount/providers/auth0/provider.py b/allauth/socialaccount/providers/auth0/provider.py index 3e2288217a..27db501333 100644 --- a/allauth/socialaccount/providers/auth0/provider.py +++ b/allauth/socialaccount/providers/auth0/provider.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +from allauth.socialaccount.providers.auth0.views import Auth0OAuth2Adapter from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -16,6 +16,7 @@ class Auth0Provider(OAuth2Provider): id = "auth0" name = "Auth0" account_class = Auth0Account + oauth2_adapter_class = Auth0OAuth2Adapter def get_default_scope(self): return ["openid", "profile", "email"] diff --git a/allauth/socialaccount/providers/auth0/views.py b/allauth/socialaccount/providers/auth0/views.py index 7b96651152..3b7b3ad317 100644 --- a/allauth/socialaccount/providers/auth0/views.py +++ b/allauth/socialaccount/providers/auth0/views.py @@ -1,7 +1,5 @@ -# -*- coding: utf-8 -*- from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.auth0.provider import Auth0Provider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -10,7 +8,7 @@ class Auth0OAuth2Adapter(OAuth2Adapter): - provider_id = Auth0Provider.id + provider_id = "auth0" supports_state = True settings = app_settings.PROVIDERS.get(provider_id, {}) diff --git a/allauth/socialaccount/providers/authentiq/provider.py b/allauth/socialaccount/providers/authentiq/provider.py index 255c16600b..bb3d32f500 100644 --- a/allauth/socialaccount/providers/authentiq/provider.py +++ b/allauth/socialaccount/providers/authentiq/provider.py @@ -1,5 +1,8 @@ from allauth.account.models import EmailAddress from allauth.socialaccount import app_settings +from allauth.socialaccount.providers.authentiq.views import ( + AuthentiqOAuth2Adapter, +) from allauth.socialaccount.providers.base import AuthAction, ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -56,6 +59,7 @@ class AuthentiqProvider(OAuth2Provider): id = "authentiq" name = "Authentiq" account_class = AuthentiqAccount + oauth2_adapter_class = AuthentiqOAuth2Adapter def get_scope(self, request): scope = set(super(AuthentiqProvider, self).get_scope(request)) diff --git a/allauth/socialaccount/providers/authentiq/views.py b/allauth/socialaccount/providers/authentiq/views.py index 31181a3830..214003a77c 100644 --- a/allauth/socialaccount/providers/authentiq/views.py +++ b/allauth/socialaccount/providers/authentiq/views.py @@ -8,11 +8,9 @@ OAuth2LoginView, ) -from .provider import AuthentiqProvider - class AuthentiqOAuth2Adapter(OAuth2Adapter): - provider_id = AuthentiqProvider.id + provider_id = "authentiq" settings = app_settings.PROVIDERS.get(provider_id, {}) diff --git a/allauth/socialaccount/providers/baidu/provider.py b/allauth/socialaccount/providers/baidu/provider.py index 602716fcc0..24179c7791 100644 --- a/allauth/socialaccount/providers/baidu/provider.py +++ b/allauth/socialaccount/providers/baidu/provider.py @@ -1,3 +1,4 @@ +from allauth.socialaccount.providers.baidu.views import BaiduOAuth2Adapter from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -21,6 +22,7 @@ class BaiduProvider(OAuth2Provider): id = "baidu" name = "Baidu" account_class = BaiduAccount + oauth2_adapter_class = BaiduOAuth2Adapter def extract_uid(self, data): return data["uid"] diff --git a/allauth/socialaccount/providers/baidu/views.py b/allauth/socialaccount/providers/baidu/views.py index 8094803066..0f8e3b9ede 100644 --- a/allauth/socialaccount/providers/baidu/views.py +++ b/allauth/socialaccount/providers/baidu/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import BaiduProvider - class BaiduOAuth2Adapter(OAuth2Adapter): - provider_id = BaiduProvider.id + provider_id = "baidu" access_token_url = "https://openapi.baidu.com/oauth/2.0/token" authorize_url = "https://openapi.baidu.com/oauth/2.0/authorize" profile_url = ( diff --git a/allauth/socialaccount/providers/basecamp/provider.py b/allauth/socialaccount/providers/basecamp/provider.py index f2600a72af..1647863cad 100644 --- a/allauth/socialaccount/providers/basecamp/provider.py +++ b/allauth/socialaccount/providers/basecamp/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.basecamp.views import ( + BasecampOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -15,6 +18,7 @@ class BasecampProvider(OAuth2Provider): id = "basecamp" name = "Basecamp" account_class = BasecampAccount + oauth2_adapter_class = BasecampOAuth2Adapter def get_auth_params(self, request, action): data = super(BasecampProvider, self).get_auth_params(request, action) diff --git a/allauth/socialaccount/providers/basecamp/views.py b/allauth/socialaccount/providers/basecamp/views.py index af78c44e67..aa0511a430 100644 --- a/allauth/socialaccount/providers/basecamp/views.py +++ b/allauth/socialaccount/providers/basecamp/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import BasecampProvider - class BasecampOAuth2Adapter(OAuth2Adapter): - provider_id = BasecampProvider.id + provider_id = "basecamp" access_token_url = ( "https://launchpad.37signals.com/authorization/token?type=web_server" # noqa ) diff --git a/allauth/socialaccount/providers/battlenet/provider.py b/allauth/socialaccount/providers/battlenet/provider.py index 0c32d97224..8c7398a000 100644 --- a/allauth/socialaccount/providers/battlenet/provider.py +++ b/allauth/socialaccount/providers/battlenet/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.battlenet.views import ( + BattleNetOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -12,6 +15,7 @@ class BattleNetProvider(OAuth2Provider): id = "battlenet" name = "Battle.net" account_class = BattleNetAccount + oauth2_adapter_class = BattleNetOAuth2Adapter def extract_uid(self, data): uid = str(data["id"]) diff --git a/allauth/socialaccount/providers/battlenet/views.py b/allauth/socialaccount/providers/battlenet/views.py index cedd6ab400..cfb68d9663 100644 --- a/allauth/socialaccount/providers/battlenet/views.py +++ b/allauth/socialaccount/providers/battlenet/views.py @@ -22,8 +22,6 @@ OAuth2LoginView, ) -from .provider import BattleNetProvider - class Region: APAC = "apac" @@ -76,7 +74,8 @@ class BattleNetOAuth2Adapter(OAuth2Adapter): Can be any of eu, us, kr, sea, tw or cn """ - provider_id = BattleNetProvider.id + provider_id = "battlenet" + valid_regions = ( Region.APAC, Region.CN, diff --git a/allauth/socialaccount/providers/bitbucket_oauth2/provider.py b/allauth/socialaccount/providers/bitbucket_oauth2/provider.py index 9d97ae3bdb..294dbfe454 100644 --- a/allauth/socialaccount/providers/bitbucket_oauth2/provider.py +++ b/allauth/socialaccount/providers/bitbucket_oauth2/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.bitbucket_oauth2.views import ( + BitbucketOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -18,6 +21,7 @@ class BitbucketOAuth2Provider(OAuth2Provider): id = "bitbucket_oauth2" name = "Bitbucket" account_class = BitbucketOAuth2Account + oauth2_adapter_class = BitbucketOAuth2Adapter def extract_uid(self, data): return data["username"] diff --git a/allauth/socialaccount/providers/bitbucket_oauth2/views.py b/allauth/socialaccount/providers/bitbucket_oauth2/views.py index 9386cc6216..527cb3fb28 100644 --- a/allauth/socialaccount/providers/bitbucket_oauth2/views.py +++ b/allauth/socialaccount/providers/bitbucket_oauth2/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import BitbucketOAuth2Provider - class BitbucketOAuth2Adapter(OAuth2Adapter): - provider_id = BitbucketOAuth2Provider.id + provider_id = "bitbucket_oauth2" access_token_url = "https://bitbucket.org/site/oauth2/access_token" authorize_url = "https://bitbucket.org/site/oauth2/authorize" profile_url = "https://api.bitbucket.org/2.0/user" diff --git a/allauth/socialaccount/providers/bitly/provider.py b/allauth/socialaccount/providers/bitly/provider.py index bdfafd137a..4b43d909c3 100644 --- a/allauth/socialaccount/providers/bitly/provider.py +++ b/allauth/socialaccount/providers/bitly/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.bitly.views import BitlyOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -21,6 +22,7 @@ class BitlyProvider(OAuth2Provider): id = "bitly" name = "Bitly" account_class = BitlyAccount + oauth2_adapter_class = BitlyOAuth2Adapter def extract_uid(self, data): return str(data["login"]) diff --git a/allauth/socialaccount/providers/bitly/views.py b/allauth/socialaccount/providers/bitly/views.py index 29d8e67d3c..95f4af91d4 100644 --- a/allauth/socialaccount/providers/bitly/views.py +++ b/allauth/socialaccount/providers/bitly/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import BitlyProvider - class BitlyOAuth2Adapter(OAuth2Adapter): - provider_id = BitlyProvider.id + provider_id = "bitly" access_token_url = "https://api-ssl.bitly.com/oauth/access_token" authorize_url = "https://bitly.com/oauth/authorize" profile_url = "https://api-ssl.bitly.com/v3/user/info" diff --git a/allauth/socialaccount/providers/box/provider.py b/allauth/socialaccount/providers/box/provider.py index 72cea2646b..6426b99f02 100644 --- a/allauth/socialaccount/providers/box/provider.py +++ b/allauth/socialaccount/providers/box/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.box.views import BoxOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -10,6 +11,7 @@ class BoxOAuth2Provider(OAuth2Provider): id = "box" name = "Box" account_class = BoxOAuth2Account + oauth2_adapter_class = BoxOAuth2Adapter def extract_uid(self, data): return data["id"] diff --git a/allauth/socialaccount/providers/box/views.py b/allauth/socialaccount/providers/box/views.py index 0a37ea521d..f3fc26e754 100644 --- a/allauth/socialaccount/providers/box/views.py +++ b/allauth/socialaccount/providers/box/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import BoxOAuth2Provider - class BoxOAuth2Adapter(OAuth2Adapter): - provider_id = BoxOAuth2Provider.id + provider_id = "box" access_token_url = "https://api.box.com/oauth2/token" authorize_url = "https://account.box.com/api/oauth2/authorize" profile_url = "https://api.box.com/2.0/users/me" diff --git a/allauth/socialaccount/providers/cilogon/provider.py b/allauth/socialaccount/providers/cilogon/provider.py index 23c3ebc4c8..7ca6feba4c 100644 --- a/allauth/socialaccount/providers/cilogon/provider.py +++ b/allauth/socialaccount/providers/cilogon/provider.py @@ -1,6 +1,7 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.app_settings import QUERY_EMAIL from allauth.socialaccount.providers.base import AuthAction, ProviderAccount +from allauth.socialaccount.providers.cilogon.views import CILogonOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -21,6 +22,7 @@ class CILogonProvider(OAuth2Provider): id = "cilogon" name = "CILogon" account_class = CILogonAccount + oauth2_adapter_class = CILogonOAuth2Adapter def get_default_scope(self): scope = [Scope.PROFILE, Scope.USERINFO, Scope.OPENID] diff --git a/allauth/socialaccount/providers/cilogon/views.py b/allauth/socialaccount/providers/cilogon/views.py index f5795b1c61..69beb1ee4b 100644 --- a/allauth/socialaccount/providers/cilogon/views.py +++ b/allauth/socialaccount/providers/cilogon/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import CILogonProvider - class CILogonOAuth2Adapter(OAuth2Adapter): - provider_id = CILogonProvider.id + provider_id = "cilogon" access_token_url = "https://cilogon.org/oauth2/token" authorize_url = "https://cilogon.org/authorize" profile_url = "https://cilogon.org/oauth2/userinfo" diff --git a/allauth/socialaccount/providers/clever/provider.py b/allauth/socialaccount/providers/clever/provider.py index 807111866d..a0c8701e49 100644 --- a/allauth/socialaccount/providers/clever/provider.py +++ b/allauth/socialaccount/providers/clever/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount import providers from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.clever.views import CleverOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -20,6 +21,7 @@ class CleverProvider(OAuth2Provider): id = "clever" name = "Clever" account_class = CleverAccount + oauth2_adapter_class = CleverOAuth2Adapter def extract_uid(self, data): return data["data"]["id"] diff --git a/allauth/socialaccount/providers/clever/views.py b/allauth/socialaccount/providers/clever/views.py index caffcbc91d..be2261c140 100644 --- a/allauth/socialaccount/providers/clever/views.py +++ b/allauth/socialaccount/providers/clever/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import CleverProvider - class CleverOAuth2Adapter(OAuth2Adapter): - provider_id = CleverProvider.id + provider_id = "clever" access_token_url = "https://clever.com/oauth/tokens" authorize_url = "https://clever.com/oauth/authorize" diff --git a/allauth/socialaccount/providers/coinbase/provider.py b/allauth/socialaccount/providers/coinbase/provider.py index ec9813fdc9..3ae696c4ff 100644 --- a/allauth/socialaccount/providers/coinbase/provider.py +++ b/allauth/socialaccount/providers/coinbase/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.coinbase.views import ( + CoinbaseOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -16,6 +19,7 @@ class CoinbaseProvider(OAuth2Provider): id = "coinbase" name = "Coinbase" account_class = CoinbaseAccount + oauth2_adapter_class = CoinbaseOAuth2Adapter def get_default_scope(self): # See: https://coinbase.com/docs/api/permissions diff --git a/allauth/socialaccount/providers/coinbase/views.py b/allauth/socialaccount/providers/coinbase/views.py index bc2ea00db3..7ca794567d 100644 --- a/allauth/socialaccount/providers/coinbase/views.py +++ b/allauth/socialaccount/providers/coinbase/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import CoinbaseProvider - class CoinbaseOAuth2Adapter(OAuth2Adapter): - provider_id = CoinbaseProvider.id + provider_id = "coinbase" @property def authorize_url(self): diff --git a/allauth/socialaccount/providers/dataporten/provider.py b/allauth/socialaccount/providers/dataporten/provider.py index 2ffcd1988f..a95c992cf6 100644 --- a/allauth/socialaccount/providers/dataporten/provider.py +++ b/allauth/socialaccount/providers/dataporten/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.dataporten.views import ( + DataportenOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -28,6 +31,7 @@ class DataportenProvider(OAuth2Provider): id = "dataporten" name = "Dataporten" account_class = DataportenAccount + oauth2_adapter_class = DataportenOAuth2Adapter def extract_uid(self, data): """ diff --git a/allauth/socialaccount/providers/dataporten/views.py b/allauth/socialaccount/providers/dataporten/views.py index 55aa87fd76..6dc6ea5f90 100644 --- a/allauth/socialaccount/providers/dataporten/views.py +++ b/allauth/socialaccount/providers/dataporten/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import DataportenProvider - -class DataportenAdapter(OAuth2Adapter): - provider_id = DataportenProvider.id +class DataportenOAuth2Adapter(OAuth2Adapter): + provider_id = "dataporten" access_token_url = "https://auth.dataporten.no/oauth/token" authorize_url = "https://auth.dataporten.no/oauth/authorization" profile_url = "https://auth.dataporten.no/userinfo" @@ -63,5 +61,5 @@ def complete_login(self, request, app, token, **kwargs): ) -oauth2_login = OAuth2LoginView.adapter_view(DataportenAdapter) -oauth2_callback = OAuth2CallbackView.adapter_view(DataportenAdapter) +oauth2_login = OAuth2LoginView.adapter_view(DataportenOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(DataportenOAuth2Adapter) diff --git a/allauth/socialaccount/providers/daum/provider.py b/allauth/socialaccount/providers/daum/provider.py index dad465f993..095a036c2d 100644 --- a/allauth/socialaccount/providers/daum/provider.py +++ b/allauth/socialaccount/providers/daum/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.daum.views import DaumOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -14,6 +15,7 @@ class DaumProvider(OAuth2Provider): id = "Daum" name = "Daum" account_class = DaumAccount + oauth2_adapter_class = DaumOAuth2Adapter def extract_uid(self, data): return str(data.get("id")) diff --git a/allauth/socialaccount/providers/daum/views.py b/allauth/socialaccount/providers/daum/views.py index 1078d299e5..4df5b87662 100644 --- a/allauth/socialaccount/providers/daum/views.py +++ b/allauth/socialaccount/providers/daum/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import DaumProvider - class DaumOAuth2Adapter(OAuth2Adapter): - provider_id = DaumProvider.id + provider_id = "Daum" access_token_url = "https://apis.daum.net/oauth2/token" authorize_url = "https://apis.daum.net/oauth2/authorize" profile_url = "https://apis.daum.net/user/v1/show.json" diff --git a/allauth/socialaccount/providers/digitalocean/provider.py b/allauth/socialaccount/providers/digitalocean/provider.py index 5e614e9fcd..aa02bfacc1 100644 --- a/allauth/socialaccount/providers/digitalocean/provider.py +++ b/allauth/socialaccount/providers/digitalocean/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.digitalocean.views import ( + DigitalOceanOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -10,6 +13,7 @@ class DigitalOceanProvider(OAuth2Provider): id = "digitalocean" name = "DigitalOcean" account_class = DigitalOceanAccount + oauth2_adapter_class = DigitalOceanOAuth2Adapter def extract_uid(self, data): return str(data["account"]["uuid"]) diff --git a/allauth/socialaccount/providers/digitalocean/views.py b/allauth/socialaccount/providers/digitalocean/views.py index aee25a27f5..e864525fdb 100644 --- a/allauth/socialaccount/providers/digitalocean/views.py +++ b/allauth/socialaccount/providers/digitalocean/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import DigitalOceanProvider - class DigitalOceanOAuth2Adapter(OAuth2Adapter): - provider_id = DigitalOceanProvider.id + provider_id = "digitalocean" access_token_url = "https://cloud.digitalocean.com/v1/oauth/token" authorize_url = "https://cloud.digitalocean.com/v1/oauth/authorize" profile_url = "https://api.digitalocean.com/v2/account" diff --git a/allauth/socialaccount/providers/dingtalk/provider.py b/allauth/socialaccount/providers/dingtalk/provider.py index 92576f47fb..f77592583f 100644 --- a/allauth/socialaccount/providers/dingtalk/provider.py +++ b/allauth/socialaccount/providers/dingtalk/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.dingtalk.views import ( + DingTalkOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -16,6 +19,7 @@ class DingTalkProvider(OAuth2Provider): id = "dingtalk" name = "DingTalk" account_class = DingTalkAccount + oauth2_adapter_class = DingTalkOAuth2Adapter def extract_uid(self, data): return data["openId"] diff --git a/allauth/socialaccount/providers/dingtalk/views.py b/allauth/socialaccount/providers/dingtalk/views.py index 096850fb48..786f1a9009 100644 --- a/allauth/socialaccount/providers/dingtalk/views.py +++ b/allauth/socialaccount/providers/dingtalk/views.py @@ -6,11 +6,10 @@ ) from .client import DingTalkOAuth2Client -from .provider import DingTalkProvider class DingTalkOAuth2Adapter(OAuth2Adapter): - provider_id = DingTalkProvider.id + provider_id = "dingtalk" access_token_url = "https://api.dingtalk.com/v1.0/oauth2/userAccessToken" authorize_url = "https://login.dingtalk.com/oauth2/auth" profile_url = "https://api.dingtalk.com/v1.0/contact/users/me" diff --git a/allauth/socialaccount/providers/discord/provider.py b/allauth/socialaccount/providers/discord/provider.py index 11e3685ea8..6500d34343 100644 --- a/allauth/socialaccount/providers/discord/provider.py +++ b/allauth/socialaccount/providers/discord/provider.py @@ -1,5 +1,6 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.discord.views import DiscordOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -73,6 +74,7 @@ class DiscordProvider(OAuth2Provider): id = "discord" name = "Discord" account_class = DiscordAccount + oauth2_adapter_class = DiscordOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/discord/views.py b/allauth/socialaccount/providers/discord/views.py index 9df09ffa83..c9cc1eafdf 100644 --- a/allauth/socialaccount/providers/discord/views.py +++ b/allauth/socialaccount/providers/discord/views.py @@ -1,5 +1,4 @@ from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.discord.provider import DiscordProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -8,7 +7,7 @@ class DiscordOAuth2Adapter(OAuth2Adapter): - provider_id = DiscordProvider.id + provider_id = "discord" access_token_url = "https://discord.com/api/oauth2/token" authorize_url = "https://discord.com/api/oauth2/authorize" profile_url = "https://discord.com/api/users/@me" diff --git a/allauth/socialaccount/providers/disqus/provider.py b/allauth/socialaccount/providers/disqus/provider.py index ab5970d2d7..2d8be53e6a 100644 --- a/allauth/socialaccount/providers/disqus/provider.py +++ b/allauth/socialaccount/providers/disqus/provider.py @@ -1,6 +1,7 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.app_settings import QUERY_EMAIL from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.disqus.views import DisqusOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -20,6 +21,7 @@ class DisqusProvider(OAuth2Provider): id = "disqus" name = "Disqus" account_class = DisqusAccount + oauth2_adapter_class = DisqusOAuth2Adapter def get_default_scope(self): scope = ["read"] diff --git a/allauth/socialaccount/providers/disqus/views.py b/allauth/socialaccount/providers/disqus/views.py index 2db0ee0293..9fa673b030 100644 --- a/allauth/socialaccount/providers/disqus/views.py +++ b/allauth/socialaccount/providers/disqus/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import DisqusProvider - class DisqusOAuth2Adapter(OAuth2Adapter): - provider_id = DisqusProvider.id + provider_id = "disqus" access_token_url = "https://disqus.com/api/oauth/2.0/access_token/" authorize_url = "https://disqus.com/api/oauth/2.0/authorize/" profile_url = "https://disqus.com/api/3.0/users/details.json" diff --git a/allauth/socialaccount/providers/douban/provider.py b/allauth/socialaccount/providers/douban/provider.py index 0483a098d8..d079684241 100755 --- a/allauth/socialaccount/providers/douban/provider.py +++ b/allauth/socialaccount/providers/douban/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.douban.views import DoubanOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -18,6 +19,7 @@ class DoubanProvider(OAuth2Provider): id = "douban" name = "Douban" account_class = DoubanAccount + oauth2_adapter_class = DoubanOAuth2Adapter def extract_uid(self, data): return data["id"] diff --git a/allauth/socialaccount/providers/douban/views.py b/allauth/socialaccount/providers/douban/views.py index d323470a7b..d6ddf5cd8a 100755 --- a/allauth/socialaccount/providers/douban/views.py +++ b/allauth/socialaccount/providers/douban/views.py @@ -8,11 +8,10 @@ ) from ..base import ProviderException -from .provider import DoubanProvider class DoubanOAuth2Adapter(OAuth2Adapter): - provider_id = DoubanProvider.id + provider_id = "douban" access_token_url = "https://www.douban.com/service/auth2/token" authorize_url = "https://www.douban.com/service/auth2/auth" profile_url = "https://api.douban.com/v2/user/~me" diff --git a/allauth/socialaccount/providers/doximity/provider.py b/allauth/socialaccount/providers/doximity/provider.py index cad6be7db4..365d2f923c 100644 --- a/allauth/socialaccount/providers/doximity/provider.py +++ b/allauth/socialaccount/providers/doximity/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.doximity.views import ( + DoximityOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -18,6 +21,7 @@ class DoximityProvider(OAuth2Provider): id = "doximity" name = "Doximity" account_class = DoximityAccount + oauth2_adapter_class = DoximityOAuth2Adapter def extract_uid(self, data): return str(data["id"]) # the Doximity id is long diff --git a/allauth/socialaccount/providers/doximity/views.py b/allauth/socialaccount/providers/doximity/views.py index 0c8e6d0de2..ecae0a01ce 100644 --- a/allauth/socialaccount/providers/doximity/views.py +++ b/allauth/socialaccount/providers/doximity/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import DoximityProvider - class DoximityOAuth2Adapter(OAuth2Adapter): - provider_id = DoximityProvider.id + provider_id = "doximity" access_token_url = "https://auth.doximity.com/oauth/token" authorize_url = "https://auth.doximity.com/oauth/authorize" profile_url = "https://www.doximity.com/api/v1/users/current" diff --git a/allauth/socialaccount/providers/drip/provider.py b/allauth/socialaccount/providers/drip/provider.py index ff7a5abf0c..d94d904262 100644 --- a/allauth/socialaccount/providers/drip/provider.py +++ b/allauth/socialaccount/providers/drip/provider.py @@ -1,5 +1,6 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.drip.views import DripOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -11,6 +12,7 @@ class DripProvider(OAuth2Provider): id = "drip" name = "Drip" account_class = DripAccount + oauth2_adapter_class = DripOAuth2Adapter def extract_uid(self, data): # no uid available, we generate one by hashing the email diff --git a/allauth/socialaccount/providers/drip/views.py b/allauth/socialaccount/providers/drip/views.py index ecd0cc2297..468eabdb96 100644 --- a/allauth/socialaccount/providers/drip/views.py +++ b/allauth/socialaccount/providers/drip/views.py @@ -6,14 +6,12 @@ OAuth2LoginView, ) -from .provider import DripProvider - class DripOAuth2Adapter(OAuth2Adapter): """OAuth2Adapter for Drip API v3.""" - provider_id = DripProvider.id + provider_id = "drip" authorize_url = "https://www.getdrip.com/oauth/authorize" access_token_url = "https://www.getdrip.com/oauth/token" diff --git a/allauth/socialaccount/providers/dropbox/provider.py b/allauth/socialaccount/providers/dropbox/provider.py index a6bb2c91b1..c4836cbb0a 100644 --- a/allauth/socialaccount/providers/dropbox/provider.py +++ b/allauth/socialaccount/providers/dropbox/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount import providers from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.dropbox.views import DropboxOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -11,6 +12,7 @@ class DropboxOAuth2Provider(OAuth2Provider): id = "dropbox" name = "Dropbox" account_class = DropboxOAuth2Account + oauth2_adapter_class = DropboxOAuth2Adapter def extract_uid(self, data): return data["account_id"] diff --git a/allauth/socialaccount/providers/dropbox/views.py b/allauth/socialaccount/providers/dropbox/views.py index 2c6573c90c..320a89e986 100644 --- a/allauth/socialaccount/providers/dropbox/views.py +++ b/allauth/socialaccount/providers/dropbox/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import DropboxOAuth2Provider - class DropboxOAuth2Adapter(OAuth2Adapter): - provider_id = DropboxOAuth2Provider.id + provider_id = "dropbox" access_token_url = "https://api.dropbox.com/oauth2/token" authorize_url = "https://www.dropbox.com/oauth2/authorize" profile_url = "https://api.dropbox.com/2/users/get_current_account" diff --git a/allauth/socialaccount/providers/dwolla/provider.py b/allauth/socialaccount/providers/dwolla/provider.py index 398a5a933d..7897631f31 100644 --- a/allauth/socialaccount/providers/dwolla/provider.py +++ b/allauth/socialaccount/providers/dwolla/provider.py @@ -1,6 +1,7 @@ """Provider for Dwolla""" from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.dwolla.views import DwollaOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -16,6 +17,7 @@ class DwollaProvider(OAuth2Provider): id = "dwolla" name = "Dwolla" account_class = DwollaAccount + oauth2_adapter_class = DwollaOAuth2Adapter def extract_uid(self, data): return str(data.get("id", None)) diff --git a/allauth/socialaccount/providers/dwolla/views.py b/allauth/socialaccount/providers/dwolla/views.py index 00e1f4c7f3..57214dde92 100644 --- a/allauth/socialaccount/providers/dwolla/views.py +++ b/allauth/socialaccount/providers/dwolla/views.py @@ -7,8 +7,6 @@ OAuth2LoginView, ) -from .provider import DwollaProvider - ENVIRONMENTS = { "production": { @@ -36,7 +34,7 @@ class DwollaOAuth2Adapter(OAuth2Adapter): scope_delimiter = "|" - provider_id = DwollaProvider.id + provider_id = "dwolla" access_token_url = TOKEN_URL authorize_url = AUTH_URL diff --git a/allauth/socialaccount/providers/edmodo/provider.py b/allauth/socialaccount/providers/edmodo/provider.py index f48216c7cc..6637c743d7 100644 --- a/allauth/socialaccount/providers/edmodo/provider.py +++ b/allauth/socialaccount/providers/edmodo/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.edmodo.views import EdmodoOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -14,6 +15,7 @@ class EdmodoProvider(OAuth2Provider): id = "edmodo" name = "Edmodo" account_class = EdmodoAccount + oauth2_adapter_class = EdmodoOAuth2Adapter def get_default_scope(self): return ["basic"] diff --git a/allauth/socialaccount/providers/edmodo/views.py b/allauth/socialaccount/providers/edmodo/views.py index a00e695e4d..3787aa05ea 100644 --- a/allauth/socialaccount/providers/edmodo/views.py +++ b/allauth/socialaccount/providers/edmodo/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import EdmodoProvider - class EdmodoOAuth2Adapter(OAuth2Adapter): - provider_id = EdmodoProvider.id + provider_id = "edmodo" access_token_url = "https://api.edmodo.com/oauth/token" authorize_url = "https://api.edmodo.com/oauth/authorize" profile_url = "https://api.edmodo.com/users/me" diff --git a/allauth/socialaccount/providers/edx/provider.py b/allauth/socialaccount/providers/edx/provider.py index 79a56c48f4..eb6bd0b3ad 100644 --- a/allauth/socialaccount/providers/edx/provider.py +++ b/allauth/socialaccount/providers/edx/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.edx.views import EdxOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -12,6 +13,7 @@ class EdxProvider(OAuth2Provider): id = "edx" name = "Edx" account_class = EdxAccount + oauth2_adapter_class = EdxOAuth2Adapter def get_default_scope(self): return ["profile"] diff --git a/allauth/socialaccount/providers/edx/views.py b/allauth/socialaccount/providers/edx/views.py index f0a0a27149..c2629c9060 100644 --- a/allauth/socialaccount/providers/edx/views.py +++ b/allauth/socialaccount/providers/edx/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import EdxProvider - class EdxOAuth2Adapter(OAuth2Adapter): - provider_id = EdxProvider.id + provider_id = "edx" provider_default_url = "https://edx.org" settings = app_settings.PROVIDERS.get(provider_id, {}) diff --git a/allauth/socialaccount/providers/eventbrite/provider.py b/allauth/socialaccount/providers/eventbrite/provider.py index 41b5764e01..1c0cd603dc 100644 --- a/allauth/socialaccount/providers/eventbrite/provider.py +++ b/allauth/socialaccount/providers/eventbrite/provider.py @@ -1,6 +1,9 @@ """Customise Provider classes for Eventbrite API v3.""" from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.eventbrite.views import ( + EventbriteOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -20,6 +23,7 @@ class EventbriteProvider(OAuth2Provider): id = "eventbrite" name = "Eventbrite" account_class = EventbriteAccount + oauth2_adapter_class = EventbriteOAuth2Adapter def extract_uid(self, data): """Extract uid ('id') and ensure it's a str.""" diff --git a/allauth/socialaccount/providers/eventbrite/views.py b/allauth/socialaccount/providers/eventbrite/views.py index 97884ab09a..b6695129e1 100644 --- a/allauth/socialaccount/providers/eventbrite/views.py +++ b/allauth/socialaccount/providers/eventbrite/views.py @@ -6,14 +6,12 @@ OAuth2LoginView, ) -from .provider import EventbriteProvider - class EventbriteOAuth2Adapter(OAuth2Adapter): """OAuth2Adapter for Eventbrite API v3.""" - provider_id = EventbriteProvider.id + provider_id = "eventbrite" authorize_url = "https://www.eventbrite.com/oauth/authorize" access_token_url = "https://www.eventbrite.com/oauth/token" diff --git a/allauth/socialaccount/providers/eveonline/provider.py b/allauth/socialaccount/providers/eveonline/provider.py index 69b5ac590f..be61adcc95 100644 --- a/allauth/socialaccount/providers/eveonline/provider.py +++ b/allauth/socialaccount/providers/eveonline/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.app_settings import STORE_TOKENS from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.eveonline.views import ( + EveOnlineOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -31,6 +34,7 @@ class EveOnlineProvider(OAuth2Provider): id = "eveonline" name = "EVE Online" account_class = EveOnlineAccount + oauth2_adapter_class = EveOnlineOAuth2Adapter def get_default_scope(self): scopes = [] diff --git a/allauth/socialaccount/providers/eveonline/views.py b/allauth/socialaccount/providers/eveonline/views.py index e4db868602..f60b3f9d7d 100644 --- a/allauth/socialaccount/providers/eveonline/views.py +++ b/allauth/socialaccount/providers/eveonline/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import EveOnlineProvider - class EveOnlineOAuth2Adapter(OAuth2Adapter): - provider_id = EveOnlineProvider.id + provider_id = "eveonline" access_token_url = "https://login.eveonline.com/oauth/token" authorize_url = "https://login.eveonline.com/oauth/authorize" profile_url = "https://login.eveonline.com/oauth/verify" diff --git a/allauth/socialaccount/providers/exist/provider.py b/allauth/socialaccount/providers/exist/provider.py index 907a5cc6be..9f170ae43d 100644 --- a/allauth/socialaccount/providers/exist/provider.py +++ b/allauth/socialaccount/providers/exist/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.exist.views import ExistOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -18,6 +19,7 @@ class ExistProvider(OAuth2Provider): id = "exist" name = "Exist.io" account_class = ExistAccount + oauth2_adapter_class = ExistOAuth2Adapter def extract_uid(self, data): return data.get("username") diff --git a/allauth/socialaccount/providers/exist/views.py b/allauth/socialaccount/providers/exist/views.py index 3a72b7b3aa..f06abd02d6 100644 --- a/allauth/socialaccount/providers/exist/views.py +++ b/allauth/socialaccount/providers/exist/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import ExistProvider - class ExistOAuth2Adapter(OAuth2Adapter): - provider_id = ExistProvider.id + provider_id = "exist" access_token_url = "https://exist.io/oauth2/access_token" authorize_url = "https://exist.io/oauth2/authorize" profile_url = "https://exist.io/api/2/accounts/profile/" diff --git a/allauth/socialaccount/providers/facebook/constants.py b/allauth/socialaccount/providers/facebook/constants.py new file mode 100644 index 0000000000..8a3101a1f4 --- /dev/null +++ b/allauth/socialaccount/providers/facebook/constants.py @@ -0,0 +1,17 @@ +from django.conf import settings + + +PROVIDER_ID = "facebook" +GRAPH_API_VERSION = ( + getattr(settings, "SOCIALACCOUNT_PROVIDERS", {}) + .get("facebook", {}) + .get("VERSION", "v13.0") +) +GRAPH_API_URL = ( + getattr(settings, "SOCIALACCOUNT_PROVIDERS", {}) + .get("facebook", {}) + .get("GRAPH_API_URL", "https://graph.facebook.com/{}".format(GRAPH_API_VERSION)) +) + +NONCE_SESSION_KEY = "allauth_facebook_nonce" +NONCE_LENGTH = 32 diff --git a/allauth/socialaccount/providers/facebook/provider.py b/allauth/socialaccount/providers/facebook/provider.py index 8df3718a99..7c18383fad 100644 --- a/allauth/socialaccount/providers/facebook/provider.py +++ b/allauth/socialaccount/providers/facebook/provider.py @@ -2,7 +2,6 @@ import string from urllib.parse import quote -from django.conf import settings from django.middleware.csrf import get_token from django.template.loader import render_to_string from django.urls import reverse @@ -16,27 +15,22 @@ AuthProcess, ProviderAccount, ) +from allauth.socialaccount.providers.facebook.constants import ( + GRAPH_API_URL, + GRAPH_API_VERSION, + NONCE_LENGTH, + NONCE_SESSION_KEY, + PROVIDER_ID, +) +from allauth.socialaccount.providers.facebook.views import ( + FacebookOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider from allauth.utils import import_callable from .locale import get_default_locale_callable -GRAPH_API_VERSION = ( - getattr(settings, "SOCIALACCOUNT_PROVIDERS", {}) - .get("facebook", {}) - .get("VERSION", "v13.0") -) -GRAPH_API_URL = ( - getattr(settings, "SOCIALACCOUNT_PROVIDERS", {}) - .get("facebook", {}) - .get("GRAPH_API_URL", "https://graph.facebook.com/{}".format(GRAPH_API_VERSION)) -) - -NONCE_SESSION_KEY = "allauth_facebook_nonce" -NONCE_LENGTH = 32 - - class FacebookAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get("link") @@ -57,9 +51,10 @@ def to_str(self): class FacebookProvider(OAuth2Provider): - id = "facebook" + id = PROVIDER_ID name = "Facebook" account_class = FacebookAccount + oauth2_adapter_class = FacebookOAuth2Adapter def __init__(self, *args, **kwargs): self._locale_callable_cache = None diff --git a/allauth/socialaccount/providers/facebook/views.py b/allauth/socialaccount/providers/facebook/views.py index f2375336fb..42cee0d717 100644 --- a/allauth/socialaccount/providers/facebook/views.py +++ b/allauth/socialaccount/providers/facebook/views.py @@ -17,6 +17,11 @@ render_authentication_error, ) from allauth.socialaccount.models import SocialLogin, SocialToken +from allauth.socialaccount.providers.facebook.constants import ( + GRAPH_API_URL, + GRAPH_API_VERSION, + PROVIDER_ID, +) from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -24,7 +29,6 @@ ) from .forms import FacebookConnectForm -from .provider import GRAPH_API_URL, GRAPH_API_VERSION, FacebookProvider logger = logging.getLogger(__name__) @@ -60,7 +64,7 @@ def fb_complete_login(request, app, token): class FacebookOAuth2Adapter(OAuth2Adapter): - provider_id = FacebookProvider.id + provider_id = PROVIDER_ID provider_default_auth_url = "https://www.facebook.com/{}/dialog/oauth".format( GRAPH_API_VERSION ) @@ -83,7 +87,7 @@ def complete_login(self, request, app, access_token, **kwargs): class LoginByTokenView(View): def dispatch(self, request): self.adapter = get_adapter() - self.provider = self.adapter.get_provider(request, FacebookProvider.id) + self.provider = self.adapter.get_provider(request, PROVIDER_ID) try: return super().dispatch(request) except ( diff --git a/allauth/socialaccount/providers/feedly/provider.py b/allauth/socialaccount/providers/feedly/provider.py index a3be454a54..717c866442 100644 --- a/allauth/socialaccount/providers/feedly/provider.py +++ b/allauth/socialaccount/providers/feedly/provider.py @@ -1,6 +1,5 @@ -from __future__ import unicode_literals - from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.feedly.views import FeedlyOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -22,6 +21,7 @@ class FeedlyProvider(OAuth2Provider): id = str("feedly") name = "Feedly" account_class = FeedlyAccount + oauth2_adapter_class = FeedlyOAuth2Adapter def get_default_scope(self): return ["https://cloud.feedly.com/subscriptions"] diff --git a/allauth/socialaccount/providers/feedly/views.py b/allauth/socialaccount/providers/feedly/views.py index f45b6df319..4c41d3bd6d 100644 --- a/allauth/socialaccount/providers/feedly/views.py +++ b/allauth/socialaccount/providers/feedly/views.py @@ -1,5 +1,3 @@ -from __future__ import unicode_literals - from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter from allauth.socialaccount.providers.oauth2.views import ( @@ -8,11 +6,9 @@ OAuth2LoginView, ) -from .provider import FeedlyProvider - class FeedlyOAuth2Adapter(OAuth2Adapter): - provider_id = FeedlyProvider.id + provider_id = "feedly" host = app_settings.PROVIDERS.get(provider_id, {}).get("HOST", "cloud.feedly.com") access_token_url = "https://%s/v3/auth/token" % host authorize_url = "https://%s/v3/auth/auth" % host diff --git a/allauth/socialaccount/providers/feishu/provider.py b/allauth/socialaccount/providers/feishu/provider.py index 211c4fa9b6..66e07df9a2 100644 --- a/allauth/socialaccount/providers/feishu/provider.py +++ b/allauth/socialaccount/providers/feishu/provider.py @@ -1,6 +1,5 @@ -# -*- coding: utf-8 -*- - from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.feishu.views import FeishuOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -16,6 +15,7 @@ class FeishuProvider(OAuth2Provider): id = "feishu" name = "feishu" account_class = FeishuAccount + oauth2_adapter_class = FeishuOAuth2Adapter def extract_uid(self, data): return data["open_id"] diff --git a/allauth/socialaccount/providers/feishu/views.py b/allauth/socialaccount/providers/feishu/views.py index 7ae968b8e2..132502109b 100644 --- a/allauth/socialaccount/providers/feishu/views.py +++ b/allauth/socialaccount/providers/feishu/views.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- - from django.urls import reverse from allauth.account import app_settings @@ -13,11 +11,10 @@ from allauth.utils import build_absolute_uri from .client import FeishuOAuth2Client -from .provider import FeishuProvider class FeishuOAuth2Adapter(OAuth2Adapter): - provider_id = FeishuProvider.id + provider_id = "feishu" authorization_url = "https://open.feishu.cn/open-apis/authen/v1/index" access_token_url = "https://open.feishu.cn/open-apis/authen/v1/access_token" diff --git a/allauth/socialaccount/providers/figma/provider.py b/allauth/socialaccount/providers/figma/provider.py index 7e26cc4ce2..308a4961e0 100644 --- a/allauth/socialaccount/providers/figma/provider.py +++ b/allauth/socialaccount/providers/figma/provider.py @@ -1,6 +1,7 @@ from allauth.account.models import EmailAddress from allauth.socialaccount import providers from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.figma.views import FigmaOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -16,6 +17,7 @@ class FigmaProvider(OAuth2Provider): id = "figma" name = "Figma" account_class = FigmaAccount + oauth2_adapter_class = FigmaOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/figma/views.py b/allauth/socialaccount/providers/figma/views.py index 7a0c096088..7d33404189 100644 --- a/allauth/socialaccount/providers/figma/views.py +++ b/allauth/socialaccount/providers/figma/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import FigmaProvider - class FigmaOAuth2Adapter(OAuth2Adapter): - provider_id = FigmaProvider.id + provider_id = "figma" authorize_url = "https://www.figma.com/oauth" access_token_url = "https://www.figma.com/api/oauth/token" diff --git a/allauth/socialaccount/providers/foursquare/provider.py b/allauth/socialaccount/providers/foursquare/provider.py index 0a4a10cfa9..2f6efd53b2 100644 --- a/allauth/socialaccount/providers/foursquare/provider.py +++ b/allauth/socialaccount/providers/foursquare/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.foursquare.views import ( + FoursquareOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -18,6 +21,7 @@ class FoursquareProvider(OAuth2Provider): id = "foursquare" name = "Foursquare" account_class = FoursquareAccount + oauth2_adapter_class = FoursquareOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/foursquare/views.py b/allauth/socialaccount/providers/foursquare/views.py index 29b199f184..094e5968ab 100644 --- a/allauth/socialaccount/providers/foursquare/views.py +++ b/allauth/socialaccount/providers/foursquare/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import FoursquareProvider - class FoursquareOAuth2Adapter(OAuth2Adapter): - provider_id = FoursquareProvider.id + provider_id = "foursquare" access_token_url = "https://foursquare.com/oauth2/access_token" # Issue ?? -- this one authenticates over and over again... # authorize_url = 'https://foursquare.com/oauth2/authorize' diff --git a/allauth/socialaccount/providers/frontier/provider.py b/allauth/socialaccount/providers/frontier/provider.py index 94a3546403..1b29abfbdd 100644 --- a/allauth/socialaccount/providers/frontier/provider.py +++ b/allauth/socialaccount/providers/frontier/provider.py @@ -3,6 +3,9 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.frontier.views import ( + FrontierOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -31,6 +34,7 @@ class FrontierProvider(OAuth2Provider): id = "frontier" name = "Frontier" account_class = FrontierAccount + oauth2_adapter_class = FrontierOAuth2Adapter def get_default_scope(self): scope = ["auth", "capi"] diff --git a/allauth/socialaccount/providers/frontier/views.py b/allauth/socialaccount/providers/frontier/views.py index 02b133eb6d..c7070851e2 100644 --- a/allauth/socialaccount/providers/frontier/views.py +++ b/allauth/socialaccount/providers/frontier/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import FrontierProvider - class FrontierOAuth2Adapter(OAuth2Adapter): - provider_id = FrontierProvider.id + provider_id = "frontier" AUTH_API = "https://auth.frontierstore.net" access_token_url = AUTH_API + "/token" authorize_url = AUTH_API + "/auth" diff --git a/allauth/socialaccount/providers/fxa/constants.py b/allauth/socialaccount/providers/fxa/constants.py new file mode 100644 index 0000000000..b689be6a9b --- /dev/null +++ b/allauth/socialaccount/providers/fxa/constants.py @@ -0,0 +1,11 @@ +from django.conf import settings + + +_FXA_SETTINGS = getattr(settings, "SOCIALACCOUNT_PROVIDERS", {}).get("fxa", {}) +FXA_OAUTH_ENDPOINT = _FXA_SETTINGS.get( + "OAUTH_ENDPOINT", "https://oauth.accounts.firefox.com/v1" +) +FXA_PROFILE_ENDPOINT = _FXA_SETTINGS.get( + "PROFILE_ENDPOINT", "https://profile.accounts.firefox.com/v1" +) +PROVIDER_ID = "fxa" diff --git a/allauth/socialaccount/providers/fxa/provider.py b/allauth/socialaccount/providers/fxa/provider.py index c5cd9588ff..474f119b0f 100644 --- a/allauth/socialaccount/providers/fxa/provider.py +++ b/allauth/socialaccount/providers/fxa/provider.py @@ -1,16 +1,9 @@ -from django.conf import settings - from allauth.socialaccount.providers.base import ProviderAccount -from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider - - -_FXA_SETTINGS = getattr(settings, "SOCIALACCOUNT_PROVIDERS", {}).get("fxa", {}) -FXA_OAUTH_ENDPOINT = _FXA_SETTINGS.get( - "OAUTH_ENDPOINT", "https://oauth.accounts.firefox.com/v1" -) -FXA_PROFILE_ENDPOINT = _FXA_SETTINGS.get( - "PROFILE_ENDPOINT", "https://profile.accounts.firefox.com/v1" +from allauth.socialaccount.providers.fxa.constants import PROVIDER_ID +from allauth.socialaccount.providers.fxa.views import ( + FirefoxAccountsOAuth2Adapter, ) +from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class FirefoxAccountsAccount(ProviderAccount): @@ -19,9 +12,10 @@ def to_str(self): class FirefoxAccountsProvider(OAuth2Provider): - id = "fxa" + id = PROVIDER_ID name = "Firefox Accounts" account_class = FirefoxAccountsAccount + oauth2_adapter_class = FirefoxAccountsOAuth2Adapter def get_default_scope(self): return ["profile"] diff --git a/allauth/socialaccount/providers/fxa/views.py b/allauth/socialaccount/providers/fxa/views.py index cc2a931818..ba7dca0347 100644 --- a/allauth/socialaccount/providers/fxa/views.py +++ b/allauth/socialaccount/providers/fxa/views.py @@ -5,15 +5,11 @@ OAuth2LoginView, ) -from .provider import ( - FXA_OAUTH_ENDPOINT, - FXA_PROFILE_ENDPOINT, - FirefoxAccountsProvider, -) +from .constants import FXA_OAUTH_ENDPOINT, FXA_PROFILE_ENDPOINT, PROVIDER_ID class FirefoxAccountsOAuth2Adapter(OAuth2Adapter): - provider_id = FirefoxAccountsProvider.id + provider_id = PROVIDER_ID access_token_url = FXA_OAUTH_ENDPOINT + "/token" authorize_url = FXA_OAUTH_ENDPOINT + "/authorization" profile_url = FXA_PROFILE_ENDPOINT + "/profile" diff --git a/allauth/socialaccount/providers/gitea/provider.py b/allauth/socialaccount/providers/gitea/provider.py index 6b922762ce..cb07961bef 100644 --- a/allauth/socialaccount/providers/gitea/provider.py +++ b/allauth/socialaccount/providers/gitea/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.gitea.views import GiteaOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -26,6 +27,7 @@ class GiteaProvider(OAuth2Provider): id = "gitea" name = "Gitea" account_class = GiteaAccount + oauth2_adapter_class = GiteaOAuth2Adapter def get_default_scope(self): scope = [] diff --git a/allauth/socialaccount/providers/gitea/views.py b/allauth/socialaccount/providers/gitea/views.py index b2b5c37e09..e3af71aab6 100644 --- a/allauth/socialaccount/providers/gitea/views.py +++ b/allauth/socialaccount/providers/gitea/views.py @@ -1,6 +1,5 @@ from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.gitea.provider import GiteaProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -9,7 +8,7 @@ class GiteaOAuth2Adapter(OAuth2Adapter): - provider_id = GiteaProvider.id + provider_id = "gitea" settings = app_settings.PROVIDERS.get(provider_id, {}) if "GITEA_URL" in settings: diff --git a/allauth/socialaccount/providers/github/provider.py b/allauth/socialaccount/providers/github/provider.py index 8d9ef84ee0..a8590ff2ad 100644 --- a/allauth/socialaccount/providers/github/provider.py +++ b/allauth/socialaccount/providers/github/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.github.views import GitHubOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -27,6 +28,7 @@ class GitHubProvider(OAuth2Provider): id = "github" name = "GitHub" account_class = GitHubAccount + oauth2_adapter_class = GitHubOAuth2Adapter def get_default_scope(self): scope = [] diff --git a/allauth/socialaccount/providers/github/views.py b/allauth/socialaccount/providers/github/views.py index d7491b3688..a0bc2af87a 100644 --- a/allauth/socialaccount/providers/github/views.py +++ b/allauth/socialaccount/providers/github/views.py @@ -1,6 +1,5 @@ from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.github.provider import GitHubProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -9,7 +8,7 @@ class GitHubOAuth2Adapter(OAuth2Adapter): - provider_id = GitHubProvider.id + provider_id = "github" settings = app_settings.PROVIDERS.get(provider_id, {}) if "GITHUB_URL" in settings: diff --git a/allauth/socialaccount/providers/gitlab/provider.py b/allauth/socialaccount/providers/gitlab/provider.py index 8324b9c408..d37855fd7f 100644 --- a/allauth/socialaccount/providers/gitlab/provider.py +++ b/allauth/socialaccount/providers/gitlab/provider.py @@ -1,5 +1,5 @@ -# -*- coding: utf-8 -*- from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.gitlab.views import GitLabOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -19,6 +19,7 @@ class GitLabProvider(OAuth2Provider): id = "gitlab" name = "GitLab" account_class = GitLabAccount + oauth2_adapter_class = GitLabOAuth2Adapter def get_default_scope(self): return ["read_user"] diff --git a/allauth/socialaccount/providers/gitlab/views.py b/allauth/socialaccount/providers/gitlab/views.py index 301c5ee1a4..d2525005f2 100644 --- a/allauth/socialaccount/providers/gitlab/views.py +++ b/allauth/socialaccount/providers/gitlab/views.py @@ -1,8 +1,6 @@ -# -*- coding: utf-8 -*- from allauth.core import context from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.gitlab.provider import GitLabProvider from allauth.socialaccount.providers.oauth2.client import OAuth2Error from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, @@ -42,7 +40,7 @@ def _check_errors(response): class GitLabOAuth2Adapter(OAuth2Adapter): - provider_id = GitLabProvider.id + provider_id = "gitlab" provider_default_url = "https://gitlab.com" provider_api_version = "v4" diff --git a/allauth/socialaccount/providers/globus/provider.py b/allauth/socialaccount/providers/globus/provider.py index 777e76e07e..11ed868a2e 100644 --- a/allauth/socialaccount/providers/globus/provider.py +++ b/allauth/socialaccount/providers/globus/provider.py @@ -3,6 +3,7 @@ ProviderAccount, ProviderException, ) +from allauth.socialaccount.providers.globus.views import GlobusOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -22,6 +23,7 @@ class GlobusProvider(OAuth2Provider): id = "globus" name = "Globus" account_class = GlobusAccount + oauth2_adapter_class = GlobusOAuth2Adapter def extract_uid(self, data): if "sub" not in data: diff --git a/allauth/socialaccount/providers/globus/views.py b/allauth/socialaccount/providers/globus/views.py index 314f96870d..e80f1435d9 100644 --- a/allauth/socialaccount/providers/globus/views.py +++ b/allauth/socialaccount/providers/globus/views.py @@ -1,5 +1,4 @@ from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.globus.provider import GlobusProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -7,8 +6,8 @@ ) -class GlobusAdapter(OAuth2Adapter): - provider_id = GlobusProvider.id +class GlobusOAuth2Adapter(OAuth2Adapter): + provider_id = "globus" provider_default_url = "https://auth.globus.org/v2/oauth2" provider_base_url = "https://auth.globus.org/v2/oauth2" @@ -33,5 +32,5 @@ def complete_login(self, request, app, token, response): return self.get_provider().sociallogin_from_response(request, extra_data.json()) -oauth2_login = OAuth2LoginView.adapter_view(GlobusAdapter) -oauth2_callback = OAuth2CallbackView.adapter_view(GlobusAdapter) +oauth2_login = OAuth2LoginView.adapter_view(GlobusOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(GlobusOAuth2Adapter) diff --git a/allauth/socialaccount/providers/google/provider.py b/allauth/socialaccount/providers/google/provider.py index eaf92bd05a..9686e742de 100644 --- a/allauth/socialaccount/providers/google/provider.py +++ b/allauth/socialaccount/providers/google/provider.py @@ -1,6 +1,7 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.app_settings import QUERY_EMAIL from allauth.socialaccount.providers.base import AuthAction, ProviderAccount +from allauth.socialaccount.providers.google.views import GoogleOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -54,6 +55,7 @@ class GoogleProvider(OAuth2Provider): id = "google" name = "Google" account_class = GoogleAccount + oauth2_adapter_class = GoogleOAuth2Adapter def get_default_scope(self): scope = [Scope.PROFILE] diff --git a/allauth/socialaccount/providers/google/views.py b/allauth/socialaccount/providers/google/views.py index 7eb3f5a67a..5eee52ea34 100644 --- a/allauth/socialaccount/providers/google/views.py +++ b/allauth/socialaccount/providers/google/views.py @@ -18,8 +18,6 @@ OAuth2LoginView, ) -from .provider import GoogleProvider - CERTS_URL = ( getattr(settings, "SOCIALACCOUNT_PROVIDERS", {}) @@ -70,7 +68,7 @@ def _verify_and_decode(app, credential, verify_signature=True): class GoogleOAuth2Adapter(OAuth2Adapter): - provider_id = GoogleProvider.id + provider_id = "google" access_token_url = ACCESS_TOKEN_URL authorize_url = AUTHORIZE_URL id_token_issuer = ID_TOKEN_ISSUER @@ -124,7 +122,9 @@ def _fetch_user_info(self, access_token): class LoginByTokenView(View): def dispatch(self, request): self.adapter = get_adapter() - self.provider = self.adapter.get_provider(request, GoogleProvider.id) + self.provider = self.adapter.get_provider( + request, GoogleOAuth2Adapter.provider_id + ) try: return super().dispatch(request) except ( diff --git a/allauth/socialaccount/providers/gumroad/provider.py b/allauth/socialaccount/providers/gumroad/provider.py index 1d115d6ea2..33a5631171 100644 --- a/allauth/socialaccount/providers/gumroad/provider.py +++ b/allauth/socialaccount/providers/gumroad/provider.py @@ -1,5 +1,5 @@ -# -*- coding: utf-8 -*- from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.gumroad.views import GumroadOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -16,6 +16,7 @@ class GumroadProvider(OAuth2Provider): id = "gumroad" name = "Gumroad" account_class = GumroadAccount + oauth2_adapter_class = GumroadOAuth2Adapter def get_default_scope(self): return ["edit_products"] diff --git a/allauth/socialaccount/providers/gumroad/views.py b/allauth/socialaccount/providers/gumroad/views.py index 2cd07e7ec9..9631e13a39 100644 --- a/allauth/socialaccount/providers/gumroad/views.py +++ b/allauth/socialaccount/providers/gumroad/views.py @@ -1,7 +1,5 @@ -# -*- coding: utf-8 -*- from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.gumroad.provider import GumroadProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -9,8 +7,8 @@ ) -class GumroadOauth2Adapter(OAuth2Adapter): - provider_id = GumroadProvider.id +class GumroadOAuth2Adapter(OAuth2Adapter): + provider_id = "gumroad" supports_state = True settings = app_settings.PROVIDERS.get(provider_id, {}) @@ -33,5 +31,5 @@ def complete_login(self, request, app, token, response): ) -oauth2_login = OAuth2LoginView.adapter_view(GumroadOauth2Adapter) -oauth2_callback = OAuth2CallbackView.adapter_view(GumroadOauth2Adapter) +oauth2_login = OAuth2LoginView.adapter_view(GumroadOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(GumroadOAuth2Adapter) diff --git a/allauth/socialaccount/providers/hubic/provider.py b/allauth/socialaccount/providers/hubic/provider.py index 6802e52cd4..238a419285 100644 --- a/allauth/socialaccount/providers/hubic/provider.py +++ b/allauth/socialaccount/providers/hubic/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.hubic.views import HubicOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -10,6 +11,7 @@ class HubicProvider(OAuth2Provider): id = "hubic" name = "Hubic" account_class = HubicAccount + oauth2_adapter_class = HubicOAuth2Adapter def extract_uid(self, data): return str(data["email"]) diff --git a/allauth/socialaccount/providers/hubic/views.py b/allauth/socialaccount/providers/hubic/views.py index b8ffd102a4..6694da3483 100644 --- a/allauth/socialaccount/providers/hubic/views.py +++ b/allauth/socialaccount/providers/hubic/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import HubicProvider - class HubicOAuth2Adapter(OAuth2Adapter): - provider_id = HubicProvider.id + provider_id = "hubic" access_token_url = "https://api.hubic.com/oauth/token" authorize_url = "https://api.hubic.com/oauth/auth" profile_url = "https://api.hubic.com/1.0/account" diff --git a/allauth/socialaccount/providers/hubspot/provider.py b/allauth/socialaccount/providers/hubspot/provider.py index 5325edcba9..2e4a96ce7a 100644 --- a/allauth/socialaccount/providers/hubspot/provider.py +++ b/allauth/socialaccount/providers/hubspot/provider.py @@ -1,5 +1,6 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.hubspot.views import HubspotOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -11,6 +12,7 @@ class HubspotProvider(OAuth2Provider): id = "hubspot" name = "Hubspot" account_class = HubspotAccount + oauth2_adapter_class = HubspotOAuth2Adapter def get_default_scope(self): return ["oauth"] diff --git a/allauth/socialaccount/providers/hubspot/views.py b/allauth/socialaccount/providers/hubspot/views.py index 1c7d17f4ea..8809e8502e 100644 --- a/allauth/socialaccount/providers/hubspot/views.py +++ b/allauth/socialaccount/providers/hubspot/views.py @@ -6,13 +6,11 @@ OAuth2LoginView, ) -from .provider import HubspotProvider - class HubspotOAuth2Adapter(OAuth2Adapter): """OAuth2Adapter for Hubspot API v3.""" - provider_id = HubspotProvider.id + provider_id = "hubspot" authorize_url = "https://app.hubspot.com/oauth/authorize" access_token_url = "https://api.hubapi.com/oauth/v1/token" diff --git a/allauth/socialaccount/providers/instagram/provider.py b/allauth/socialaccount/providers/instagram/provider.py index 58a2908914..c66e8a988d 100644 --- a/allauth/socialaccount/providers/instagram/provider.py +++ b/allauth/socialaccount/providers/instagram/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.instagram.views import ( + InstagramOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -17,6 +20,7 @@ class InstagramProvider(OAuth2Provider): id = "instagram" name = "Instagram" account_class = InstagramAccount + oauth2_adapter_class = InstagramOAuth2Adapter def extract_extra_data(self, data): return data diff --git a/allauth/socialaccount/providers/instagram/views.py b/allauth/socialaccount/providers/instagram/views.py index af849b7d5e..5ad2d6c525 100644 --- a/allauth/socialaccount/providers/instagram/views.py +++ b/allauth/socialaccount/providers/instagram/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import InstagramProvider - class InstagramOAuth2Adapter(OAuth2Adapter): - provider_id = InstagramProvider.id + provider_id = "instagram" access_token_url = "https://api.instagram.com/oauth/access_token" authorize_url = "https://api.instagram.com/oauth/authorize" profile_url = "https://graph.instagram.com/me" diff --git a/allauth/socialaccount/providers/jupyterhub/provider.py b/allauth/socialaccount/providers/jupyterhub/provider.py index 91fc7d6dbb..aaa56e113a 100644 --- a/allauth/socialaccount/providers/jupyterhub/provider.py +++ b/allauth/socialaccount/providers/jupyterhub/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.jupyterhub.views import ( + JupyterHubOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -12,6 +15,7 @@ class JupyterHubProvider(OAuth2Provider): id = "jupyterhub" name = "JupyterHub" account_class = JupyterHubAccount + oauth2_adapter_class = JupyterHubOAuth2Adapter def extract_uid(self, data): return str(data.get("name")) diff --git a/allauth/socialaccount/providers/jupyterhub/views.py b/allauth/socialaccount/providers/jupyterhub/views.py index 9f582c97c4..ce61875c4a 100644 --- a/allauth/socialaccount/providers/jupyterhub/views.py +++ b/allauth/socialaccount/providers/jupyterhub/views.py @@ -1,8 +1,5 @@ from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.jupyterhub.provider import ( - JupyterHubProvider, -) from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -10,8 +7,8 @@ ) -class JupyterHubAdapter(OAuth2Adapter): - provider_id = JupyterHubProvider.id +class JupyterHubOAuth2Adapter(OAuth2Adapter): + provider_id = "jupyterhub" settings = app_settings.PROVIDERS.get(provider_id, {}) provider_base_url = settings.get("API_URL", "") @@ -32,5 +29,5 @@ def complete_login(self, request, app, access_token, **kwargs): return self.get_provider().sociallogin_from_response(request, user_profile) -oauth2_login = OAuth2LoginView.adapter_view(JupyterHubAdapter) -oauth2_callback = OAuth2CallbackView.adapter_view(JupyterHubAdapter) +oauth2_login = OAuth2LoginView.adapter_view(JupyterHubOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(JupyterHubOAuth2Adapter) diff --git a/allauth/socialaccount/providers/kakao/provider.py b/allauth/socialaccount/providers/kakao/provider.py index 47f50325ae..026a4d358d 100644 --- a/allauth/socialaccount/providers/kakao/provider.py +++ b/allauth/socialaccount/providers/kakao/provider.py @@ -1,5 +1,6 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.kakao.views import KakaoOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -20,6 +21,7 @@ class KakaoProvider(OAuth2Provider): id = "kakao" name = "Kakao" account_class = KakaoAccount + oauth2_adapter_class = KakaoOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/kakao/views.py b/allauth/socialaccount/providers/kakao/views.py index 50f4771a8c..e496b64b0d 100644 --- a/allauth/socialaccount/providers/kakao/views.py +++ b/allauth/socialaccount/providers/kakao/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import KakaoProvider - class KakaoOAuth2Adapter(OAuth2Adapter): - provider_id = KakaoProvider.id + provider_id = "kakao" access_token_url = "https://kauth.kakao.com/oauth/token" authorize_url = "https://kauth.kakao.com/oauth/authorize" profile_url = "https://kapi.kakao.com/v2/user/me" diff --git a/allauth/socialaccount/providers/lemonldap/provider.py b/allauth/socialaccount/providers/lemonldap/provider.py index d8883f8d27..bc6c90deaa 100644 --- a/allauth/socialaccount/providers/lemonldap/provider.py +++ b/allauth/socialaccount/providers/lemonldap/provider.py @@ -1,5 +1,7 @@ -# -*- coding: utf-8 -*- from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.lemonldap.views import ( + LemonLDAPOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -16,6 +18,7 @@ class LemonLDAPProvider(OAuth2Provider): id = "lemonldap" name = "LemonLDAP::NG" account_class = LemonLDAPAccount + oauth2_adapter_class = LemonLDAPOAuth2Adapter def get_default_scope(self): return ["openid", "profile", "email"] diff --git a/allauth/socialaccount/providers/lemonldap/views.py b/allauth/socialaccount/providers/lemonldap/views.py index f215063261..7cf21d3aea 100644 --- a/allauth/socialaccount/providers/lemonldap/views.py +++ b/allauth/socialaccount/providers/lemonldap/views.py @@ -1,9 +1,5 @@ -# -*- coding: utf-8 -*- from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.lemonldap.provider import ( - LemonLDAPProvider, -) from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -12,7 +8,7 @@ class LemonLDAPOAuth2Adapter(OAuth2Adapter): - provider_id = LemonLDAPProvider.id + provider_id = "lemonldap" supports_state = True settings = app_settings.PROVIDERS.get(provider_id, {}) diff --git a/allauth/socialaccount/providers/line/provider.py b/allauth/socialaccount/providers/line/provider.py index 74dd94e138..72eec342f8 100644 --- a/allauth/socialaccount/providers/line/provider.py +++ b/allauth/socialaccount/providers/line/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.line.views import LineOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -16,6 +17,7 @@ class LineProvider(OAuth2Provider): id = "line" name = "Line" account_class = LineAccount + oauth2_adapter_class = LineOAuth2Adapter def get_default_scope(self): return [] diff --git a/allauth/socialaccount/providers/line/views.py b/allauth/socialaccount/providers/line/views.py index 2d111451b8..d955a3553f 100644 --- a/allauth/socialaccount/providers/line/views.py +++ b/allauth/socialaccount/providers/line/views.py @@ -11,11 +11,9 @@ OAuth2LoginView, ) -from .provider import LineProvider - class LineOAuth2Adapter(OAuth2Adapter): - provider_id = LineProvider.id + provider_id = "line" access_token_url = "https://api.line.me/oauth2/v2.1/token" authorize_url = "https://access.line.me/oauth2/v2.1/authorize" profile_url = "https://api.line.me/v2/profile" # https://developers.line.biz/en/reference/line-login/#get-user-profile diff --git a/allauth/socialaccount/providers/linkedin_oauth2/provider.py b/allauth/socialaccount/providers/linkedin_oauth2/provider.py index 7e609a3818..3f47500e40 100644 --- a/allauth/socialaccount/providers/linkedin_oauth2/provider.py +++ b/allauth/socialaccount/providers/linkedin_oauth2/provider.py @@ -3,6 +3,9 @@ ProviderAccount, ProviderException, ) +from allauth.socialaccount.providers.linkedin_oauth2.views import ( + LinkedInOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -109,6 +112,7 @@ class LinkedInOAuth2Provider(OAuth2Provider): # Name is displayed to ordinary users -- don't include protocol name = "LinkedIn" account_class = LinkedInOAuth2Account + oauth2_adapter_class = LinkedInOAuth2Adapter def extract_uid(self, data): if "id" not in data: diff --git a/allauth/socialaccount/providers/linkedin_oauth2/views.py b/allauth/socialaccount/providers/linkedin_oauth2/views.py index f9176520b0..883bdd95c9 100644 --- a/allauth/socialaccount/providers/linkedin_oauth2/views.py +++ b/allauth/socialaccount/providers/linkedin_oauth2/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import LinkedInOAuth2Provider - class LinkedInOAuth2Adapter(OAuth2Adapter): - provider_id = LinkedInOAuth2Provider.id + provider_id = "linkedin_oauth2" access_token_url = "https://www.linkedin.com/oauth/v2/accessToken" authorize_url = "https://www.linkedin.com/oauth/v2/authorization" profile_url = "https://api.linkedin.com/v2/me" diff --git a/allauth/socialaccount/providers/mailchimp/provider.py b/allauth/socialaccount/providers/mailchimp/provider.py index e0970713e2..e29a6aa881 100644 --- a/allauth/socialaccount/providers/mailchimp/provider.py +++ b/allauth/socialaccount/providers/mailchimp/provider.py @@ -1,5 +1,8 @@ """Customise Provider classes for MailChimp API v3.""" from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.mailchimp.views import ( + MailChimpOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -23,6 +26,7 @@ class MailChimpProvider(OAuth2Provider): id = "mailchimp" name = "MailChimp" account_class = MailChimpAccount + oauth2_adapter_class = MailChimpOAuth2Adapter def extract_uid(self, data): """Extract uid ('user_id') and ensure it's a str.""" diff --git a/allauth/socialaccount/providers/mailchimp/views.py b/allauth/socialaccount/providers/mailchimp/views.py index a94c1fb308..fd3141b53c 100644 --- a/allauth/socialaccount/providers/mailchimp/views.py +++ b/allauth/socialaccount/providers/mailchimp/views.py @@ -6,15 +6,12 @@ OAuth2LoginView, ) -from .provider import MailChimpProvider - class MailChimpOAuth2Adapter(OAuth2Adapter): """OAuth2Adapter for MailChimp API v3.""" - provider_id = MailChimpProvider.id - + provider_id = "mailchimp" authorize_url = "https://login.mailchimp.com/oauth2/authorize" access_token_url = "https://login.mailchimp.com/oauth2/token" profile_url = "https://login.mailchimp.com/oauth2/metadata" diff --git a/allauth/socialaccount/providers/mailru/provider.py b/allauth/socialaccount/providers/mailru/provider.py index 9a3d695197..83575e4b72 100644 --- a/allauth/socialaccount/providers/mailru/provider.py +++ b/allauth/socialaccount/providers/mailru/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.mailru.views import MailRuOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -27,6 +28,7 @@ class MailRuProvider(OAuth2Provider): id = "mailru" name = "Mail.RU" account_class = MailRuAccount + oauth2_adapter_class = MailRuOAuth2Adapter def extract_uid(self, data): return data["uid"] diff --git a/allauth/socialaccount/providers/mailru/views.py b/allauth/socialaccount/providers/mailru/views.py index 14c83d4861..0c8b84508b 100644 --- a/allauth/socialaccount/providers/mailru/views.py +++ b/allauth/socialaccount/providers/mailru/views.py @@ -7,11 +7,9 @@ OAuth2LoginView, ) -from .provider import MailRuProvider - class MailRuOAuth2Adapter(OAuth2Adapter): - provider_id = MailRuProvider.id + provider_id = "mailru" access_token_url = "https://connect.mail.ru/oauth/token" authorize_url = "https://connect.mail.ru/oauth/authorize" profile_url = "http://www.appsmail.ru/platform/api" diff --git a/allauth/socialaccount/providers/mediawiki/provider.py b/allauth/socialaccount/providers/mediawiki/provider.py index b40e72bca7..8d7b454a7b 100644 --- a/allauth/socialaccount/providers/mediawiki/provider.py +++ b/allauth/socialaccount/providers/mediawiki/provider.py @@ -4,6 +4,9 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.mediawiki.views import ( + MediaWikiOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -29,6 +32,7 @@ class MediaWikiProvider(OAuth2Provider): id = "mediawiki" name = "MediaWiki" account_class = MediaWikiAccount + oauth2_adapter_class = MediaWikiOAuth2Adapter @staticmethod def _get_email(data: dict) -> Optional[str]: diff --git a/allauth/socialaccount/providers/mediawiki/views.py b/allauth/socialaccount/providers/mediawiki/views.py index fc2c244c71..4991c2e792 100644 --- a/allauth/socialaccount/providers/mediawiki/views.py +++ b/allauth/socialaccount/providers/mediawiki/views.py @@ -7,14 +7,12 @@ OAuth2LoginView, ) -from .provider import MediaWikiProvider - settings = getattr(settings, "SOCIALACCOUNT_PROVIDERS", {}).get("mediawiki", {}) class MediaWikiOAuth2Adapter(OAuth2Adapter): - provider_id = MediaWikiProvider.id + provider_id = "mediawiki" REST_API = settings.get("REST_API", "https://meta.wikimedia.org/w/rest.php") access_token_url = REST_API + "/oauth2/access_token" authorize_url = REST_API + "/oauth2/authorize" diff --git a/allauth/socialaccount/providers/meetup/provider.py b/allauth/socialaccount/providers/meetup/provider.py index 62955b3821..7ecbd788b6 100644 --- a/allauth/socialaccount/providers/meetup/provider.py +++ b/allauth/socialaccount/providers/meetup/provider.py @@ -1,4 +1,5 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.meetup.views import MeetupOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -10,6 +11,7 @@ class MeetupProvider(OAuth2Provider): id = "meetup" name = "Meetup" account_class = MeetupAccount + oauth2_adapter_class = MeetupOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/meetup/views.py b/allauth/socialaccount/providers/meetup/views.py index ec233c8baa..06731119fe 100644 --- a/allauth/socialaccount/providers/meetup/views.py +++ b/allauth/socialaccount/providers/meetup/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import MeetupProvider - class MeetupOAuth2Adapter(OAuth2Adapter): - provider_id = MeetupProvider.id + provider_id = "meetup" access_token_url = "https://secure.meetup.com/oauth2/access" authorize_url = "https://secure.meetup.com/oauth2/authorize" profile_url = "https://api.meetup.com/2/member/self" diff --git a/allauth/socialaccount/providers/microsoft/provider.py b/allauth/socialaccount/providers/microsoft/provider.py index d50b1adce6..0436a2471b 100644 --- a/allauth/socialaccount/providers/microsoft/provider.py +++ b/allauth/socialaccount/providers/microsoft/provider.py @@ -1,6 +1,7 @@ -from __future__ import unicode_literals - from allauth.socialaccount.providers.base import AuthAction, ProviderAccount +from allauth.socialaccount.providers.microsoft.views import ( + MicrosoftGraphOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -14,9 +15,10 @@ def to_str(self): class MicrosoftGraphProvider(OAuth2Provider): - id = str("microsoft") + id = "microsoft" name = "Microsoft Graph" account_class = MicrosoftGraphAccount + oauth2_adapter_class = MicrosoftGraphOAuth2Adapter def get_default_scope(self): """ diff --git a/allauth/socialaccount/providers/microsoft/views.py b/allauth/socialaccount/providers/microsoft/views.py index 9d52420a26..bfe354f85b 100644 --- a/allauth/socialaccount/providers/microsoft/views.py +++ b/allauth/socialaccount/providers/microsoft/views.py @@ -1,5 +1,3 @@ -from __future__ import unicode_literals - import json from allauth.core import context @@ -12,8 +10,6 @@ OAuth2LoginView, ) -from .provider import MicrosoftGraphProvider - def _check_errors(response): try: @@ -34,7 +30,7 @@ def _check_errors(response): class MicrosoftGraphOAuth2Adapter(OAuth2Adapter): - provider_id = MicrosoftGraphProvider.id + provider_id = "microsoft" def _build_tenant_url(self, path): settings = app_settings.PROVIDERS.get(self.provider_id, {}) diff --git a/allauth/socialaccount/providers/miro/provider.py b/allauth/socialaccount/providers/miro/provider.py index c013bdc49a..152e9933f5 100644 --- a/allauth/socialaccount/providers/miro/provider.py +++ b/allauth/socialaccount/providers/miro/provider.py @@ -1,5 +1,6 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.miro.views import MiroOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -11,6 +12,7 @@ class MiroProvider(OAuth2Provider): id = "miro" name = "Miro" account_class = MiroAccount + oauth2_adapter_class = MiroOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/miro/views.py b/allauth/socialaccount/providers/miro/views.py index ecf8802167..2f2a0dc804 100644 --- a/allauth/socialaccount/providers/miro/views.py +++ b/allauth/socialaccount/providers/miro/views.py @@ -1,5 +1,4 @@ from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.miro.provider import MiroProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -8,7 +7,7 @@ class MiroOAuth2Adapter(OAuth2Adapter): - provider_id = MiroProvider.id + provider_id = "miro" access_token_url = "https://api.miro.com/v1/oauth/token" authorize_url = "https://miro.com/oauth/authorize" profile_url = "https://api.miro.com/v1/users/me" diff --git a/allauth/socialaccount/providers/naver/provider.py b/allauth/socialaccount/providers/naver/provider.py index 4ef3d05a4a..f42b1afc5f 100644 --- a/allauth/socialaccount/providers/naver/provider.py +++ b/allauth/socialaccount/providers/naver/provider.py @@ -1,5 +1,6 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.naver.views import NaverOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -15,6 +16,7 @@ class NaverProvider(OAuth2Provider): id = "naver" name = "Naver" account_class = NaverAccount + oauth2_adapter_class = NaverOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/naver/views.py b/allauth/socialaccount/providers/naver/views.py index f68a085a64..e5537a8166 100644 --- a/allauth/socialaccount/providers/naver/views.py +++ b/allauth/socialaccount/providers/naver/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import NaverProvider - class NaverOAuth2Adapter(OAuth2Adapter): - provider_id = NaverProvider.id + provider_id = "naver" access_token_url = "https://nid.naver.com/oauth2.0/token" authorize_url = "https://nid.naver.com/oauth2.0/authorize" profile_url = "https://openapi.naver.com/v1/nid/me" diff --git a/allauth/socialaccount/providers/netiq/provider.py b/allauth/socialaccount/providers/netiq/provider.py index 28bf087621..6b72488b12 100644 --- a/allauth/socialaccount/providers/netiq/provider.py +++ b/allauth/socialaccount/providers/netiq/provider.py @@ -1,5 +1,5 @@ -# -*- coding: utf-8 -*- from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.netiq.views import NetIQOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -13,6 +13,7 @@ class NetIQProvider(OAuth2Provider): id = "netiq" name = "NetIQ" account_class = NetIQAccount + oauth2_adapter_class = NetIQOAuth2Adapter def get_default_scope(self): return ["openid", "profile", "email"] diff --git a/allauth/socialaccount/providers/netiq/views.py b/allauth/socialaccount/providers/netiq/views.py index 82661142de..76f54678b2 100644 --- a/allauth/socialaccount/providers/netiq/views.py +++ b/allauth/socialaccount/providers/netiq/views.py @@ -1,7 +1,5 @@ -# -*- coding: utf-8 -*- from allauth.socialaccount import app_settings from allauth.socialaccount.adapter import get_adapter -from allauth.socialaccount.providers.netiq.provider import NetIQProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, @@ -10,7 +8,7 @@ class NetIQOAuth2Adapter(OAuth2Adapter): - provider_id = NetIQProvider.id + provider_id = "netiq" supports_state = True settings = app_settings.PROVIDERS.get(provider_id, {}) diff --git a/allauth/socialaccount/providers/nextcloud/provider.py b/allauth/socialaccount/providers/nextcloud/provider.py index 3792ae0a94..4c8e5e0c7f 100644 --- a/allauth/socialaccount/providers/nextcloud/provider.py +++ b/allauth/socialaccount/providers/nextcloud/provider.py @@ -1,4 +1,7 @@ from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.nextcloud.views import ( + NextCloudOAuth2Adapter, +) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -10,6 +13,7 @@ class NextCloudProvider(OAuth2Provider): id = "nextcloud" name = "NextCloud" account_class = NextCloudAccount + oauth2_adapter_class = NextCloudOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/nextcloud/views.py b/allauth/socialaccount/providers/nextcloud/views.py index 48d7250d2f..9eafe1f721 100644 --- a/allauth/socialaccount/providers/nextcloud/views.py +++ b/allauth/socialaccount/providers/nextcloud/views.py @@ -8,11 +8,9 @@ OAuth2LoginView, ) -from .provider import NextCloudProvider - -class NextCloudAdapter(OAuth2Adapter): - provider_id = NextCloudProvider.id +class NextCloudOAuth2Adapter(OAuth2Adapter): + provider_id = "nextcloud" settings = app_settings.PROVIDERS.get(provider_id, {}) server = settings.get("SERVER", "https://nextcloud.example.org") access_token_url = "{0}/apps/oauth2/api/v1/token".format(server) @@ -35,5 +33,5 @@ def get_user_info(self, token, user_id): return {d.tag: d.text.strip() for d in data if d.text is not None} -oauth2_login = OAuth2LoginView.adapter_view(NextCloudAdapter) -oauth2_callback = OAuth2CallbackView.adapter_view(NextCloudAdapter) +oauth2_login = OAuth2LoginView.adapter_view(NextCloudOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(NextCloudOAuth2Adapter) diff --git a/allauth/socialaccount/providers/notion/provider.py b/allauth/socialaccount/providers/notion/provider.py index 232c914ce6..ae918ccd4e 100644 --- a/allauth/socialaccount/providers/notion/provider.py +++ b/allauth/socialaccount/providers/notion/provider.py @@ -1,5 +1,6 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.notion.views import NotionOAuth2Adapter from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -29,6 +30,7 @@ class NotionProvider(OAuth2Provider): id = "notion" name = "Notion" account_class = NotionAccount + oauth2_adapter_class = NotionOAuth2Adapter def extract_uid(self, data): """ diff --git a/allauth/socialaccount/providers/notion/views.py b/allauth/socialaccount/providers/notion/views.py index faff5b8a0f..ca247464dd 100644 --- a/allauth/socialaccount/providers/notion/views.py +++ b/allauth/socialaccount/providers/notion/views.py @@ -5,11 +5,10 @@ ) from .client import NotionOAuth2Client -from .provider import NotionProvider class NotionOAuth2Adapter(OAuth2Adapter): - provider_id = NotionProvider.id + provider_id = "notion" basic_auth = True client_class = NotionOAuth2Client diff --git a/allauth/socialaccount/providers/oauth2/provider.py b/allauth/socialaccount/providers/oauth2/provider.py index 46d9352789..5635a8b0cd 100644 --- a/allauth/socialaccount/providers/oauth2/provider.py +++ b/allauth/socialaccount/providers/oauth2/provider.py @@ -1,3 +1,4 @@ +import warnings from urllib.parse import parse_qsl from django.urls import reverse @@ -10,6 +11,12 @@ class OAuth2Provider(Provider): pkce_enabled_default = False + oauth2_adapter_class = None + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.oauth2_adapter_class is None: + warnings.warn("provider.oauth2_adapter_class property missing") def get_login_url(self, request, **kwargs): url = reverse(self.id + "_login") diff --git a/allauth/socialaccount/providers/odnoklassniki/provider.py b/allauth/socialaccount/providers/odnoklassniki/provider.py index 881def6000..b45bed7282 100644 --- a/allauth/socialaccount/providers/odnoklassniki/provider.py +++ b/allauth/socialaccount/providers/odnoklassniki/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.odnoklassniki.views import ( + OdnoklassnikiOAuth2Adapter, +) class OdnoklassnikiAccount(ProviderAccount): @@ -29,6 +32,7 @@ class OdnoklassnikiProvider(OAuth2Provider): id = "odnoklassniki" name = "Odnoklassniki" account_class = OdnoklassnikiAccount + oauth2_adapter_class = OdnoklassnikiOAuth2Adapter def extract_uid(self, data): return data["uid"] diff --git a/allauth/socialaccount/providers/odnoklassniki/views.py b/allauth/socialaccount/providers/odnoklassniki/views.py index f2638966d9..135a9b7068 100644 --- a/allauth/socialaccount/providers/odnoklassniki/views.py +++ b/allauth/socialaccount/providers/odnoklassniki/views.py @@ -7,8 +7,6 @@ OAuth2LoginView, ) -from .provider import OdnoklassnikiProvider - USER_FIELDS = [ "age", @@ -36,7 +34,7 @@ class OdnoklassnikiOAuth2Adapter(OAuth2Adapter): - provider_id = OdnoklassnikiProvider.id + provider_id = "odnoklassniki" access_token_url = "https://api.odnoklassniki.ru/oauth/token.do" authorize_url = "https://www.odnoklassniki.ru/oauth/authorize" profile_url = "https://api.odnoklassniki.ru/fb.do" diff --git a/allauth/socialaccount/providers/okta/provider.py b/allauth/socialaccount/providers/okta/provider.py index 5e3ca65a47..8d26527847 100644 --- a/allauth/socialaccount/providers/okta/provider.py +++ b/allauth/socialaccount/providers/okta/provider.py @@ -1,6 +1,7 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.okta.views import OktaOAuth2Adapter class OktaAccount(ProviderAccount): @@ -13,6 +14,7 @@ class OktaProvider(OAuth2Provider): id = "okta" name = "Okta" account_class = OktaAccount + oauth2_adapter_class = OktaOAuth2Adapter def get_default_scope(self): return ["openid", "profile", "email", "offline_access"] diff --git a/allauth/socialaccount/providers/okta/views.py b/allauth/socialaccount/providers/okta/views.py index ba522226d2..46b7f40b00 100644 --- a/allauth/socialaccount/providers/okta/views.py +++ b/allauth/socialaccount/providers/okta/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import OktaProvider - class OktaOAuth2Adapter(OAuth2Adapter): - provider_id = OktaProvider.id + provider_id = "okta" settings = app_settings.PROVIDERS.get(provider_id, {}) okta_base_url = settings.get("OKTA_BASE_URL") diff --git a/allauth/socialaccount/providers/openid_connect/provider.py b/allauth/socialaccount/providers/openid_connect/provider.py index 03be12beda..314ba573df 100644 --- a/allauth/socialaccount/providers/openid_connect/provider.py +++ b/allauth/socialaccount/providers/openid_connect/provider.py @@ -4,6 +4,9 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.openid_connect.views import ( + OpenIDConnectOAuth2Adapter, +) class OpenIDConnectProviderAccount(ProviderAccount): @@ -16,6 +19,7 @@ class OpenIDConnectProvider(OAuth2Provider): id = "openid_connect" name = "OpenID Connect" account_class = OpenIDConnectProviderAccount + oauth2_adapter_class = OpenIDConnectOAuth2Adapter def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/allauth/socialaccount/providers/openid_connect/views.py b/allauth/socialaccount/providers/openid_connect/views.py index f58b6d9f34..b16c596430 100644 --- a/allauth/socialaccount/providers/openid_connect/views.py +++ b/allauth/socialaccount/providers/openid_connect/views.py @@ -9,7 +9,7 @@ from allauth.utils import build_absolute_uri -class OpenIDConnectAdapter(OAuth2Adapter): +class OpenIDConnectOAuth2Adapter(OAuth2Adapter): supports_state = True def __init__(self, request, provider_id): @@ -65,10 +65,14 @@ def get_callback_url(self, request, app): def login(request, provider_id): - view = OAuth2LoginView.adapter_view(OpenIDConnectAdapter(request, provider_id)) + view = OAuth2LoginView.adapter_view( + OpenIDConnectOAuth2Adapter(request, provider_id) + ) return view(request) def callback(request, provider_id): - view = OAuth2CallbackView.adapter_view(OpenIDConnectAdapter(request, provider_id)) + view = OAuth2CallbackView.adapter_view( + OpenIDConnectOAuth2Adapter(request, provider_id) + ) return view(request) diff --git a/allauth/socialaccount/providers/orcid/provider.py b/allauth/socialaccount/providers/orcid/provider.py index a6bde82cea..e2dbe36aa0 100644 --- a/allauth/socialaccount/providers/orcid/provider.py +++ b/allauth/socialaccount/providers/orcid/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.orcid.views import OrcidOAuth2Adapter class Scope(object): @@ -18,6 +19,7 @@ class OrcidProvider(OAuth2Provider): id = "orcid" name = "Orcid.org" account_class = OrcidAccount + oauth2_adapter_class = OrcidOAuth2Adapter def get_default_scope(self): return [Scope.USERINFO_PROFILE] diff --git a/allauth/socialaccount/providers/orcid/views.py b/allauth/socialaccount/providers/orcid/views.py index 7902f9fcee..1821f5a90d 100644 --- a/allauth/socialaccount/providers/orcid/views.py +++ b/allauth/socialaccount/providers/orcid/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import OrcidProvider - class OrcidOAuth2Adapter(OAuth2Adapter): - provider_id = OrcidProvider.id + provider_id = "orcid" # http://support.orcid.org/knowledgebase/articles/335483-the-public- # client-orcid-api diff --git a/allauth/socialaccount/providers/patreon/constants.py b/allauth/socialaccount/providers/patreon/constants.py new file mode 100644 index 0000000000..516659c614 --- /dev/null +++ b/allauth/socialaccount/providers/patreon/constants.py @@ -0,0 +1,11 @@ +from django.conf import settings + + +PROVIDER_ID = "patreon" +API_VERSION = ( + getattr(settings, "SOCIALACCOUNT_PROVIDERS", {}) + .get("patreon", {}) + .get("VERSION", "v1") +) +USE_API_V2 = True if API_VERSION == "v2" else False +API_URL = "https://www.patreon.com/api/oauth2/" + (API_VERSION if USE_API_V2 else "api") diff --git a/allauth/socialaccount/providers/patreon/provider.py b/allauth/socialaccount/providers/patreon/provider.py index 6d0032ed18..4b0359bf55 100644 --- a/allauth/socialaccount/providers/patreon/provider.py +++ b/allauth/socialaccount/providers/patreon/provider.py @@ -1,20 +1,11 @@ """ Provider for Patreon """ - -from django.conf import settings - from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.patreon.views import PatreonOAuth2Adapter - -API_VERSION = ( - getattr(settings, "SOCIALACCOUNT_PROVIDERS", {}) - .get("patreon", {}) - .get("VERSION", "v1") -) -USE_API_V2 = True if API_VERSION == "v2" else False -API_URL = "https://www.patreon.com/api/oauth2/" + (API_VERSION if USE_API_V2 else "api") +from .constants import PROVIDER_ID, USE_API_V2 class PatreonAccount(ProviderAccount): @@ -23,9 +14,10 @@ def get_avatar_url(self): class PatreonProvider(OAuth2Provider): - id = "patreon" + id = PROVIDER_ID name = "Patreon" account_class = PatreonAccount + oauth2_adapter_class = PatreonOAuth2Adapter def get_default_scope(self): if USE_API_V2: diff --git a/allauth/socialaccount/providers/patreon/views.py b/allauth/socialaccount/providers/patreon/views.py index 20fc480b6d..52afaa5fa6 100644 --- a/allauth/socialaccount/providers/patreon/views.py +++ b/allauth/socialaccount/providers/patreon/views.py @@ -10,11 +10,11 @@ OAuth2LoginView, ) -from .provider import API_URL, USE_API_V2, PatreonProvider +from .constants import API_URL, PROVIDER_ID, USE_API_V2 class PatreonOAuth2Adapter(OAuth2Adapter): - provider_id = PatreonProvider.id + provider_id = PROVIDER_ID access_token_url = "https://www.patreon.com/api/oauth2/token" authorize_url = "https://www.patreon.com/oauth2/authorize" profile_url = "{0}/{1}".format( diff --git a/allauth/socialaccount/providers/paypal/provider.py b/allauth/socialaccount/providers/paypal/provider.py index d65786792d..7b198d4cab 100644 --- a/allauth/socialaccount/providers/paypal/provider.py +++ b/allauth/socialaccount/providers/paypal/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.paypal.views import PaypalOAuth2Adapter class PaypalAccount(ProviderAccount): @@ -14,6 +15,7 @@ class PaypalProvider(OAuth2Provider): id = "paypal" name = "Paypal" account_class = PaypalAccount + oauth2_adapter_class = PaypalOAuth2Adapter def get_default_scope(self): # See: https://developer.paypal.com/docs/integration/direct/identity/attributes/ # noqa diff --git a/allauth/socialaccount/providers/paypal/views.py b/allauth/socialaccount/providers/paypal/views.py index eb0d9f0628..373fee61ad 100644 --- a/allauth/socialaccount/providers/paypal/views.py +++ b/allauth/socialaccount/providers/paypal/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import PaypalProvider - class PaypalOAuth2Adapter(OAuth2Adapter): - provider_id = PaypalProvider.id + provider_id = "paypal" supports_state = False @property diff --git a/allauth/socialaccount/providers/pinterest/provider.py b/allauth/socialaccount/providers/pinterest/provider.py index 05d4e69382..3c93485c88 100644 --- a/allauth/socialaccount/providers/pinterest/provider.py +++ b/allauth/socialaccount/providers/pinterest/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.pinterest.views import ( + PinterestOAuth2Adapter, +) class PinterestAccount(ProviderAccount): @@ -25,6 +28,7 @@ class PinterestProvider(OAuth2Provider): id = "pinterest" name = "Pinterest" account_class = PinterestAccount + oauth2_adapter_class = PinterestOAuth2Adapter @property def api_version(self): diff --git a/allauth/socialaccount/providers/pinterest/views.py b/allauth/socialaccount/providers/pinterest/views.py index 2151875ec5..e84f9eb14d 100644 --- a/allauth/socialaccount/providers/pinterest/views.py +++ b/allauth/socialaccount/providers/pinterest/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import PinterestProvider - class PinterestOAuth2Adapter(OAuth2Adapter): - provider_id = PinterestProvider.id + provider_id = "pinterest" provider_default_url = "api.pinterest.com" provider_default_api_version = "v1" diff --git a/allauth/socialaccount/providers/questrade/provider.py b/allauth/socialaccount/providers/questrade/provider.py index 3d16989ba2..4fb50806ac 100644 --- a/allauth/socialaccount/providers/questrade/provider.py +++ b/allauth/socialaccount/providers/questrade/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.questrade.views import ( + QuestradeOAuth2Adapter, +) class QuestradeAccount(ProviderAccount): @@ -10,6 +13,7 @@ class QuestradeProvider(OAuth2Provider): id = "questrade" name = "Questrade" account_class = QuestradeAccount + oauth2_adapter_class = QuestradeOAuth2Adapter def extract_uid(self, data): return str(data["userId"]) diff --git a/allauth/socialaccount/providers/questrade/views.py b/allauth/socialaccount/providers/questrade/views.py index 194426f381..a8c487d470 100644 --- a/allauth/socialaccount/providers/questrade/views.py +++ b/allauth/socialaccount/providers/questrade/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import QuestradeProvider - class QuestradeOAuth2Adapter(OAuth2Adapter): - provider_id = QuestradeProvider.id + provider_id = "questrade" access_token_url = "https://login.questrade.com/oauth2/token" authorize_url = "https://login.questrade.com/oauth2/authorize" supports_state = False diff --git a/allauth/socialaccount/providers/quickbooks/provider.py b/allauth/socialaccount/providers/quickbooks/provider.py index 1a6a35857d..746b2a8b9d 100644 --- a/allauth/socialaccount/providers/quickbooks/provider.py +++ b/allauth/socialaccount/providers/quickbooks/provider.py @@ -4,6 +4,9 @@ ProviderException, ) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.quickbooks.views import ( + QuickBooksOAuth2Adapter, +) class QuickBooksAccount(ProviderAccount): @@ -22,6 +25,7 @@ class QuickBooksOAuth2Provider(OAuth2Provider): # Name is displayed to ordinary users -- don't include protocol name = "QuickBooks" account_class = QuickBooksAccount + oauth2_adapter_class = QuickBooksOAuth2Adapter def extract_uid(self, data): if "sub" not in data: diff --git a/allauth/socialaccount/providers/quickbooks/views.py b/allauth/socialaccount/providers/quickbooks/views.py index 0398df6411..688d020150 100644 --- a/allauth/socialaccount/providers/quickbooks/views.py +++ b/allauth/socialaccount/providers/quickbooks/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import QuickBooksOAuth2Provider - class QuickBooksOAuth2Adapter(OAuth2Adapter): - provider_id = QuickBooksOAuth2Provider.id + provider_id = "quickbooks" access_token_url = "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer" authorize_url = "https://appcenter.intuit.com/connect/oauth2" profile_test = "https://sandbox-accounts.platform.intuit.com/v1/openid_connect/userinfo" # NOQA diff --git a/allauth/socialaccount/providers/reddit/provider.py b/allauth/socialaccount/providers/reddit/provider.py index 15dca8960b..71840c1a2d 100755 --- a/allauth/socialaccount/providers/reddit/provider.py +++ b/allauth/socialaccount/providers/reddit/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.reddit.views import RedditAdapter class RedditAccount(ProviderAccount): @@ -13,6 +14,7 @@ class RedditProvider(OAuth2Provider): id = "reddit" name = "Reddit" account_class = RedditAccount + oauth2_adapter_class = RedditAdapter def extract_uid(self, data): return data["name"] diff --git a/allauth/socialaccount/providers/reddit/views.py b/allauth/socialaccount/providers/reddit/views.py index 9eb316b3b3..2f8619b5f1 100755 --- a/allauth/socialaccount/providers/reddit/views.py +++ b/allauth/socialaccount/providers/reddit/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import RedditProvider - class RedditAdapter(OAuth2Adapter): - provider_id = RedditProvider.id + provider_id = "reddit" access_token_url = "https://www.reddit.com/api/v1/access_token" authorize_url = "https://www.reddit.com/api/v1/authorize" profile_url = "https://oauth.reddit.com/api/v1/me" diff --git a/allauth/socialaccount/providers/robinhood/provider.py b/allauth/socialaccount/providers/robinhood/provider.py index 45b9378e1a..71fd8bc5d7 100644 --- a/allauth/socialaccount/providers/robinhood/provider.py +++ b/allauth/socialaccount/providers/robinhood/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.robinhood.views import ( + RobinhoodOAuth2Adapter, +) class RobinhoodAccount(ProviderAccount): @@ -16,6 +19,7 @@ class RobinhoodProvider(OAuth2Provider): id = "robinhood" name = "Robinhood" account_class = RobinhoodAccount + oauth2_adapter_class = RobinhoodOAuth2Adapter def get_default_scope(self): return ["read"] diff --git a/allauth/socialaccount/providers/robinhood/views.py b/allauth/socialaccount/providers/robinhood/views.py index 5cd3802719..c12af0682c 100644 --- a/allauth/socialaccount/providers/robinhood/views.py +++ b/allauth/socialaccount/providers/robinhood/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import RobinhoodProvider - class RobinhoodOAuth2Adapter(OAuth2Adapter): - provider_id = RobinhoodProvider.id + provider_id = "robinhood" @property def authorize_url(self): diff --git a/allauth/socialaccount/providers/salesforce/provider.py b/allauth/socialaccount/providers/salesforce/provider.py index 3971eca638..793e20533e 100644 --- a/allauth/socialaccount/providers/salesforce/provider.py +++ b/allauth/socialaccount/providers/salesforce/provider.py @@ -2,6 +2,9 @@ from allauth.socialaccount import providers from allauth.socialaccount.providers.base import AuthAction, ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.salesforce.views import ( + SalesforceOAuth2Adapter, +) class SalesforceAccount(ProviderAccount): @@ -21,6 +24,7 @@ class SalesforceProvider(OAuth2Provider): name = "Salesforce" package = "allauth.socialaccount.providers.salesforce" account_class = SalesforceAccount + oauth2_adapter_class = SalesforceOAuth2Adapter def get_default_scope(self): return ["id", "openid"] diff --git a/allauth/socialaccount/providers/salesforce/views.py b/allauth/socialaccount/providers/salesforce/views.py index 7033ffd778..f325a5c101 100644 --- a/allauth/socialaccount/providers/salesforce/views.py +++ b/allauth/socialaccount/providers/salesforce/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import SalesforceProvider - class SalesforceOAuth2Adapter(OAuth2Adapter): - provider_id = SalesforceProvider.id + provider_id = "salesforce" @property def base_url(self): diff --git a/allauth/socialaccount/providers/sharefile/provider.py b/allauth/socialaccount/providers/sharefile/provider.py index 78f45c26b7..1be391b1b0 100644 --- a/allauth/socialaccount/providers/sharefile/provider.py +++ b/allauth/socialaccount/providers/sharefile/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.sharefile.views import ( + ShareFileOAuth2Adapter, +) class ShareFileAccount(ProviderAccount): @@ -12,6 +15,7 @@ class ShareFileProvider(OAuth2Provider): id = "sharefile" name = "ShareFile" account_class = ShareFileAccount + oauth2_adapter_class = ShareFileOAuth2Adapter def extract_uid(self, data): return str(data.get("Id", "")) diff --git a/allauth/socialaccount/providers/sharefile/views.py b/allauth/socialaccount/providers/sharefile/views.py index 0c39444dde..1a878cdc08 100644 --- a/allauth/socialaccount/providers/sharefile/views.py +++ b/allauth/socialaccount/providers/sharefile/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import ShareFileProvider - class ShareFileOAuth2Adapter(OAuth2Adapter): - provider_id = ShareFileProvider.id + provider_id = "sharefile" settings = app_settings.PROVIDERS.get(provider_id, {}) subdomain = settings.get("SUBDOMAIN", "secure") apicp = settings.get("APICP", "sharefile.com") diff --git a/allauth/socialaccount/providers/shopify/provider.py b/allauth/socialaccount/providers/shopify/provider.py index 4270f42d58..126b64efd0 100644 --- a/allauth/socialaccount/providers/shopify/provider.py +++ b/allauth/socialaccount/providers/shopify/provider.py @@ -2,6 +2,7 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.shopify.views import ShopifyOAuth2Adapter class ShopifyAccount(ProviderAccount): @@ -12,6 +13,7 @@ class ShopifyProvider(OAuth2Provider): id = "shopify" name = "Shopify" account_class = ShopifyAccount + oauth2_adapter_class = ShopifyOAuth2Adapter @property def is_per_user(self): diff --git a/allauth/socialaccount/providers/shopify/views.py b/allauth/socialaccount/providers/shopify/views.py index c542f6c990..504913f37f 100644 --- a/allauth/socialaccount/providers/shopify/views.py +++ b/allauth/socialaccount/providers/shopify/views.py @@ -11,11 +11,9 @@ OAuth2LoginView, ) -from .provider import ShopifyProvider - class ShopifyOAuth2Adapter(OAuth2Adapter): - provider_id = ShopifyProvider.id + provider_id = "shopify" supports_state = False scope_delimiter = "," diff --git a/allauth/socialaccount/providers/slack/provider.py b/allauth/socialaccount/providers/slack/provider.py index 2d8adf7cc2..988d67a6ec 100644 --- a/allauth/socialaccount/providers/slack/provider.py +++ b/allauth/socialaccount/providers/slack/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.slack.views import SlackOAuth2Adapter class SlackAccount(ProviderAccount): @@ -18,6 +19,7 @@ class SlackProvider(OAuth2Provider): id = "slack" name = "Slack" account_class = SlackAccount + oauth2_adapter_class = SlackOAuth2Adapter def extract_uid(self, data): return "%s_%s" % ( diff --git a/allauth/socialaccount/providers/slack/views.py b/allauth/socialaccount/providers/slack/views.py index 1f3c2c1797..a37ccad1e5 100644 --- a/allauth/socialaccount/providers/slack/views.py +++ b/allauth/socialaccount/providers/slack/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import SlackProvider - class SlackOAuth2Adapter(OAuth2Adapter): - provider_id = SlackProvider.id + provider_id = "slack" access_token_url = "https://slack.com/api/oauth.access" authorize_url = "https://slack.com/oauth/authorize" diff --git a/allauth/socialaccount/providers/snapchat/constants.py b/allauth/socialaccount/providers/snapchat/constants.py new file mode 100644 index 0000000000..d7ab50853f --- /dev/null +++ b/allauth/socialaccount/providers/snapchat/constants.py @@ -0,0 +1,7 @@ +PROVIDER_ID = "snapchat" + + +class Scope(object): + EXTERNAL_ID = "https://auth.snapchat.com/oauth2/api/user.external_id" + DISPLAY_NAME = "https://auth.snapchat.com/oauth2/api/user.display_name" + BITMOJI = "https://auth.snapchat.com/oauth2/api/user.bitmoji.avatar" diff --git a/allauth/socialaccount/providers/snapchat/provider.py b/allauth/socialaccount/providers/snapchat/provider.py index 1876ca59ce..30bf0bd942 100644 --- a/allauth/socialaccount/providers/snapchat/provider.py +++ b/allauth/socialaccount/providers/snapchat/provider.py @@ -1,11 +1,12 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider - - -class Scope(object): - EXTERNAL_ID = "https://auth.snapchat.com/oauth2/api/user.external_id" - DISPLAY_NAME = "https://auth.snapchat.com/oauth2/api/user.display_name" - BITMOJI = "https://auth.snapchat.com/oauth2/api/user.bitmoji.avatar" +from allauth.socialaccount.providers.snapchat.constants import ( + PROVIDER_ID, + Scope, +) +from allauth.socialaccount.providers.snapchat.views import ( + SnapchatOAuth2Adapter, +) class SnapchatAccount(ProviderAccount): @@ -18,9 +19,10 @@ def to_str(self): class SnapchatProvider(OAuth2Provider): - id = "snapchat" + id = PROVIDER_ID name = "Snapchat" account_class = SnapchatAccount + oauth2_adapter_class = SnapchatOAuth2Adapter def get_default_scope(self): scope = [Scope.EXTERNAL_ID, Scope.DISPLAY_NAME] diff --git a/allauth/socialaccount/providers/snapchat/views.py b/allauth/socialaccount/providers/snapchat/views.py index 5361e492f1..f5b61b2896 100644 --- a/allauth/socialaccount/providers/snapchat/views.py +++ b/allauth/socialaccount/providers/snapchat/views.py @@ -6,12 +6,14 @@ OAuth2CallbackView, OAuth2LoginView, ) - -from .provider import Scope, SnapchatProvider +from allauth.socialaccount.providers.snapchat.constants import ( + PROVIDER_ID, + Scope, +) class SnapchatOAuth2Adapter(OAuth2Adapter): - provider_id = SnapchatProvider.id + provider_id = PROVIDER_ID access_token_url = "https://accounts.snapchat.com/accounts/oauth2/token" authorize_url = "https://accounts.snapchat.com/accounts/oauth2/auth" @@ -22,8 +24,7 @@ def complete_login(self, request, app, token, **kwargs): return self.get_provider().sociallogin_from_response(request, extra_data) def get_data(self, token): - provider_id = SnapchatProvider.id - settings = app_settings.PROVIDERS.get(provider_id, {}) + settings = app_settings.PROVIDERS.get(self.provider_id, {}) provider_scope = settings.get( "SCOPE", "['https://auth.snapchat.com/oauth2/api/user.external_id', 'https://auth.snapchat.com/oauth2/api/user.display_name']", diff --git a/allauth/socialaccount/providers/soundcloud/provider.py b/allauth/socialaccount/providers/soundcloud/provider.py index 13c0603335..00d6658cdf 100644 --- a/allauth/socialaccount/providers/soundcloud/provider.py +++ b/allauth/socialaccount/providers/soundcloud/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.soundcloud.views import ( + SoundCloudOAuth2Adapter, +) class SoundCloudAccount(ProviderAccount): @@ -20,6 +23,7 @@ class SoundCloudProvider(OAuth2Provider): id = "soundcloud" name = "SoundCloud" account_class = SoundCloudAccount + oauth2_adapter_class = SoundCloudOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/soundcloud/views.py b/allauth/socialaccount/providers/soundcloud/views.py index 15da7dafda..cedacea1e6 100644 --- a/allauth/socialaccount/providers/soundcloud/views.py +++ b/allauth/socialaccount/providers/soundcloud/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import SoundCloudProvider - class SoundCloudOAuth2Adapter(OAuth2Adapter): - provider_id = SoundCloudProvider.id + provider_id = "soundcloud" access_token_url = "https://api.soundcloud.com/oauth2/token" authorize_url = "https://soundcloud.com/connect" profile_url = "https://api.soundcloud.com/me.json" diff --git a/allauth/socialaccount/providers/spotify/provider.py b/allauth/socialaccount/providers/spotify/provider.py index ff2957c4ef..a5f4b5299a 100644 --- a/allauth/socialaccount/providers/spotify/provider.py +++ b/allauth/socialaccount/providers/spotify/provider.py @@ -1,6 +1,7 @@ from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.spotify.views import SpotifyOAuth2Adapter class SpotifyAccount(ProviderAccount): @@ -22,6 +23,7 @@ class SpotifyOAuth2Provider(OAuth2Provider): id = "spotify" name = "Spotify" account_class = SpotifyAccount + oauth2_adapter_class = SpotifyOAuth2Adapter def extract_uid(self, data): return data["id"] diff --git a/allauth/socialaccount/providers/spotify/views.py b/allauth/socialaccount/providers/spotify/views.py index d33acb6aea..9d3ee8ce01 100644 --- a/allauth/socialaccount/providers/spotify/views.py +++ b/allauth/socialaccount/providers/spotify/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import SpotifyOAuth2Provider - class SpotifyOAuth2Adapter(OAuth2Adapter): - provider_id = SpotifyOAuth2Provider.id + provider_id = "spotify" access_token_url = "https://accounts.spotify.com/api/token" authorize_url = "https://accounts.spotify.com/authorize" profile_url = "https://api.spotify.com/v1/me" diff --git a/allauth/socialaccount/providers/stackexchange/provider.py b/allauth/socialaccount/providers/stackexchange/provider.py index 10bb2f4957..3afb05cec9 100644 --- a/allauth/socialaccount/providers/stackexchange/provider.py +++ b/allauth/socialaccount/providers/stackexchange/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.stackexchange.views import ( + StackExchangeOAuth2Adapter, +) class StackExchangeAccount(ProviderAccount): @@ -18,6 +21,7 @@ class StackExchangeProvider(OAuth2Provider): id = "stackexchange" name = "Stack Exchange" account_class = StackExchangeAccount + oauth2_adapter_class = StackExchangeOAuth2Adapter def get_site(self): settings = self.get_settings() diff --git a/allauth/socialaccount/providers/stackexchange/views.py b/allauth/socialaccount/providers/stackexchange/views.py index 349180d606..a8e6ee5387 100644 --- a/allauth/socialaccount/providers/stackexchange/views.py +++ b/allauth/socialaccount/providers/stackexchange/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import StackExchangeProvider - class StackExchangeOAuth2Adapter(OAuth2Adapter): - provider_id = StackExchangeProvider.id + provider_id = "stackexchange" access_token_url = "https://stackexchange.com/oauth/access_token" authorize_url = "https://stackexchange.com/oauth" profile_url = "https://api.stackexchange.com/2.1/me" diff --git a/allauth/socialaccount/providers/stocktwits/provider.py b/allauth/socialaccount/providers/stocktwits/provider.py index 4d69279ebe..38a279c41e 100644 --- a/allauth/socialaccount/providers/stocktwits/provider.py +++ b/allauth/socialaccount/providers/stocktwits/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.stocktwits.views import ( + StocktwitsOAuth2Adapter, +) class StocktwitsAccount(ProviderAccount): @@ -15,6 +18,7 @@ class StocktwitsProvider(OAuth2Provider): id = "stocktwits" name = "Stocktwits" account_class = StocktwitsAccount + oauth2_adapter_class = StocktwitsOAuth2Adapter def extract_uid(self, data): return str(data["user"]["id"]) diff --git a/allauth/socialaccount/providers/stocktwits/views.py b/allauth/socialaccount/providers/stocktwits/views.py index 1ade8f1b44..38b44139e3 100644 --- a/allauth/socialaccount/providers/stocktwits/views.py +++ b/allauth/socialaccount/providers/stocktwits/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import StocktwitsProvider - class StocktwitsOAuth2Adapter(OAuth2Adapter): - provider_id = StocktwitsProvider.id + provider_id = "stocktwits" access_token_url = "https://api.stocktwits.com/api/2/oauth/token" authorize_url = "https://api.stocktwits.com/api/2/oauth/authorize" profile_url = "https://api.stocktwits.com/api/2/streams/user/{user}.json" diff --git a/allauth/socialaccount/providers/strava/provider.py b/allauth/socialaccount/providers/strava/provider.py index 2a2f48a269..8f7d461719 100644 --- a/allauth/socialaccount/providers/strava/provider.py +++ b/allauth/socialaccount/providers/strava/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.strava.views import StravaOAuth2Adapter class StravaAccount(ProviderAccount): @@ -24,6 +25,7 @@ class StravaProvider(OAuth2Provider): id = "strava" name = "Strava" account_class = StravaAccount + oauth2_adapter_class = StravaOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/strava/views.py b/allauth/socialaccount/providers/strava/views.py index aebdf1df12..459df4d65b 100644 --- a/allauth/socialaccount/providers/strava/views.py +++ b/allauth/socialaccount/providers/strava/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import StravaProvider - -class StravaOauth2Adapter(OAuth2Adapter): - provider_id = StravaProvider.id +class StravaOAuth2Adapter(OAuth2Adapter): + provider_id = "strava" access_token_url = "https://www.strava.com/oauth/token" authorize_url = "https://www.strava.com/oauth/authorize" profile_url = "https://www.strava.com/api/v3/athlete" @@ -23,5 +21,5 @@ def complete_login(self, request, app, token, **kwargs): return self.get_provider().sociallogin_from_response(request, extra_data) -oauth2_login = OAuth2LoginView.adapter_view(StravaOauth2Adapter) -oauth2_callback = OAuth2CallbackView.adapter_view(StravaOauth2Adapter) +oauth2_login = OAuth2LoginView.adapter_view(StravaOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(StravaOAuth2Adapter) diff --git a/allauth/socialaccount/providers/stripe/provider.py b/allauth/socialaccount/providers/stripe/provider.py index 3e9ecf35b4..9d68026fce 100644 --- a/allauth/socialaccount/providers/stripe/provider.py +++ b/allauth/socialaccount/providers/stripe/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.stripe.views import StripeOAuth2Adapter class StripeAccount(ProviderAccount): @@ -12,6 +13,7 @@ class StripeProvider(OAuth2Provider): id = "stripe" name = "Stripe" account_class = StripeAccount + oauth2_adapter_class = StripeOAuth2Adapter def extract_uid(self, data): return data["id"] diff --git a/allauth/socialaccount/providers/stripe/views.py b/allauth/socialaccount/providers/stripe/views.py index 02b99259b8..269a0eee05 100644 --- a/allauth/socialaccount/providers/stripe/views.py +++ b/allauth/socialaccount/providers/stripe/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import StripeProvider - class StripeOAuth2Adapter(OAuth2Adapter): - provider_id = StripeProvider.id + provider_id = "stripe" access_token_url = "https://connect.stripe.com/oauth/token" authorize_url = "https://connect.stripe.com/oauth/authorize" profile_url = "https://api.stripe.com/v1/accounts/%s" diff --git a/allauth/socialaccount/providers/trainingpeaks/provider.py b/allauth/socialaccount/providers/trainingpeaks/provider.py index 2de1f45b15..3506d0c98d 100644 --- a/allauth/socialaccount/providers/trainingpeaks/provider.py +++ b/allauth/socialaccount/providers/trainingpeaks/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.trainingpeaks.views import ( + TrainingPeaksOAuth2Adapter, +) class TrainingPeaksAccount(ProviderAccount): @@ -24,6 +27,7 @@ class TrainingPeaksProvider(OAuth2Provider): id = "trainingpeaks" name = "TrainingPeaks" account_class = TrainingPeaksAccount + oauth2_adapter_class = TrainingPeaksOAuth2Adapter def extract_uid(self, data): return str(data["Id"]) diff --git a/allauth/socialaccount/providers/trainingpeaks/views.py b/allauth/socialaccount/providers/trainingpeaks/views.py index df7a6eed13..acb2e474c7 100644 --- a/allauth/socialaccount/providers/trainingpeaks/views.py +++ b/allauth/socialaccount/providers/trainingpeaks/views.py @@ -6,12 +6,10 @@ OAuth2LoginView, ) -from .provider import TrainingPeaksProvider - class TrainingPeaksOAuth2Adapter(OAuth2Adapter): # https://github.com/TrainingPeaks/PartnersAPI/wiki/OAuth - provider_id = TrainingPeaksProvider.id + provider_id = "trainingpeaks" def get_settings(self): """Provider settings""" diff --git a/allauth/socialaccount/providers/twentythreeandme/provider.py b/allauth/socialaccount/providers/twentythreeandme/provider.py index 5a1a16501e..39ae460c1e 100644 --- a/allauth/socialaccount/providers/twentythreeandme/provider.py +++ b/allauth/socialaccount/providers/twentythreeandme/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.twentythreeandme.views import ( + TwentyThreeAndMeOAuth2Adapter, +) class TwentyThreeAndMeAccount(ProviderAccount): @@ -11,6 +14,7 @@ class TwentyThreeAndMeProvider(OAuth2Provider): slug = "23andme" name = "23andMe" account_class = TwentyThreeAndMeAccount + oauth2_adapter_class = TwentyThreeAndMeOAuth2Adapter def extract_uid(self, data): return data["id"] diff --git a/allauth/socialaccount/providers/twentythreeandme/views.py b/allauth/socialaccount/providers/twentythreeandme/views.py index a6a351cd10..05a785f3a6 100644 --- a/allauth/socialaccount/providers/twentythreeandme/views.py +++ b/allauth/socialaccount/providers/twentythreeandme/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import TwentyThreeAndMeProvider - -class TwentyTreeAndMeOAuth2Adapter(OAuth2Adapter): - provider_id = TwentyThreeAndMeProvider.id +class TwentyThreeAndMeOAuth2Adapter(OAuth2Adapter): + provider_id = "twentythreeandme" access_token_url = "https://api.23andme.com/token" authorize_url = "https://api.23andme.com/authorize" profile_url = "https://api.23andme.com/1/user/" @@ -23,5 +21,5 @@ def complete_login(self, request, app, token, **kwargs): return self.get_provider().sociallogin_from_response(request, extra_data) -oauth2_login = OAuth2LoginView.adapter_view(TwentyTreeAndMeOAuth2Adapter) -oauth2_callback = OAuth2CallbackView.adapter_view(TwentyTreeAndMeOAuth2Adapter) +oauth2_login = OAuth2LoginView.adapter_view(TwentyThreeAndMeOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(TwentyThreeAndMeOAuth2Adapter) diff --git a/allauth/socialaccount/providers/twitch/provider.py b/allauth/socialaccount/providers/twitch/provider.py index 6191c2cbd0..8492497b5d 100644 --- a/allauth/socialaccount/providers/twitch/provider.py +++ b/allauth/socialaccount/providers/twitch/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.twitch.views import TwitchOAuth2Adapter class TwitchAccount(ProviderAccount): @@ -21,6 +22,7 @@ class TwitchProvider(OAuth2Provider): id = "twitch" name = "Twitch" account_class = TwitchAccount + oauth2_adapter_class = TwitchOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/twitch/views.py b/allauth/socialaccount/providers/twitch/views.py index b82b4ee44f..44d29b2692 100644 --- a/allauth/socialaccount/providers/twitch/views.py +++ b/allauth/socialaccount/providers/twitch/views.py @@ -6,11 +6,9 @@ OAuth2LoginView, ) -from .provider import TwitchProvider - class TwitchOAuth2Adapter(OAuth2Adapter): - provider_id = TwitchProvider.id + provider_id = "twitch" access_token_url = "https://id.twitch.tv/oauth2/token" authorize_url = "https://id.twitch.tv/oauth2/authorize" profile_url = "https://api.twitch.tv/helix/users" diff --git a/allauth/socialaccount/providers/twitter_oauth2/provider.py b/allauth/socialaccount/providers/twitter_oauth2/provider.py index f0587515b5..ce36cd5161 100644 --- a/allauth/socialaccount/providers/twitter_oauth2/provider.py +++ b/allauth/socialaccount/providers/twitter_oauth2/provider.py @@ -1,5 +1,8 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.twitter_oauth2.views import ( + TwitterOAuth2Adapter, +) class TwitterOAuth2Account(ProviderAccount): @@ -24,7 +27,7 @@ class TwitterOAuth2Provider(OAuth2Provider): id = "twitter_oauth2" name = "Twitter" account_class = TwitterOAuth2Account - + oauth2_adapter_class = TwitterOAuth2Adapter pkce_enabled_default = True def extract_uid(self, data): diff --git a/allauth/socialaccount/providers/twitter_oauth2/views.py b/allauth/socialaccount/providers/twitter_oauth2/views.py index a566a1b999..0ba6149269 100644 --- a/allauth/socialaccount/providers/twitter_oauth2/views.py +++ b/allauth/socialaccount/providers/twitter_oauth2/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import TwitterOAuth2Provider - class TwitterOAuth2Adapter(OAuth2Adapter): - provider_id = TwitterOAuth2Provider.id + provider_id = "twitter_oauth2" access_token_url = "https://api.twitter.com/2/oauth2/token" authorize_url = "https://twitter.com/i/oauth2/authorize" profile_url = "https://api.twitter.com/2/users/me" diff --git a/allauth/socialaccount/providers/untappd/client.py b/allauth/socialaccount/providers/untappd/client.py index fb62806b64..fa762ec151 100644 --- a/allauth/socialaccount/providers/untappd/client.py +++ b/allauth/socialaccount/providers/untappd/client.py @@ -5,8 +5,6 @@ OAuth2Error, ) -from .provider import UntappdProvider - class UntappdOAuth2Client(OAuth2Client): """ @@ -16,6 +14,10 @@ class UntappdOAuth2Client(OAuth2Client): """ def get_access_token(self, code, pkce_code_verifier=None): + from allauth.socialaccount.providers.untappd.provider import ( + UntappdProvider, + ) + data = { "client_id": self.consumer_key, "redirect_url": self.callback_url, diff --git a/allauth/socialaccount/providers/untappd/provider.py b/allauth/socialaccount/providers/untappd/provider.py index 3c8a2b751e..7c4bc0e07d 100644 --- a/allauth/socialaccount/providers/untappd/provider.py +++ b/allauth/socialaccount/providers/untappd/provider.py @@ -3,6 +3,7 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.untappd.views import UntappdOAuth2Adapter class UntappdAccount(ProviderAccount): @@ -21,6 +22,7 @@ class UntappdProvider(OAuth2Provider): id = "untappd" name = "Untappd" account_class = UntappdAccount + oauth2_adapter_class = UntappdOAuth2Adapter def get_auth_params(self, request, action): params = super(UntappdProvider, self).get_auth_params(request, action) diff --git a/allauth/socialaccount/providers/untappd/views.py b/allauth/socialaccount/providers/untappd/views.py index 4903fb87d0..b28d68a5ce 100644 --- a/allauth/socialaccount/providers/untappd/views.py +++ b/allauth/socialaccount/providers/untappd/views.py @@ -6,12 +6,11 @@ ) from .client import UntappdOAuth2Client -from .provider import UntappdProvider class UntappdOAuth2Adapter(OAuth2Adapter): client_class = UntappdOAuth2Client - provider_id = UntappdProvider.id + provider_id = "untappd" access_token_url = "https://untappd.com/oauth/authorize/" access_token_method = "GET" authorize_url = "https://untappd.com/oauth/authenticate/" diff --git a/allauth/socialaccount/providers/vimeo_oauth2/provider.py b/allauth/socialaccount/providers/vimeo_oauth2/provider.py index bbb637aa0f..17a3746874 100644 --- a/allauth/socialaccount/providers/vimeo_oauth2/provider.py +++ b/allauth/socialaccount/providers/vimeo_oauth2/provider.py @@ -3,6 +3,9 @@ """ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.vimeo_oauth2.views import ( + VimeoOAuth2Adapter, +) class VimeoOAuth2Account(ProviderAccount): @@ -13,6 +16,7 @@ class VimeoOAuth2Provider(OAuth2Provider): id = "vimeo_oauth2" name = "Vimeo" account_class = VimeoOAuth2Account + oauth2_adapter_class = VimeoOAuth2Adapter def get_default_scope(self): return ["public", "private"] diff --git a/allauth/socialaccount/providers/vimeo_oauth2/views.py b/allauth/socialaccount/providers/vimeo_oauth2/views.py index e04bac82bd..a438440f99 100644 --- a/allauth/socialaccount/providers/vimeo_oauth2/views.py +++ b/allauth/socialaccount/providers/vimeo_oauth2/views.py @@ -10,11 +10,9 @@ OAuth2LoginView, ) -from .provider import VimeoOAuth2Provider - class VimeoOAuth2Adapter(OAuth2Adapter): - provider_id = VimeoOAuth2Provider.id + provider_id = "vimeo_oauth2" access_token_url = "https://api.vimeo.com/oauth/access_token" authorize_url = "https://api.vimeo.com/oauth/authorize" profile_url = "https://api.vimeo.com/me/" diff --git a/allauth/socialaccount/providers/vk/provider.py b/allauth/socialaccount/providers/vk/provider.py index 1767c9e821..19fd087996 100644 --- a/allauth/socialaccount/providers/vk/provider.py +++ b/allauth/socialaccount/providers/vk/provider.py @@ -1,6 +1,7 @@ from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.vk.views import VKOAuth2Adapter class VKAccount(ProviderAccount): @@ -29,6 +30,7 @@ class VKProvider(OAuth2Provider): id = "vk" name = "VK" account_class = VKAccount + oauth2_adapter_class = VKOAuth2Adapter def get_default_scope(self): scope = [] diff --git a/allauth/socialaccount/providers/vk/views.py b/allauth/socialaccount/providers/vk/views.py index 45f22839ff..6c2d129866 100644 --- a/allauth/socialaccount/providers/vk/views.py +++ b/allauth/socialaccount/providers/vk/views.py @@ -5,8 +5,6 @@ OAuth2LoginView, ) -from .provider import VKProvider - USER_FIELDS = [ "first_name", @@ -35,7 +33,7 @@ class VKOAuth2Adapter(OAuth2Adapter): - provider_id = VKProvider.id + provider_id = "vk" access_token_url = "https://oauth.vk.com/access_token" authorize_url = "https://oauth.vk.com/authorize" profile_url = "https://api.vk.com/method/users.get" diff --git a/allauth/socialaccount/providers/wahoo/provider.py b/allauth/socialaccount/providers/wahoo/provider.py index f37fac74a5..6a55c291cf 100644 --- a/allauth/socialaccount/providers/wahoo/provider.py +++ b/allauth/socialaccount/providers/wahoo/provider.py @@ -2,6 +2,7 @@ from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.wahoo.views import WahooOAuth2Adapter class WahooAccount(ProviderAccount): @@ -13,6 +14,7 @@ class WahooProvider(OAuth2Provider): id = "wahoo" name = "Wahoo" account_class = WahooAccount + oauth2_adapter_class = WahooOAuth2Adapter def extract_uid(self, data): return str(data["id"]) diff --git a/allauth/socialaccount/providers/wahoo/views.py b/allauth/socialaccount/providers/wahoo/views.py index e85a052578..efdeea4261 100644 --- a/allauth/socialaccount/providers/wahoo/views.py +++ b/allauth/socialaccount/providers/wahoo/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import WahooProvider - -class WahooOauth2Adapter(OAuth2Adapter): - provider_id = WahooProvider.id +class WahooOAuth2Adapter(OAuth2Adapter): + provider_id = "wahoo" access_token_url = "https://api.wahooligan.com/oauth/token" authorize_url = "https://api.wahooligan.com/oauth/authorize" profile_url = "https://api.wahooligan.com/v1/user" @@ -24,5 +22,5 @@ def complete_login(self, request, app, token, **kwargs): return self.get_provider().sociallogin_from_response(request, extra_data) -oauth2_login = OAuth2LoginView.adapter_view(WahooOauth2Adapter) -oauth2_callback = OAuth2CallbackView.adapter_view(WahooOauth2Adapter) +oauth2_login = OAuth2LoginView.adapter_view(WahooOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(WahooOAuth2Adapter) diff --git a/allauth/socialaccount/providers/weibo/provider.py b/allauth/socialaccount/providers/weibo/provider.py index ac1eab057d..14828a5103 100644 --- a/allauth/socialaccount/providers/weibo/provider.py +++ b/allauth/socialaccount/providers/weibo/provider.py @@ -3,6 +3,7 @@ ProviderException, ) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.weibo.views import WeiboOAuth2Adapter class WeiboAccount(ProviderAccount): @@ -22,6 +23,7 @@ class WeiboProvider(OAuth2Provider): id = "weibo" name = "Weibo" account_class = WeiboAccount + oauth2_adapter_class = WeiboOAuth2Adapter def extract_uid(self, data): ret = data.get("idstr") diff --git a/allauth/socialaccount/providers/weibo/views.py b/allauth/socialaccount/providers/weibo/views.py index 7189037000..5b6b9782f3 100644 --- a/allauth/socialaccount/providers/weibo/views.py +++ b/allauth/socialaccount/providers/weibo/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import WeiboProvider - class WeiboOAuth2Adapter(OAuth2Adapter): - provider_id = WeiboProvider.id + provider_id = "weibo" access_token_url = "https://api.weibo.com/oauth2/access_token" authorize_url = "https://api.weibo.com/oauth2/authorize" profile_url = "https://api.weibo.com/2/users/show.json" diff --git a/allauth/socialaccount/providers/weixin/provider.py b/allauth/socialaccount/providers/weixin/provider.py index 14a30e1244..37fc7aa483 100644 --- a/allauth/socialaccount/providers/weixin/provider.py +++ b/allauth/socialaccount/providers/weixin/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.weixin.views import WeixinOAuth2Adapter class WeixinAccount(ProviderAccount): @@ -16,6 +17,7 @@ class WeixinProvider(OAuth2Provider): id = "weixin" name = "Weixin" account_class = WeixinAccount + oauth2_adapter_class = WeixinOAuth2Adapter def extract_uid(self, data): return data["openid"] diff --git a/allauth/socialaccount/providers/weixin/views.py b/allauth/socialaccount/providers/weixin/views.py index 0ca86d2a73..c6516215e5 100644 --- a/allauth/socialaccount/providers/weixin/views.py +++ b/allauth/socialaccount/providers/weixin/views.py @@ -6,11 +6,10 @@ ) from .client import WeixinOAuth2Client -from .provider import WeixinProvider class WeixinOAuth2Adapter(OAuth2Adapter): - provider_id = WeixinProvider.id + provider_id = "weixin" access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token" profile_url = "https://api.weixin.qq.com/sns/userinfo" client_class = WeixinOAuth2Client diff --git a/allauth/socialaccount/providers/windowslive/provider.py b/allauth/socialaccount/providers/windowslive/provider.py index d471d3660c..7f104e65b9 100644 --- a/allauth/socialaccount/providers/windowslive/provider.py +++ b/allauth/socialaccount/providers/windowslive/provider.py @@ -1,7 +1,8 @@ -from __future__ import unicode_literals - from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.windowslive.views import ( + WindowsLiveOAuth2Adapter, +) class WindowsLiveAccount(ProviderAccount): @@ -16,9 +17,10 @@ def to_str(self): class WindowsLiveProvider(OAuth2Provider): - id = str("windowslive") + id = "windowslive" name = "Live" account_class = WindowsLiveAccount + oauth2_adapter_class = WindowsLiveOAuth2Adapter def get_default_scope(self): """ diff --git a/allauth/socialaccount/providers/windowslive/views.py b/allauth/socialaccount/providers/windowslive/views.py index f833446dae..5eebd94c54 100644 --- a/allauth/socialaccount/providers/windowslive/views.py +++ b/allauth/socialaccount/providers/windowslive/views.py @@ -1,5 +1,3 @@ -from __future__ import unicode_literals - from allauth.socialaccount.adapter import get_adapter from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, @@ -7,11 +5,9 @@ OAuth2LoginView, ) -from .provider import WindowsLiveProvider - class WindowsLiveOAuth2Adapter(OAuth2Adapter): - provider_id = WindowsLiveProvider.id + provider_id = "windowslive" access_token_url = "https://login.live.com/oauth20_token.srf" authorize_url = "https://login.live.com/oauth20_authorize.srf" profile_url = "https://apis.live.net/v5.0/me" diff --git a/allauth/socialaccount/providers/yahoo/provider.py b/allauth/socialaccount/providers/yahoo/provider.py index 2e712d3862..b2f62e04b8 100644 --- a/allauth/socialaccount/providers/yahoo/provider.py +++ b/allauth/socialaccount/providers/yahoo/provider.py @@ -1,8 +1,7 @@ -from __future__ import unicode_literals - from allauth.socialaccount.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.yahoo.views import YahooOAuth2Adapter class YahooAccount(ProviderAccount): @@ -20,6 +19,7 @@ class YahooProvider(OAuth2Provider): id = str("yahoo") name = "Yahoo" account_class = YahooAccount + oauth2_adapter_class = YahooOAuth2Adapter def get_default_scope(self): """ diff --git a/allauth/socialaccount/providers/yahoo/views.py b/allauth/socialaccount/providers/yahoo/views.py index 943db93acc..86d01cd2f3 100644 --- a/allauth/socialaccount/providers/yahoo/views.py +++ b/allauth/socialaccount/providers/yahoo/views.py @@ -1,5 +1,3 @@ -from __future__ import unicode_literals - from allauth.socialaccount.adapter import get_adapter from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, @@ -7,11 +5,9 @@ OAuth2LoginView, ) -from .provider import YahooProvider - class YahooOAuth2Adapter(OAuth2Adapter): - provider_id = YahooProvider.id + provider_id = "yahoo" access_token_url = "https://api.login.yahoo.com/oauth2/get_token" authorize_url = "https://api.login.yahoo.com/oauth2/request_auth" profile_url = "https://api.login.yahoo.com/openid/v1/userinfo" diff --git a/allauth/socialaccount/providers/yandex/provider.py b/allauth/socialaccount/providers/yandex/provider.py index a3ac4a0151..c675c9ee1b 100644 --- a/allauth/socialaccount/providers/yandex/provider.py +++ b/allauth/socialaccount/providers/yandex/provider.py @@ -2,6 +2,7 @@ from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.yandex.views import YandexOAuth2Adapter class YandexAccout(ProviderAccount): @@ -16,6 +17,7 @@ class YandexProvider(OAuth2Provider): id = "yandex" name = "Yandex" account_class = YandexAccout + oauth2_adapter_class = YandexOAuth2Adapter def get_default_scope(self): scope = ["login:info"] diff --git a/allauth/socialaccount/providers/yandex/views.py b/allauth/socialaccount/providers/yandex/views.py index 6daa4c78d4..4bde17e1eb 100644 --- a/allauth/socialaccount/providers/yandex/views.py +++ b/allauth/socialaccount/providers/yandex/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import YandexProvider - -class YandexAuth2Adapter(OAuth2Adapter): - provider_id = YandexProvider.id +class YandexOAuth2Adapter(OAuth2Adapter): + provider_id = "yandex" access_token_url = "https://oauth.yandex.ru/token" authorize_url = "https://oauth.yandex.com/authorize" profile_url = "https://login.yandex.ru/info" @@ -29,5 +27,5 @@ def complete_login(self, request, app, token, **kwargs): return self.get_provider().sociallogin_from_response(request, extra_data) -oauth2_login = OAuth2LoginView.adapter_view(YandexAuth2Adapter) -oauth2_callback = OAuth2CallbackView.adapter_view(YandexAuth2Adapter) +oauth2_login = OAuth2LoginView.adapter_view(YandexOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(YandexOAuth2Adapter) diff --git a/allauth/socialaccount/providers/ynab/provider.py b/allauth/socialaccount/providers/ynab/provider.py index a5e564c6e8..1ce50b6435 100644 --- a/allauth/socialaccount/providers/ynab/provider.py +++ b/allauth/socialaccount/providers/ynab/provider.py @@ -1,5 +1,6 @@ from allauth.socialaccount.providers.base import AuthAction, ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.ynab.views import YNABOAuth2Adapter class Scope(object): @@ -14,6 +15,7 @@ class YNABProvider(OAuth2Provider): id = "ynab" name = "YNAB" account_class = YNABAccount + oauth2_adapter_class = YNABOAuth2Adapter def get_default_scope(self): scope = [Scope.ACCESS] diff --git a/allauth/socialaccount/providers/ynab/views.py b/allauth/socialaccount/providers/ynab/views.py index bbf331f604..fdc480091d 100644 --- a/allauth/socialaccount/providers/ynab/views.py +++ b/allauth/socialaccount/providers/ynab/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import YNABProvider - class YNABOAuth2Adapter(OAuth2Adapter): - provider_id = YNABProvider.id + provider_id = "ynab" access_token_url = "https://app.youneedabudget.com/oauth/token" authorize_url = "https://app.youneedabudget.com/oauth/authorize" profile_url = "https://api.youneedabudget.com/v1/user" diff --git a/allauth/socialaccount/providers/zoho/provider.py b/allauth/socialaccount/providers/zoho/provider.py index 9321450f6d..7f38ccd8a5 100644 --- a/allauth/socialaccount/providers/zoho/provider.py +++ b/allauth/socialaccount/providers/zoho/provider.py @@ -1,6 +1,7 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.zoho.views import ZohoOAuth2Adapter class ZohoAccount(ProviderAccount): @@ -13,6 +14,7 @@ class ZohoProvider(OAuth2Provider): id = "zoho" name = "Zoho" account_class = ZohoAccount + oauth2_adapter_class = ZohoOAuth2Adapter def get_default_scope(self): return ["aaaserver.profile.READ"] diff --git a/allauth/socialaccount/providers/zoho/views.py b/allauth/socialaccount/providers/zoho/views.py index 4b492e51cc..dda3432a0f 100644 --- a/allauth/socialaccount/providers/zoho/views.py +++ b/allauth/socialaccount/providers/zoho/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import ZohoProvider - class ZohoOAuth2Adapter(OAuth2Adapter): - provider_id = ZohoProvider.id + provider_id = "zoho" access_token_url = "https://accounts.zoho.com/oauth/v2/token" authorize_url = "https://accounts.zoho.com/oauth/v2/auth" profile_url = "https://accounts.zoho.com/oauth/user/info" diff --git a/allauth/socialaccount/providers/zoom/provider.py b/allauth/socialaccount/providers/zoom/provider.py index 12935b0f47..02b65062c2 100644 --- a/allauth/socialaccount/providers/zoom/provider.py +++ b/allauth/socialaccount/providers/zoom/provider.py @@ -1,6 +1,7 @@ from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider +from allauth.socialaccount.providers.zoom.views import ZoomOAuth2Adapter class ZoomAccount(ProviderAccount): @@ -19,6 +20,7 @@ class ZoomProvider(OAuth2Provider): id = "zoom" name = "Zoom" account_class = ZoomAccount + oauth2_adapter_class = ZoomOAuth2Adapter def extract_uid(self, data): return data["id"] diff --git a/allauth/socialaccount/providers/zoom/views.py b/allauth/socialaccount/providers/zoom/views.py index 7863407a45..4e66b49922 100644 --- a/allauth/socialaccount/providers/zoom/views.py +++ b/allauth/socialaccount/providers/zoom/views.py @@ -5,11 +5,9 @@ OAuth2LoginView, ) -from .provider import ZoomProvider - class ZoomOAuth2Adapter(OAuth2Adapter): - provider_id = ZoomProvider.id + provider_id = "zoom" access_token_url = "https://zoom.us/oauth/token" authorize_url = "https://zoom.us/oauth/authorize" profile_url = "https://api.zoom.us/v2/users/me"