This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
authentik/passbook/api/v2/urls.py

120 lines
5.1 KiB
Python
Raw Normal View History

2019-10-28 13:44:46 +00:00
"""api v2 urls"""
from django.conf import settings
2019-10-28 16:40:57 +00:00
from django.conf.urls import url
from django.urls import path
from drf_yasg import openapi
from drf_yasg.views import get_schema_view
from rest_framework import routers
2019-10-28 16:40:57 +00:00
from structlog import get_logger
2019-10-28 16:40:57 +00:00
from passbook.api.permissions import CustomObjectPermissions
2020-02-28 10:48:55 +00:00
from passbook.audit.api import EventViewSet
from passbook.core.api.applications import ApplicationViewSet
from passbook.core.api.groups import GroupViewSet
from passbook.core.api.invitations import InvitationViewSet
2019-10-28 16:40:57 +00:00
from passbook.core.api.policies import PolicyViewSet
2019-10-28 16:55:36 +00:00
from passbook.core.api.propertymappings import PropertyMappingViewSet
2019-10-28 16:40:57 +00:00
from passbook.core.api.providers import ProviderViewSet
from passbook.core.api.sources import SourceViewSet
from passbook.core.api.users import UserViewSet
2020-05-08 17:46:39 +00:00
from passbook.flows.api import FlowStageBindingViewSet, FlowViewSet, StageViewSet
2019-10-28 16:40:57 +00:00
from passbook.lib.utils.reflection import get_apps
from passbook.policies.expiry.api import PasswordExpiryPolicyViewSet
2020-02-19 08:49:57 +00:00
from passbook.policies.expression.api import ExpressionPolicyViewSet
2019-10-28 16:40:57 +00:00
from passbook.policies.hibp.api import HaveIBeenPwendPolicyViewSet
from passbook.policies.password.api import PasswordPolicyViewSet
from passbook.policies.reputation.api import ReputationPolicyViewSet
from passbook.policies.webhook.api import WebhookPolicyViewSet
from passbook.providers.app_gw.api import ApplicationGatewayProviderViewSet
from passbook.providers.oauth.api import OAuth2ProviderViewSet
from passbook.providers.oidc.api import OpenIDProviderViewSet
2019-12-31 11:51:16 +00:00
from passbook.providers.saml.api import SAMLPropertyMappingViewSet, SAMLProviderViewSet
from passbook.sources.ldap.api import LDAPPropertyMappingViewSet, LDAPSourceViewSet
2019-10-28 16:40:57 +00:00
from passbook.sources.oauth.api import OAuthSourceViewSet
2020-05-08 17:46:39 +00:00
from passbook.stages.captcha.api import CaptchaStageViewSet
from passbook.stages.email.api import EmailStageViewSet
from passbook.stages.identification.api import IdentificationStageViewSet
from passbook.stages.login.api import LoginStageViewSet
2020-05-08 17:46:39 +00:00
from passbook.stages.otp.api import OTPStageViewSet
from passbook.stages.password.api import PasswordStageViewSet
2019-10-28 16:40:57 +00:00
LOGGER = get_logger()
router = routers.DefaultRouter()
2019-10-28 16:40:57 +00:00
for _passbook_app in get_apps():
2019-12-31 11:51:16 +00:00
if hasattr(_passbook_app, "api_mountpoint"):
2019-10-28 16:40:57 +00:00
for prefix, viewset in _passbook_app.api_mountpoint:
router.register(prefix, viewset)
LOGGER.debug("Mounted API URLs", app_name=_passbook_app.name)
2019-12-31 11:51:16 +00:00
router.register("core/applications", ApplicationViewSet)
router.register("core/invitations", InvitationViewSet)
router.register("core/groups", GroupViewSet)
router.register("core/users", UserViewSet)
2019-12-31 11:51:16 +00:00
router.register("audit/events", EventViewSet)
2019-12-31 11:51:16 +00:00
router.register("sources/all", SourceViewSet)
router.register("sources/ldap", LDAPSourceViewSet)
router.register("sources/oauth", OAuthSourceViewSet)
2019-12-31 11:51:16 +00:00
router.register("policies/all", PolicyViewSet)
router.register("policies/passwordexpiry", PasswordExpiryPolicyViewSet)
router.register("policies/haveibeenpwned", HaveIBeenPwendPolicyViewSet)
router.register("policies/password", PasswordPolicyViewSet)
router.register("policies/reputation", ReputationPolicyViewSet)
router.register("policies/webhook", WebhookPolicyViewSet)
2020-02-19 08:49:57 +00:00
router.register("policies/expression", ExpressionPolicyViewSet)
2019-12-31 11:51:16 +00:00
router.register("providers/all", ProviderViewSet)
router.register("providers/applicationgateway", ApplicationGatewayProviderViewSet)
router.register("providers/oauth", OAuth2ProviderViewSet)
router.register("providers/openid", OpenIDProviderViewSet)
router.register("providers/saml", SAMLProviderViewSet)
2019-12-31 11:51:16 +00:00
router.register("propertymappings/all", PropertyMappingViewSet)
router.register("propertymappings/ldap", LDAPPropertyMappingViewSet)
router.register("propertymappings/saml", SAMLPropertyMappingViewSet)
2020-05-08 17:46:39 +00:00
router.register("stages/all", StageViewSet)
router.register("stages/captcha", CaptchaStageViewSet)
router.register("stages/email", EmailStageViewSet)
router.register("stages/otp", OTPStageViewSet)
router.register("stages/password", PasswordStageViewSet)
router.register("stages/identification", IdentificationStageViewSet)
router.register("stages/login", LoginStageViewSet)
2020-05-08 16:29:18 +00:00
router.register("flows", FlowViewSet)
2020-05-08 17:46:39 +00:00
router.register("flows/bindings", FlowStageBindingViewSet)
2019-10-28 16:40:57 +00:00
if settings.DEBUG:
from passbook.stages.dummy.api import DummyStageViewSet
from passbook.policies.dummy.api import DummyPolicyViewSet
router.register("stages/dummy", DummyStageViewSet)
router.register("policies/dummy", DummyPolicyViewSet)
2019-10-28 16:40:57 +00:00
info = openapi.Info(
title="passbook API",
2019-12-31 11:51:16 +00:00
default_version="v2",
2019-10-28 16:40:57 +00:00
contact=openapi.Contact(email="hello@beryju.org"),
license=openapi.License(name="MIT License"),
)
SchemaView = get_schema_view(
2019-12-31 11:51:16 +00:00
info, public=True, permission_classes=(CustomObjectPermissions,),
2019-10-28 16:40:57 +00:00
)
urlpatterns = [
2019-12-31 11:51:16 +00:00
url(
r"^swagger(?P<format>\.json|\.yaml)$",
SchemaView.without_ui(cache_timeout=0),
name="schema-json",
),
path(
"swagger/",
SchemaView.with_ui("swagger", cache_timeout=0),
name="schema-swagger-ui",
),
path("redoc/", SchemaView.with_ui("redoc", cache_timeout=0), name="schema-redoc"),
2019-10-28 16:40:57 +00:00
] + router.urls