outposts: add API for default config

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer
2021-03-29 22:52:08 +02:00
parent 21ea527623
commit e5ff416c2d
5 changed files with 71 additions and 5 deletions

View File

@ -9,7 +9,7 @@ from rest_framework.serializers import JSONField, ModelSerializer, Serializer
from rest_framework.viewsets import ModelViewSet
from authentik.core.api.providers import ProviderSerializer
from authentik.outposts.models import Outpost
from authentik.outposts.models import Outpost, default_outpost_config
class OutpostSerializer(ModelSerializer):
@ -32,6 +32,18 @@ class OutpostSerializer(ModelSerializer):
]
class OutpostDefaultConfigSerializer(Serializer):
"""Global default outpost config"""
config = JSONField(read_only=True)
def create(self, validated_data: dict) -> Model:
raise NotImplementedError
def update(self, instance: Model, validated_data: dict) -> Model:
raise NotImplementedError
class OutpostHealthSerializer(Serializer):
"""Outpost health status"""
@ -78,3 +90,9 @@ class OutpostViewSet(ModelViewSet):
}
)
return Response(OutpostHealthSerializer(states, many=True).data)
@swagger_auto_schema(responses={200: OutpostDefaultConfigSerializer(many=False)})
@action(detail=False, methods=["GET"])
def default_settings(self, request: Request) -> Response:
"""Global default outpost config"""
return Response({"config": default_outpost_config(request._request.get_host())})

View File

@ -80,9 +80,9 @@ class OutpostType(models.TextChoices):
PROXY = "proxy"
def default_outpost_config():
def default_outpost_config(host: Optional[str] = None):
"""Get default outpost config"""
return asdict(OutpostConfig(authentik_host=""))
return asdict(OutpostConfig(authentik_host=host or ""))
@dataclass