diff --git a/backend/src/appointment/routes/schedule.py b/backend/src/appointment/routes/schedule.py index 9b91edb5..24f65498 100644 --- a/backend/src/appointment/routes/schedule.py +++ b/backend/src/appointment/routes/schedule.py @@ -125,7 +125,7 @@ def update_schedule( @router.post('/public/availability', response_model=schemas.AppointmentOut) -@limiter.limit("10/minute") +@limiter.limit("20/minute") def read_schedule_availabilities( request: Request, subscriber: Subscriber = Depends(get_subscriber_from_schedule_or_signed_url), @@ -181,7 +181,7 @@ def read_schedule_availabilities( @router.put('/public/availability/request') -@limiter.limit("10/minute") +@limiter.limit("20/minute") def request_schedule_availability_slot( request: Request, s_a: schemas.AvailabilitySlotAttendee, diff --git a/frontend/src/models.ts b/frontend/src/models.ts index e668f578..e465d649 100644 --- a/frontend/src/models.ts +++ b/frontend/src/models.ts @@ -289,8 +289,13 @@ export type PydanticExceptionDetail = { msg: string, type: string } +export type FormExceptionDetail = { + id: string, + message: string, + status: number +} export type PydanticException = { - detail?: PydanticExceptionDetail[]; + detail?: FormExceptionDetail|PydanticExceptionDetail[]; } export type Exception = { status_code?: number; diff --git a/frontend/src/views/LoginView.vue b/frontend/src/views/LoginView.vue index 7cb73d3d..cee73c28 100644 --- a/frontend/src/views/LoginView.vue +++ b/frontend/src/views/LoginView.vue @@ -62,12 +62,16 @@ const handleFormError = (errObj: PydanticException) => { const { detail } = errObj; const fields = formRef.value.elements; - detail.forEach((err) => { - const name = err?.loc[1]; - if (name) { - fields[name].setCustomValidity(err.ctx.reason); - } - }); + if (Array.isArray(detail)) { + detail.forEach((err) => { + const name = err?.loc[1]; + if (name) { + fields[name].setCustomValidity(err.ctx.reason); + } + }); + } else { + loginError.value = detail.message; + } // Finally report it! formRef.value.reportValidity();