From e042f9b5e29ba9acf22249ee8749a9e255ac7d70 Mon Sep 17 00:00:00 2001 From: = Date: Fri, 11 Oct 2024 01:42:38 +0530 Subject: [PATCH] feat: made missing errors as internal server error and added depth in scim knex --- backend/src/lib/knex/scim.ts | 14 +++++++++----- backend/src/server/plugins/error-handler.ts | 6 +++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/backend/src/lib/knex/scim.ts b/backend/src/lib/knex/scim.ts index 255d8778b..0caf8c491 100644 --- a/backend/src/lib/knex/scim.ts +++ b/backend/src/lib/knex/scim.ts @@ -11,8 +11,11 @@ const appendParentToGroupingOperator = (parentPath: string, filter: Filter) => { const processDynamicQuery = ( rootQuery: Knex.QueryBuilder, scimRootFilterAst: Filter, - getAttributeField: (attr: string) => string | null + getAttributeField: (attr: string) => string | null, + depth = 0 ) => { + if (depth > 10) return; + const stack = [ { scimFilterAst: scimRootFilterAst, @@ -76,7 +79,7 @@ const processDynamicQuery = ( case "and": { scimFilterAst.filters.forEach((el) => { void query.andWhere((subQueryBuilder) => { - processDynamicQuery(subQueryBuilder, el, getAttributeField); + processDynamicQuery(subQueryBuilder, el, getAttributeField, depth + 1); }); }); break; @@ -84,14 +87,14 @@ const processDynamicQuery = ( case "or": { scimFilterAst.filters.forEach((el) => { void query.orWhere((subQueryBuilder) => { - processDynamicQuery(subQueryBuilder, el, getAttributeField); + processDynamicQuery(subQueryBuilder, el, getAttributeField, depth + 1); }); }); break; } case "not": { void query.whereNot((subQueryBuilder) => { - processDynamicQuery(subQueryBuilder, scimFilterAst.filter, getAttributeField); + processDynamicQuery(subQueryBuilder, scimFilterAst.filter, getAttributeField, depth + 1); }); break; } @@ -100,7 +103,8 @@ const processDynamicQuery = ( processDynamicQuery( subQueryBuilder, appendParentToGroupingOperator(scimFilterAst.attrPath, scimFilterAst.valFilter), - getAttributeField + getAttributeField, + depth + 1 ); }); break; diff --git a/backend/src/server/plugins/error-handler.ts b/backend/src/server/plugins/error-handler.ts index 03681b1c8..76bfa9023 100644 --- a/backend/src/server/plugins/error-handler.ts +++ b/backend/src/server/plugins/error-handler.ts @@ -97,7 +97,11 @@ export const fastifyErrHandler = fastifyPlugin(async (server: FastifyZodProvider message }); } else { - void res.send(error); + void res.status(HttpStatusCodes.InternalServerError).send({ + statusCode: HttpStatusCodes.InternalServerError, + error: "InternalServerError", + message: "Something went wrong" + }); } }); });