This commit is contained in:
Iliyan Angelov
2025-09-14 23:24:25 +03:00
commit c67067a2a4
71311 changed files with 6800714 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
from urllib.parse import parse_qsl
from django.urls import reverse
from django.utils.http import urlencode
from allauth.socialaccount.providers.base import Provider
from .utils import generate_code_challenge
class OAuth2Provider(Provider):
pkce_enabled_default = False
def get_login_url(self, request, **kwargs):
url = reverse(self.id + "_login")
if kwargs:
url = url + "?" + urlencode(kwargs)
return url
def get_callback_url(self):
return reverse(self.id + "_callback")
def get_pkce_params(self):
settings = self.get_settings()
if settings.get("OAUTH_PKCE_ENABLED", self.pkce_enabled_default):
pkce_code_params = generate_code_challenge()
return pkce_code_params
return {}
def get_auth_params(self, request, action):
settings = self.get_settings()
ret = dict(settings.get("AUTH_PARAMS", {}))
dynamic_auth_params = request.GET.get("auth_params", None)
if dynamic_auth_params:
ret.update(dict(parse_qsl(dynamic_auth_params)))
return ret
def get_scope(self, request):
settings = self.get_settings()
scope = list(settings.get("SCOPE", self.get_default_scope()))
dynamic_scope = request.GET.get("scope", None)
if dynamic_scope:
scope.extend(dynamic_scope.split(","))
return scope
def get_default_scope(self):
return []