update api endpoints to use new auth

This commit is contained in:
Laura Klünder 2023-11-14 18:29:21 +01:00
parent 0fe724e3e1
commit aa5df7de7f
3 changed files with 19 additions and 7 deletions

View file

@ -9,8 +9,8 @@ class APITokenSchema(Schema):
token: str
@auth_api_router.get('/session/', response=APITokenSchema,
@auth_api_router.get('/session/', response=APITokenSchema, auth=None,
summary="Get session API token")
def session_token(request):
print()
return {"token": request.COOKIES.get(settings.SESSION_COOKIE_NAME, 'anonymous')}
session_id = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
return {"token": "anonymous" if session_id is None else f"session:{session_id}"}

View file

@ -10,7 +10,9 @@ from rest_framework.response import Response
from rest_framework.routers import SimpleRouter
from c3nav.api.api import SessionViewSet
from c3nav.api.exceptions import CustomAPIException
from c3nav.api.newapi import auth_api_router
from c3nav.api.newauth import BearerAuth
from c3nav.editor.api import ChangeSetViewSet, EditorViewSet
from c3nav.mapdata.api import (AccessRestrictionGroupViewSet, AccessRestrictionViewSet, AreaViewSet, BuildingViewSet,
ColumnViewSet, CrossDescriptionViewSet, DoorViewSet, DynamicLocationPositionViewSet,
@ -21,13 +23,22 @@ from c3nav.mapdata.api import (AccessRestrictionGroupViewSet, AccessRestrictionV
from c3nav.mapdata.utils.user import can_access_editor
from c3nav.mesh.api import FirmwareViewSet
from c3nav.mesh.newapi import api_router as mesh_api_router
from c3nav.mapdata.newapi import api_router as mapdata_api_router
from c3nav.routing.api import RoutingViewSet
ninja_api = NinjaAPI(
title="c3nav API",
version="v2",
docs_url="/",
auth=BearerAuth(),
)
@ninja_api.exception_handler(CustomAPIException)
def on_invalid_token(request, exc):
return ninja_api.create_response(request, {"detail": exc.detail}, status=exc.status_code)
ninja_api.add_router("/auth/", auth_api_router)
ninja_api.add_router("/mesh/", mesh_api_router)

View file

@ -5,6 +5,7 @@ from ninja import Router as APIRouter
from ninja import Schema
from ninja.pagination import paginate
from c3nav.api.newauth import auth_responses
from c3nav.mesh.dataformats import BoardType
from c3nav.mesh.messages import ChipType
from c3nav.mesh.models import FirmwareVersion
@ -38,15 +39,15 @@ class Error(Schema):
detail: str
@api_router.get('/firmwares/', response=list[FirmwareSchema],
summary="List available firmwares")
@api_router.get('/firmwares/', summary="List available firmwares",
response={200: list[FirmwareSchema], **auth_responses})
@paginate
def firmware_list(request):
return FirmwareVersion.objects.all()
@api_router.get('/firmwares/{firmware_id}/', response={200: FirmwareSchema, 404: Error},
summary="Get specific firmware")
@api_router.get('/firmwares/{firmware_id}/', summary="Get specific firmware",
response={200: FirmwareSchema, **auth_responses})
def firmware_detail(request, firmware_id: int):
try:
return FirmwareVersion.objects.get(id=firmware_id)