mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-21 14:51:09 -05:00
73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
from importlib import import_module
|
|
from typing import List, Union
|
|
|
|
from django.urls import URLPattern, URLResolver, include, path
|
|
from django.views.generic.base import RedirectView
|
|
|
|
from allauth.socialaccount import providers
|
|
|
|
from . import app_settings
|
|
|
|
|
|
def build_provider_urlpatterns() -> List[Union[URLPattern, URLResolver]]:
|
|
# Provider urlpatterns, as separate attribute (for reusability).
|
|
provider_urlpatterns: List[Union[URLPattern, URLResolver]] = []
|
|
provider_classes = providers.registry.get_class_list()
|
|
|
|
# We need to move the OpenID Connect provider to the end. The reason is that
|
|
# matches URLs that the builtin providers also match.
|
|
#
|
|
# NOTE: Only needed if OPENID_CONNECT_URL_PREFIX is blank.
|
|
provider_classes = [
|
|
cls for cls in provider_classes if cls.id != "openid_connect"
|
|
] + [cls for cls in provider_classes if cls.id == "openid_connect"]
|
|
for provider_class in provider_classes:
|
|
prov_mod = import_module(provider_class.get_package() + ".urls")
|
|
prov_urlpatterns = getattr(prov_mod, "urlpatterns", None)
|
|
if prov_urlpatterns:
|
|
provider_urlpatterns += prov_urlpatterns
|
|
return provider_urlpatterns
|
|
|
|
|
|
urlpatterns: List[Union[URLPattern, URLResolver]] = []
|
|
if not app_settings.HEADLESS_ONLY:
|
|
urlpatterns += [path("", include("allauth.account.urls"))]
|
|
if app_settings.MFA_ENABLED:
|
|
urlpatterns += [path("2fa/", include("allauth.mfa.urls"))]
|
|
|
|
if app_settings.SOCIALACCOUNT_ENABLED and not app_settings.HEADLESS_ONLY:
|
|
urlpatterns += [path("3rdparty/", include("allauth.socialaccount.urls"))]
|
|
|
|
# DEPRECATED! -- deal with legacy URLs
|
|
urlpatterns += [
|
|
path(
|
|
"social/login/cancelled/",
|
|
RedirectView.as_view(
|
|
pattern_name="socialaccount_login_cancelled", permanent=True
|
|
),
|
|
),
|
|
path(
|
|
"social/login/error/",
|
|
RedirectView.as_view(
|
|
pattern_name="socialaccount_login_error", permanent=True
|
|
),
|
|
),
|
|
path(
|
|
"social/signup/",
|
|
RedirectView.as_view(pattern_name="socialaccount_signup", permanent=True),
|
|
),
|
|
path(
|
|
"social/connections/",
|
|
RedirectView.as_view(
|
|
pattern_name="socialaccount_connections", permanent=True
|
|
),
|
|
),
|
|
]
|
|
# (end DEPRECATED)
|
|
|
|
if app_settings.SOCIALACCOUNT_ENABLED:
|
|
urlpatterns += build_provider_urlpatterns()
|
|
|
|
if app_settings.USERSESSIONS_ENABLED and not app_settings.HEADLESS_ONLY:
|
|
urlpatterns += [path("sessions/", include("allauth.usersessions.urls"))]
|