2019-10-28 13:44:46 +00:00
|
|
|
"""api v2 urls"""
|
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
|
2019-10-28 13:27:43 +00:00
|
|
|
from rest_framework import routers
|
2019-10-28 16:40:57 +00:00
|
|
|
from structlog import get_logger
|
2019-10-28 13:27:43 +00:00
|
|
|
|
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
|
2019-10-28 13:27:43 +00:00
|
|
|
from passbook.core.api.applications import ApplicationViewSet
|
2019-10-28 16:55:36 +00:00
|
|
|
from passbook.core.api.factors import FactorViewSet
|
2019-10-28 13:27:43 +00:00
|
|
|
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
|
2019-10-28 13:27:43 +00:00
|
|
|
from passbook.core.api.users import UserViewSet
|
2019-10-28 16:55:36 +00:00
|
|
|
from passbook.factors.captcha.api import CaptchaFactorViewSet
|
|
|
|
from passbook.factors.dummy.api import DummyFactorViewSet
|
|
|
|
from passbook.factors.email.api import EmailFactorViewSet
|
|
|
|
from passbook.factors.otp.api import OTPFactorViewSet
|
|
|
|
from passbook.factors.password.api import PasswordFactorViewSet
|
2020-05-08 16:29:18 +00:00
|
|
|
from passbook.flows.api import FlowFactorBindingViewSet, FlowViewSet
|
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
|
2019-10-28 13:27:43 +00:00
|
|
|
|
2019-10-28 16:40:57 +00:00
|
|
|
LOGGER = get_logger()
|
2019-10-28 13:27:43 +00:00
|
|
|
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)
|
|
|
|
router.register("audit/events", EventViewSet)
|
|
|
|
router.register("sources/all", SourceViewSet)
|
|
|
|
router.register("sources/ldap", LDAPSourceViewSet)
|
|
|
|
router.register("sources/oauth", OAuthSourceViewSet)
|
|
|
|
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)
|
|
|
|
router.register("propertymappings/all", PropertyMappingViewSet)
|
|
|
|
router.register("propertymappings/ldap", LDAPPropertyMappingViewSet)
|
|
|
|
router.register("propertymappings/saml", SAMLPropertyMappingViewSet)
|
|
|
|
router.register("factors/all", FactorViewSet)
|
|
|
|
router.register("factors/captcha", CaptchaFactorViewSet)
|
|
|
|
router.register("factors/dummy", DummyFactorViewSet)
|
|
|
|
router.register("factors/email", EmailFactorViewSet)
|
|
|
|
router.register("factors/otp", OTPFactorViewSet)
|
|
|
|
router.register("factors/password", PasswordFactorViewSet)
|
2020-05-08 16:29:18 +00:00
|
|
|
router.register("flows", FlowViewSet)
|
|
|
|
router.register("flows/bindings", FlowFactorBindingViewSet)
|
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
|