@opengis/fastify-table 2.3.5 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/errors.d.ts +38 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -9
- package/dist/server/plugins/access/funcs/getAdminAccess.d.ts +1 -4
- package/dist/server/plugins/access/funcs/getAdminAccess.d.ts.map +1 -1
- package/dist/server/plugins/access/funcs/getAdminAccess.js +3 -2
- package/dist/server/plugins/auth/funcs/getQuery.d.ts.map +1 -1
- package/dist/server/plugins/auth/funcs/getQuery.js +2 -1
- package/dist/server/plugins/auth/funcs/loginFile.d.ts +1 -4
- package/dist/server/plugins/auth/funcs/loginFile.d.ts.map +1 -1
- package/dist/server/plugins/auth/funcs/loginFile.js +10 -5
- package/dist/server/plugins/auth/funcs/loginUser.d.ts.map +1 -1
- package/dist/server/plugins/auth/funcs/loginUser.js +25 -18
- package/dist/server/plugins/auth/index.d.ts.map +1 -1
- package/dist/server/plugins/auth/index.js +3 -4
- package/dist/server/plugins/crud/funcs/dataInsert.js +1 -1
- package/dist/server/plugins/extra/extraData.d.ts.map +1 -1
- package/dist/server/plugins/extra/extraData.js +3 -2
- package/dist/server/plugins/extra/extraDataGet.d.ts +1 -4
- package/dist/server/plugins/extra/extraDataGet.d.ts.map +1 -1
- package/dist/server/plugins/extra/extraDataGet.js +4 -6
- package/dist/server/plugins/file/uploadMultiPart.js +1 -1
- package/dist/server/plugins/grpc/utils/html2doc.d.ts +0 -6
- package/dist/server/plugins/grpc/utils/html2doc.d.ts.map +1 -1
- package/dist/server/plugins/grpc/utils/html2doc.js +3 -8
- package/dist/server/plugins/grpc/utils/html2img.d.ts +0 -6
- package/dist/server/plugins/grpc/utils/html2img.d.ts.map +1 -1
- package/dist/server/plugins/grpc/utils/html2img.js +3 -8
- package/dist/server/plugins/grpc/utils/html2pdf.d.ts +0 -6
- package/dist/server/plugins/grpc/utils/html2pdf.d.ts.map +1 -1
- package/dist/server/plugins/grpc/utils/html2pdf.js +7 -12
- package/dist/server/plugins/grpc/utils/mergePdf.d.ts +0 -7
- package/dist/server/plugins/grpc/utils/mergePdf.d.ts.map +1 -1
- package/dist/server/plugins/grpc/utils/mergePdf.js +4 -9
- package/dist/server/plugins/logger/checkUserAccess.d.ts +1 -4
- package/dist/server/plugins/logger/checkUserAccess.d.ts.map +1 -1
- package/dist/server/plugins/logger/checkUserAccess.js +4 -6
- package/dist/server/plugins/logger/errorMessage.d.ts +1 -1
- package/dist/server/plugins/logger/errorMessage.d.ts.map +1 -1
- package/dist/server/plugins/logger/errorMessage.js +7 -8
- package/dist/server/plugins/logger/errorStatus.d.ts.map +1 -1
- package/dist/server/plugins/logger/errorStatus.js +6 -0
- package/dist/server/plugins/logger/index.d.ts +2 -2
- package/dist/server/plugins/logger/index.d.ts.map +1 -1
- package/dist/server/plugins/logger/index.js +16 -18
- package/dist/server/plugins/pg/funcs/getMeta.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/getMeta.js +5 -3
- package/dist/server/plugins/policy/funcs/checkJWT.d.ts +0 -9
- package/dist/server/plugins/policy/funcs/checkJWT.d.ts.map +1 -1
- package/dist/server/plugins/policy/funcs/checkJWT.js +6 -5
- package/dist/server/plugins/policy/funcs/checkPermissions.d.ts +1 -4
- package/dist/server/plugins/policy/funcs/checkPermissions.d.ts.map +1 -1
- package/dist/server/plugins/policy/funcs/checkPermissions.js +2 -1
- package/dist/server/plugins/policy/funcs/checkPolicy.d.ts +1 -4
- package/dist/server/plugins/policy/funcs/checkPolicy.d.ts.map +1 -1
- package/dist/server/plugins/policy/funcs/checkPolicy.js +8 -7
- package/dist/server/plugins/policy/index.d.ts.map +1 -1
- package/dist/server/plugins/policy/index.js +2 -11
- package/dist/server/plugins/table/funcs/getFilterSQL/index.d.ts +1 -15
- package/dist/server/plugins/table/funcs/getFilterSQL/index.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/getFilterSQL/index.js +6 -4
- package/dist/server/plugins/table/funcs/gisIRColumn.d.ts +0 -22
- package/dist/server/plugins/table/funcs/gisIRColumn.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/gisIRColumn.js +5 -3
- package/dist/server/plugins/upload/index.d.ts.map +1 -1
- package/dist/server/plugins/upload/index.js +7 -0
- package/dist/server/plugins/upload/s3.d.ts +7 -1
- package/dist/server/plugins/upload/s3.d.ts.map +1 -1
- package/dist/server/plugins/upload/s3.js +54 -10
- package/dist/server/plugins/upload/s3minio.d.ts +59 -0
- package/dist/server/plugins/upload/s3minio.d.ts.map +1 -0
- package/dist/server/plugins/upload/s3minio.js +199 -0
- package/dist/server/plugins/upload/startUpload.d.ts.map +1 -1
- package/dist/server/plugins/upload/startUpload.js +16 -8
- package/dist/server/plugins/upload/uploadChunk.d.ts.map +1 -1
- package/dist/server/plugins/upload/uploadChunk.js +14 -9
- package/dist/server/plugins/usercls/index.js +1 -1
- package/dist/server/routes/access/controllers/access.group.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.group.js +3 -5
- package/dist/server/routes/access/controllers/access.group.post.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.group.post.js +3 -5
- package/dist/server/routes/access/controllers/access.interface.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.interface.js +1 -4
- package/dist/server/routes/access/controllers/access.user.d.ts +5 -1
- package/dist/server/routes/access/controllers/access.user.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.user.js +4 -5
- package/dist/server/routes/access/controllers/access.user.post.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.user.post.js +4 -5
- package/dist/server/routes/access/index.d.ts.map +1 -1
- package/dist/server/routes/access/index.js +10 -6
- package/dist/server/routes/auth/controllers/2factor/providers/totp.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/2factor/providers/totp.js +4 -3
- package/dist/server/routes/auth/controllers/2factor/qrcode.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/2factor/qrcode.js +6 -10
- package/dist/server/routes/auth/controllers/2factor/recovery.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/2factor/recovery.js +14 -23
- package/dist/server/routes/auth/controllers/2factor/reset.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/2factor/reset.js +3 -5
- package/dist/server/routes/auth/controllers/2factor/verify.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/2factor/verify.js +30 -43
- package/dist/server/routes/auth/controllers/core/login.d.ts +1 -4
- package/dist/server/routes/auth/controllers/core/login.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/core/passwordRecovery.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/core/passwordRecovery.js +7 -8
- package/dist/server/routes/auth/controllers/core/registration.d.ts +1 -4
- package/dist/server/routes/auth/controllers/core/registration.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/core/registration.js +10 -24
- package/dist/server/routes/auth/controllers/core/updateUserInfo.d.ts +1 -2
- package/dist/server/routes/auth/controllers/core/updateUserInfo.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/core/updateUserInfo.js +3 -2
- package/dist/server/routes/auth/controllers/euSign/authByData.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/euSign/authByData.js +4 -7
- package/dist/server/routes/auth/controllers/jwt/authorize.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/jwt/authorize.js +6 -9
- package/dist/server/routes/auth/controllers/jwt/token.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/jwt/token.js +9 -12
- package/dist/server/routes/auth/controllers/page/login2faTemplate.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/page/login2faTemplate.js +3 -2
- package/dist/server/routes/auth/index.d.ts +1 -2
- package/dist/server/routes/auth/index.d.ts.map +1 -1
- package/dist/server/routes/auth/index.js +4 -3
- package/dist/server/routes/cron/controllers/cronApi.d.ts.map +1 -1
- package/dist/server/routes/cron/controllers/cronApi.js +3 -4
- package/dist/server/routes/cron/index.js +1 -1
- package/dist/server/routes/crud/controllers/deleteCrud.d.ts.map +1 -1
- package/dist/server/routes/crud/controllers/deleteCrud.js +11 -33
- package/dist/server/routes/crud/controllers/insert.d.ts +1 -1
- package/dist/server/routes/crud/controllers/insert.d.ts.map +1 -1
- package/dist/server/routes/crud/controllers/insert.js +17 -31
- package/dist/server/routes/crud/controllers/table.d.ts.map +1 -1
- package/dist/server/routes/crud/controllers/table.js +14 -18
- package/dist/server/routes/crud/controllers/update.d.ts.map +1 -1
- package/dist/server/routes/crud/controllers/update.js +16 -28
- package/dist/server/routes/crud/index.d.ts.map +1 -1
- package/dist/server/routes/crud/index.js +14 -4
- package/dist/server/routes/dblist/controllers/setItem.d.ts +0 -6
- package/dist/server/routes/dblist/controllers/setItem.d.ts.map +1 -1
- package/dist/server/routes/dblist/controllers/setItem.js +3 -2
- package/dist/server/routes/dblist/index.d.ts.map +1 -1
- package/dist/server/routes/dblist/index.js +5 -3
- package/dist/server/routes/file/controllers/delete.d.ts +4 -1
- package/dist/server/routes/file/controllers/delete.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/delete.js +8 -8
- package/dist/server/routes/file/controllers/download.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/download.js +5 -8
- package/dist/server/routes/file/controllers/export.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/export.js +8 -8
- package/dist/server/routes/file/controllers/files.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/files.js +6 -8
- package/dist/server/routes/file/controllers/resize.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/resize.js +4 -12
- package/dist/server/routes/file/index.d.ts.map +1 -1
- package/dist/server/routes/file/index.js +10 -7
- package/dist/server/routes/grpc/controllers/file2geojson.d.ts.map +1 -1
- package/dist/server/routes/grpc/controllers/file2geojson.js +7 -7
- package/dist/server/routes/grpc/controllers/filePreview.d.ts.map +1 -1
- package/dist/server/routes/grpc/controllers/filePreview.js +5 -4
- package/dist/server/routes/grpc/index.d.ts.map +1 -1
- package/dist/server/routes/grpc/index.js +3 -2
- package/dist/server/routes/logger/controllers/logger.file.d.ts +1 -1
- package/dist/server/routes/logger/controllers/logger.file.d.ts.map +1 -1
- package/dist/server/routes/logger/controllers/logger.file.js +4 -5
- package/dist/server/routes/logger/controllers/logger.metrics.d.ts.map +1 -1
- package/dist/server/routes/logger/controllers/logger.metrics.js +1 -4
- package/dist/server/routes/logger/index.d.ts.map +1 -1
- package/dist/server/routes/logger/index.js +4 -2
- package/dist/server/routes/menu/controllers/getMenu.d.ts.map +1 -1
- package/dist/server/routes/menu/controllers/getMenu.js +2 -1
- package/dist/server/routes/menu/index.d.ts.map +1 -1
- package/dist/server/routes/menu/index.js +9 -2
- package/dist/server/routes/notifications/controllers/addUserNotification.d.ts +1 -2
- package/dist/server/routes/notifications/controllers/addUserNotification.d.ts.map +1 -1
- package/dist/server/routes/notifications/controllers/addUserNotification.js +5 -6
- package/dist/server/routes/notifications/controllers/deleteUserNotification.d.ts +1 -2
- package/dist/server/routes/notifications/controllers/deleteUserNotification.d.ts.map +1 -1
- package/dist/server/routes/notifications/controllers/deleteUserNotification.js +5 -6
- package/dist/server/routes/notifications/controllers/editUserNotification.d.ts +1 -2
- package/dist/server/routes/notifications/controllers/editUserNotification.d.ts.map +1 -1
- package/dist/server/routes/notifications/controllers/editUserNotification.js +6 -9
- package/dist/server/routes/notifications/controllers/readNotifications.d.ts +4 -2
- package/dist/server/routes/notifications/controllers/readNotifications.d.ts.map +1 -1
- package/dist/server/routes/notifications/controllers/readNotifications.js +4 -3
- package/dist/server/routes/notifications/controllers/userNotifications.d.ts +5 -2
- package/dist/server/routes/notifications/controllers/userNotifications.d.ts.map +1 -1
- package/dist/server/routes/notifications/controllers/userNotifications.js +4 -5
- package/dist/server/routes/notifications/index.d.ts +1 -2
- package/dist/server/routes/notifications/index.d.ts.map +1 -1
- package/dist/server/routes/notifications/index.js +3 -1
- package/dist/server/routes/properties/controllers/properties.get.d.ts +5 -2
- package/dist/server/routes/properties/controllers/properties.get.d.ts.map +1 -1
- package/dist/server/routes/properties/controllers/properties.get.js +6 -5
- package/dist/server/routes/properties/controllers/properties.post.d.ts +1 -1
- package/dist/server/routes/properties/controllers/properties.post.d.ts.map +1 -1
- package/dist/server/routes/properties/controllers/properties.post.js +7 -6
- package/dist/server/routes/properties/index.d.ts.map +1 -1
- package/dist/server/routes/properties/index.js +4 -7
- package/dist/server/routes/table/controllers/card.d.ts +1 -1
- package/dist/server/routes/table/controllers/card.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/card.js +9 -7
- package/dist/server/routes/table/controllers/cardData.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/cardData.js +4 -6
- package/dist/server/routes/table/controllers/cardTabData.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/cardTabData.js +3 -2
- package/dist/server/routes/table/controllers/dataInfo.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/dataInfo.js +4 -3
- package/dist/server/routes/table/controllers/filter.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/filter.js +3 -2
- package/dist/server/routes/table/controllers/form.d.ts +1 -1
- package/dist/server/routes/table/controllers/form.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/form.js +7 -5
- package/dist/server/routes/table/controllers/getFormByTable.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/getFormByTable.js +12 -12
- package/dist/server/routes/table/controllers/suggest.d.ts +1 -1
- package/dist/server/routes/table/controllers/suggest.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/suggest.js +14 -29
- package/dist/server/routes/table/controllers/tableInfo.d.ts +1 -2
- package/dist/server/routes/table/controllers/tableInfo.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/tableInfo.js +9 -8
- package/dist/server/routes/table/controllers/tokenInfo.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/tokenInfo.js +2 -1
- package/dist/server/routes/table/functions/getData.d.ts.map +1 -1
- package/dist/server/routes/table/functions/getData.js +19 -25
- package/dist/server/routes/table/index.d.ts.map +1 -1
- package/dist/server/routes/table/index.js +15 -13
- package/dist/server/routes/templates/controllers/getTemplate.d.ts.map +1 -1
- package/dist/server/routes/templates/controllers/getTemplate.js +9 -5
- package/dist/server/routes/templates/index.d.ts.map +1 -1
- package/dist/server/routes/templates/index.js +2 -1
- package/dist/server/routes/upload/index.d.ts.map +1 -1
- package/dist/server/routes/upload/index.js +31 -20
- package/dist/server/routes/usercls/controllers/addUserCls.d.ts.map +1 -1
- package/dist/server/routes/usercls/controllers/addUserCls.js +2 -1
- package/dist/server/routes/usercls/controllers/deleteUserCls.d.ts.map +1 -1
- package/dist/server/routes/usercls/controllers/deleteUserCls.js +2 -1
- package/dist/server/routes/usercls/controllers/editUserCls.d.ts.map +1 -1
- package/dist/server/routes/usercls/controllers/editUserCls.js +2 -1
- package/dist/server/routes/usercls/controllers/getUserCls.d.ts +1 -1
- package/dist/server/routes/usercls/controllers/getUserCls.d.ts.map +1 -1
- package/dist/server/routes/usercls/controllers/getUserCls.js +4 -3
- package/dist/server/routes/usercls/index.d.ts.map +1 -1
- package/dist/server/routes/usercls/index.js +12 -5
- package/dist/server/routes/util/controllers/api.list.d.ts +19 -0
- package/dist/server/routes/util/controllers/api.list.d.ts.map +1 -0
- package/dist/server/routes/util/controllers/api.list.js +58 -0
- package/dist/server/routes/util/controllers/code.generator.d.ts.map +1 -1
- package/dist/server/routes/util/controllers/code.generator.js +7 -6
- package/dist/server/routes/util/controllers/user.tokens.d.ts +1 -2
- package/dist/server/routes/util/controllers/user.tokens.d.ts.map +1 -1
- package/dist/server/routes/util/controllers/user.tokens.js +6 -5
- package/dist/server/routes/util/index.d.ts.map +1 -1
- package/dist/server/routes/util/index.js +8 -7
- package/dist/server/routes/widget/controllers/file.edit.d.ts.map +1 -1
- package/dist/server/routes/widget/controllers/file.edit.js +5 -4
- package/dist/server/routes/widget/controllers/widget.del.d.ts.map +1 -1
- package/dist/server/routes/widget/controllers/widget.del.js +6 -7
- package/dist/server/routes/widget/controllers/widget.get.d.ts.map +1 -1
- package/dist/server/routes/widget/controllers/widget.get.js +4 -3
- package/dist/server/routes/widget/controllers/widget.set.d.ts.map +1 -1
- package/dist/server/routes/widget/controllers/widget.set.js +5 -4
- package/dist/server/routes/widget/index.d.ts.map +1 -1
- package/dist/server/routes/widget/index.js +3 -2
- package/package.json +3 -1
- package/dist/module/core/cls/constraint_type.json +0 -14
- package/dist/module/core/cls/constraint_type_table.json +0 -18
- package/dist/server/migrations/oauth.sql.sql +0 -77
- package/dist/server/plugins/auth/funcs/getUserPermissions.d.ts +0 -2
- package/dist/server/plugins/auth/funcs/getUserPermissions.d.ts.map +0 -1
- package/dist/server/plugins/auth/funcs/getUserPermissions.js +0 -24
- package/dist/server/plugins/auth/onRequest.d.ts +0 -4
- package/dist/server/plugins/auth/onRequest.d.ts.map +0 -1
- package/dist/server/plugins/auth/onRequest.js +0 -104
- package/dist/server/plugins/migration/index.d.ts +0 -3
- package/dist/server/plugins/migration/index.d.ts.map +0 -1
- package/dist/server/plugins/migration/index.js +0 -5
- package/dist/server/plugins/policy/funcs/checkAuth.d.ts +0 -4
- package/dist/server/plugins/policy/funcs/checkAuth.d.ts.map +0 -1
- package/dist/server/plugins/policy/funcs/checkAuth.js +0 -104
- package/dist/server/routes/access/controllers/access.resources.d.ts +0 -6
- package/dist/server/routes/access/controllers/access.resources.d.ts.map +0 -1
- package/dist/server/routes/access/controllers/access.resources.js +0 -14
- package/dist/server/routes/access/controllers/resources.d.ts +0 -11
- package/dist/server/routes/access/controllers/resources.d.ts.map +0 -1
- package/dist/server/routes/access/controllers/resources.js +0 -14
- package/dist/server/routes/access/functions/resources.d.ts +0 -6
- package/dist/server/routes/access/functions/resources.d.ts.map +0 -1
- package/dist/server/routes/access/functions/resources.js +0 -11
- package/dist/server/types/errors.d.ts +0 -14
- package/dist/server/types/errors.d.ts.map +0 -1
- package/dist/server/types/errors.js +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/filter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/filter.ts"],"names":[],"mappings":"AAcA,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CAC3B;AAED,wBAA8B,SAAS,CACrC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,GAC5C,OAAO,CAAC,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,GAAG,CAAC,CAqSvE"}
|
|
@@ -8,6 +8,7 @@ import pgClients from "../../../plugins/pg/pgClients.js";
|
|
|
8
8
|
import { applyHook } from "../../../../utils.js";
|
|
9
9
|
import getTemplate from "../../../plugins/table/funcs/getTemplate.js";
|
|
10
10
|
import getMeta from "../../../plugins/pg/funcs/getMeta.js";
|
|
11
|
+
import { NotFoundError } from "../../../../errors.js";
|
|
11
12
|
const { prefix = "/api" } = config;
|
|
12
13
|
export default async function filterAPI(req, reply, iscalled) {
|
|
13
14
|
const time = Date.now();
|
|
@@ -19,13 +20,13 @@ export default async function filterAPI(req, reply, iscalled) {
|
|
|
19
20
|
const loadTable = await getTemplate("table", params.table);
|
|
20
21
|
const { key, table, sql, query: tableQuery, form, extra, filterState, filterCustom, } = hookData || loadTable || {};
|
|
21
22
|
if (!table) {
|
|
22
|
-
|
|
23
|
+
throw NotFoundError("table not found");
|
|
23
24
|
}
|
|
24
25
|
const { pk: pk1, view } = await getMeta({ pg, table });
|
|
25
26
|
// const pk = pg.pk?.[table] || pg.pk?.[table.replace(/"/g, "")];
|
|
26
27
|
const pk = !pk1 && view ? key : pk1;
|
|
27
28
|
if (!pk) {
|
|
28
|
-
|
|
29
|
+
throw NotFoundError("table pkey not found");
|
|
29
30
|
}
|
|
30
31
|
const sqlTable = sql
|
|
31
32
|
?.filter?.((el) => !el?.disabled && el?.sql?.replace)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export default function formFunction(req: any, reply: any): Promise<
|
|
1
|
+
export default function formFunction(req: any, reply: any): Promise<{}>;
|
|
2
2
|
//# sourceMappingURL=form.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/form.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/form.ts"],"names":[],"mappings":"AAkBA,wBAA8B,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,eAkD9D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NotFoundError } from "../../../../errors.js";
|
|
1
2
|
import { applyHook, getTemplate, pgClients } from "../../../../utils.js";
|
|
2
3
|
const q = `select property_key as key, property_json as json, property_int as int,
|
|
3
4
|
property_text as text from admin.properties where 1=1`;
|
|
@@ -15,15 +16,16 @@ export default async function formFunction(req, reply) {
|
|
|
15
16
|
form: params?.name,
|
|
16
17
|
user,
|
|
17
18
|
}));
|
|
19
|
+
// hooks should throw custom errors instead, this is temp solution to avoid breaking changes in hooks
|
|
18
20
|
if (hookData?.message && hookData?.status) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return
|
|
21
|
+
if (hookData.status >= 400) {
|
|
22
|
+
throw new Error(hookData.message);
|
|
23
|
+
}
|
|
24
|
+
return hookData.message;
|
|
23
25
|
}
|
|
24
26
|
const form = await getTemplate("form", hookData?.form || params?.name);
|
|
25
27
|
if (!form) {
|
|
26
|
-
|
|
28
|
+
throw NotFoundError("form not found");
|
|
27
29
|
}
|
|
28
30
|
// replace settings
|
|
29
31
|
const arr = JSON.stringify(form).match(/{{settings.([^}]*)}}/g);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFormByTable.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/getFormByTable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAY5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"getFormByTable.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/getFormByTable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAY5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAezD,wBAA8B,OAAO,CACnC,EACE,EAAqB,EACrB,MAAM,EACN,IAAS,EACT,KAAU,EACV,MAAM,GACP,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,EACD,KAAK,EAAE,YAAY,gBAkLpB"}
|
|
@@ -8,6 +8,7 @@ import applyHook from "../../../plugins/hook/applyHook.js";
|
|
|
8
8
|
import getTemplate from "../../../plugins/table/funcs/getTemplate.js";
|
|
9
9
|
import getEditData from "../../crud/controllers/table.js";
|
|
10
10
|
import formatSchema from "./utils/formatSchema.js";
|
|
11
|
+
import { ForbiddenError, NotFoundError, UnauthorizedError, } from "../../../../errors.js";
|
|
11
12
|
const q = `select
|
|
12
13
|
property_key as key,
|
|
13
14
|
property_json as json,
|
|
@@ -19,14 +20,18 @@ export default async function getForm({ pg = pgClients.client, params, user = {}
|
|
|
19
20
|
const time = Date.now();
|
|
20
21
|
const edit = query.edit || params.id;
|
|
21
22
|
if (!user?.uid) {
|
|
22
|
-
|
|
23
|
+
throw UnauthorizedError("unauthorized");
|
|
23
24
|
}
|
|
24
25
|
const hookData = (await applyHook("preForm", {
|
|
25
26
|
table: params.name,
|
|
26
27
|
user,
|
|
27
28
|
}));
|
|
29
|
+
// hooks should throw custom errors instead, this is temp solution to avoid breaking changes in hooks
|
|
28
30
|
if (hookData?.message && hookData?.status) {
|
|
29
|
-
|
|
31
|
+
if (hookData.status >= 400) {
|
|
32
|
+
throw new Error(hookData.message);
|
|
33
|
+
}
|
|
34
|
+
return hookData.message;
|
|
30
35
|
}
|
|
31
36
|
const tokenData = (await getToken({ token: params.name, uid: user?.uid, json: 1 })) || {};
|
|
32
37
|
const table = tokenData?.table || hookData?.table || params.name;
|
|
@@ -34,18 +39,15 @@ export default async function getForm({ pg = pgClients.client, params, user = {}
|
|
|
34
39
|
const { title = loadTable.ua, description } = loadTable;
|
|
35
40
|
const form = tokenData?.form || hookData?.form || loadTable.form;
|
|
36
41
|
if (!form) {
|
|
37
|
-
//
|
|
42
|
+
// throw NotFoundError("form not found");
|
|
38
43
|
}
|
|
39
44
|
const { actions = [], message: accessMessage } = (await getAccess({ table, id: edit, form, user, method }, pg)) || {};
|
|
40
45
|
if (accessMessage) {
|
|
41
|
-
|
|
42
|
-
error: accessMessage,
|
|
43
|
-
code: 403,
|
|
44
|
-
});
|
|
46
|
+
throw ForbiddenError(accessMessage);
|
|
45
47
|
}
|
|
46
48
|
const loadTemplate = await getTemplate("form", form || params.name);
|
|
47
49
|
if (!loadTemplate) {
|
|
48
|
-
|
|
50
|
+
throw NotFoundError("form template not found");
|
|
49
51
|
}
|
|
50
52
|
const { schema = loadTemplate } = loadTemplate;
|
|
51
53
|
await Promise.all(Object.keys(schema || {})
|
|
@@ -84,9 +86,7 @@ export default async function getForm({ pg = pgClients.client, params, user = {}
|
|
|
84
86
|
process.env.NODE_ENV !== "test" &&
|
|
85
87
|
!(tokenData?.form || hookData?.form) &&
|
|
86
88
|
form) {
|
|
87
|
-
|
|
88
|
-
.status(403)
|
|
89
|
-
.send({ error: "access restricted: actions", code: 403 });
|
|
89
|
+
throw ForbiddenError("access restricted: actions");
|
|
90
90
|
}
|
|
91
91
|
const token = setToken({
|
|
92
92
|
ids: [JSON.stringify({ id, table, form })],
|
|
@@ -138,5 +138,5 @@ export default async function getForm({ pg = pgClients.client, params, user = {}
|
|
|
138
138
|
payload: res,
|
|
139
139
|
user,
|
|
140
140
|
});
|
|
141
|
-
return
|
|
141
|
+
return res1 || res;
|
|
142
142
|
}
|
|
@@ -14,5 +14,5 @@ export declare function getTableColumnMeta({ table, template, column, selectName
|
|
|
14
14
|
searchQuery: string;
|
|
15
15
|
pk: string;
|
|
16
16
|
} | null>;
|
|
17
|
-
export default function suggest(req: any
|
|
17
|
+
export default function suggest(req: any): Promise<any>;
|
|
18
18
|
//# sourceMappingURL=suggest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAwBpD,wBAAsB,kBAAkB,CAAC,EACvC,KAAK,EACL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,QAAQ,EACR,UAAU,EACV,GAAG,EACH,EAAqB,GACtB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,UAAU,CAAC;CACjB;;;;;UAwFA;AAED,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG,gBAuX7C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { existsSync, readFileSync } from "node:fs";
|
|
3
3
|
import { config, getPGAsync, getTemplate, getSelectMeta, getMeta, applyHook, getSelectVal, logger, getSelect, metaFormat, getColumnCLS, pgClients, getFilter, } from "../../../../utils.js";
|
|
4
|
+
import { BadRequestError, NotFoundError } from "../../../../errors.js";
|
|
4
5
|
const defaultLimit = 50;
|
|
5
6
|
export async function getTableColumnMeta({ table, template, column, selectName, filtered, startsWith, key, pg = pgClients.client, }) {
|
|
6
7
|
if (!table || !column) {
|
|
@@ -64,7 +65,7 @@ export async function getTableColumnMeta({ table, template, column, selectName,
|
|
|
64
65
|
pk: "id",
|
|
65
66
|
};
|
|
66
67
|
}
|
|
67
|
-
export default async function suggest(req
|
|
68
|
+
export default async function suggest(req) {
|
|
68
69
|
const time = Date.now();
|
|
69
70
|
const { params, user, query = {}, pg: pg1 = pgClients.client } = req;
|
|
70
71
|
const { lang = "ua", parent = "" } = query;
|
|
@@ -93,10 +94,7 @@ export default async function suggest(req, reply) {
|
|
|
93
94
|
const body = await getTemplate("table", table);
|
|
94
95
|
const tableName = hookBody?.table || body?.table || table;
|
|
95
96
|
if (query.limit && query.limit < 0) {
|
|
96
|
-
|
|
97
|
-
error: "param limit is invalid",
|
|
98
|
-
code: 400,
|
|
99
|
-
});
|
|
97
|
+
throw BadRequestError("param limit is invalid");
|
|
100
98
|
}
|
|
101
99
|
const selectName = query.sel ||
|
|
102
100
|
(tableName && column && body
|
|
@@ -122,30 +120,23 @@ export default async function suggest(req, reply) {
|
|
|
122
120
|
parent,
|
|
123
121
|
});
|
|
124
122
|
if (meta?.minLength && query.key && query.key.length < meta?.minLength) {
|
|
125
|
-
|
|
126
|
-
error: `min length: ${meta.minLength}`,
|
|
127
|
-
code: 400,
|
|
128
|
-
});
|
|
123
|
+
throw BadRequestError(`min length: ${meta.minLength}`);
|
|
129
124
|
}
|
|
130
125
|
const limit = meta?.limit || defaultLimit;
|
|
131
126
|
const pg = meta?.db ? await getPGAsync(meta.db) : pg1;
|
|
132
127
|
if (!pg || !pg.pk || !pg.pgType) {
|
|
133
|
-
|
|
134
|
-
error: "pg connection not established",
|
|
135
|
-
code: 400,
|
|
136
|
-
});
|
|
128
|
+
throw Error("empty pg");
|
|
137
129
|
}
|
|
138
130
|
if (table && !pg?.pk?.[tableName]) {
|
|
139
|
-
|
|
140
|
-
error: "param name is invalid: 1",
|
|
141
|
-
code: 400,
|
|
142
|
-
});
|
|
131
|
+
throw BadRequestError("param name is invalid: 1");
|
|
143
132
|
}
|
|
144
133
|
const columns = hookBody?.columns || body?.columns;
|
|
145
|
-
const metaColumns =
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
134
|
+
const metaColumns = tableName
|
|
135
|
+
? await getMeta({
|
|
136
|
+
pg,
|
|
137
|
+
table: tableName,
|
|
138
|
+
}).then((el) => el?.columns || [])
|
|
139
|
+
: [];
|
|
149
140
|
const { name: columnName } = (columns || []).find((col) => col?.name === column) ||
|
|
150
141
|
(metaColumns || []).find((col) => col?.name === column) ||
|
|
151
142
|
{};
|
|
@@ -154,16 +145,10 @@ export default async function suggest(req, reply) {
|
|
|
154
145
|
// hookBody?.filters ||
|
|
155
146
|
// (body ? await getFilter({ pg, table }).then((el) => el.list) : null);
|
|
156
147
|
if (table && (!column || !columnName)) {
|
|
157
|
-
|
|
158
|
-
error: "param name is invalid: 2",
|
|
159
|
-
code: 400,
|
|
160
|
-
});
|
|
148
|
+
throw BadRequestError("param name is invalid: 2");
|
|
161
149
|
}
|
|
162
150
|
if (!meta) {
|
|
163
|
-
|
|
164
|
-
error: "Not found query select",
|
|
165
|
-
code: 404,
|
|
166
|
-
});
|
|
151
|
+
throw NotFoundError("Not found query select");
|
|
167
152
|
}
|
|
168
153
|
if (query.meta) {
|
|
169
154
|
return meta;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { FastifyReply } from "fastify";
|
|
2
1
|
import type { ExtendedPG } from "../../../types/core.js";
|
|
3
2
|
export default function tableInfo({ pg, params, query, user, }: {
|
|
4
3
|
pg: ExtendedPG;
|
|
@@ -11,5 +10,5 @@ export default function tableInfo({ pg, params, query, user, }: {
|
|
|
11
10
|
sql?: any;
|
|
12
11
|
};
|
|
13
12
|
user?: Record<string, any>;
|
|
14
|
-
}
|
|
13
|
+
}): Promise<{}>;
|
|
15
14
|
//# sourceMappingURL=tableInfo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableInfo.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/tableInfo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tableInfo.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/tableInfo.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOzD,wBAA8B,SAAS,CAAC,EACtC,EAAqB,EACrB,MAAM,EACN,KAAU,EACV,IAAS,GACV,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,KAAK,EAAE;QAAE,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B,eAgLA"}
|
|
@@ -1,31 +1,32 @@
|
|
|
1
1
|
import { getTemplate, getMeta, metaFormat, applyHook, handlebars, pgClients, } from "../../../../utils.js";
|
|
2
|
-
|
|
2
|
+
import { BadRequestError, NotFoundError, UnauthorizedError, } from "../../../../errors.js";
|
|
3
|
+
export default async function tableInfo({ pg = pgClients.client, params, query = {}, user = {}, }) {
|
|
3
4
|
const time = Date.now();
|
|
4
5
|
const { uid } = user;
|
|
5
6
|
if (!uid) {
|
|
6
|
-
|
|
7
|
+
throw UnauthorizedError("unauthorized");
|
|
7
8
|
}
|
|
8
9
|
if (!params?.id || !params?.table) {
|
|
9
|
-
|
|
10
|
+
throw BadRequestError("not enough params");
|
|
10
11
|
}
|
|
11
12
|
const loadTable = await getTemplate("table", params.table);
|
|
12
13
|
if (!loadTable) {
|
|
13
|
-
|
|
14
|
+
throw NotFoundError("template not found");
|
|
14
15
|
}
|
|
15
16
|
const { table, columns = [], sql, cardSql, filters, form, meta, public: ispublic, } = loadTable;
|
|
16
17
|
if (!meta?.info) {
|
|
17
|
-
|
|
18
|
+
throw BadRequestError("empty meta info");
|
|
18
19
|
}
|
|
19
20
|
const tableMeta = await getMeta({ pg, table });
|
|
20
21
|
if (tableMeta?.view) {
|
|
21
22
|
if (!loadTable?.key) {
|
|
22
|
-
|
|
23
|
+
throw NotFoundError(`key not found: ${table}`);
|
|
23
24
|
}
|
|
24
25
|
Object.assign(tableMeta, { pk: loadTable?.key });
|
|
25
26
|
}
|
|
26
27
|
const { pk } = tableMeta || {};
|
|
27
28
|
if (!pk) {
|
|
28
|
-
|
|
29
|
+
throw NotFoundError(`table not found: ${table}`);
|
|
29
30
|
}
|
|
30
31
|
const sqlTable = sql
|
|
31
32
|
?.filter?.((el) => !el?.disabled && el?.sql?.replace)
|
|
@@ -56,7 +57,7 @@ export default async function tableInfo({ pg = pgClients.client, params, query =
|
|
|
56
57
|
.filter((el) => columnList.includes(el))
|
|
57
58
|
.map((el) => `"${el}"`);
|
|
58
59
|
if (!metaInfoCols.length) {
|
|
59
|
-
|
|
60
|
+
throw BadRequestError("invalid meta info: columns not found");
|
|
60
61
|
}
|
|
61
62
|
const q = `select ${pk ? `"${pk}" as id,` : ""}
|
|
62
63
|
${metaInfoCols.join(",")}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenInfo.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/tokenInfo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tokenInfo.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/tokenInfo.ts"],"names":[],"mappings":"AAGA,wBAA8B,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBAW3D"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { ForbiddenError } from "../../../../errors.js";
|
|
1
2
|
import { getOpt, getToken } from "../../../../utils.js";
|
|
2
3
|
export default async function tokenInfo(req, reply) {
|
|
3
4
|
const { params = {}, user } = req;
|
|
4
5
|
if (user.user_type !== "admin") {
|
|
5
|
-
|
|
6
|
+
throw ForbiddenError("access restricted");
|
|
6
7
|
}
|
|
7
8
|
const tokenData = (await getToken({ uid: user.uid, token: params.token })) ||
|
|
8
9
|
(await getOpt(params.token, user.uid));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/functions/getData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"getData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/functions/getData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAwFzD,wBAA8B,OAAO,CACnC,EACE,EAAqB,EACrB,MAAM,EACN,KAAK,EACL,EAAE,EACF,OAAY,EACZ,KAAU,EACV,IAAS,EACT,YAAY,EACZ,YAAY,EACZ,KAAY,EACZ,UAAU,EACV,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,YAAY,EACrB,QAAgB,GACjB,EAAE;IACD,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,EACD,MAAM,CAAC,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,GAAG,gBAq3Bb"}
|
|
@@ -19,6 +19,7 @@ import extraDataGet from "../../../plugins/extra/extraDataGet.js";
|
|
|
19
19
|
import locales from "../controllers/utils/locales.js";
|
|
20
20
|
import conditions from "../controllers/utils/conditions.js";
|
|
21
21
|
import { resources } from "../../../plugins/access/funcs/getResources.js";
|
|
22
|
+
import { BadRequestError, ForbiddenError, NotFoundError, UnauthorizedError, } from "../../../../errors.js";
|
|
22
23
|
const components = {
|
|
23
24
|
"vs-widget-file": "select 'vs-widget-file' as component, count(*) from crm.files where entity_id=$1 and file_status<>3",
|
|
24
25
|
"vs-widget-comments": "select 'vs-widget-comments' as component, count(*) from crm.communications where entity_id=$1",
|
|
@@ -62,9 +63,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
62
63
|
const checkQuery = (item) => user?.user_type === "superadmin" ? !item.includes("{{uid}}") : true;
|
|
63
64
|
const paramsTable = params?.table || table;
|
|
64
65
|
if (!paramsTable) {
|
|
65
|
-
|
|
66
|
-
.status(400)
|
|
67
|
-
.send({ error: "not enough params: table", code: 400 });
|
|
66
|
+
throw BadRequestError("not enough params: table");
|
|
68
67
|
}
|
|
69
68
|
const hookData = (await applyHook("preData", {
|
|
70
69
|
pg,
|
|
@@ -72,11 +71,12 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
72
71
|
id: params?.id || id,
|
|
73
72
|
user,
|
|
74
73
|
}));
|
|
74
|
+
// hooks should throw custom errors instead, this is temp solution to avoid breaking changes in hooks
|
|
75
75
|
if (hookData?.message && hookData?.status) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return
|
|
76
|
+
if (hookData.status >= 400) {
|
|
77
|
+
throw new Error(hookData.message);
|
|
78
|
+
}
|
|
79
|
+
return hookData.message;
|
|
80
80
|
}
|
|
81
81
|
/* from tableData START */
|
|
82
82
|
const tokenData1 = await getOpt(paramsTable, uid);
|
|
@@ -126,15 +126,18 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
126
126
|
if (query?.sql === "0")
|
|
127
127
|
return loadTable;
|
|
128
128
|
if (!pg) {
|
|
129
|
-
|
|
129
|
+
throw Error("empty pg");
|
|
130
130
|
}
|
|
131
131
|
const pkey = pg.pk?.[resources[paramsTable] || paramsTable] ||
|
|
132
132
|
pg.pk?.[resources[paramsTable] || paramsTable.replace(/"/g, "")] ||
|
|
133
|
-
(await getMeta({
|
|
133
|
+
(await getMeta({
|
|
134
|
+
pg,
|
|
135
|
+
table: resources[paramsTable] || loadTable?.table || paramsTable,
|
|
136
|
+
}))?.pk;
|
|
134
137
|
if (!loadTable &&
|
|
135
138
|
!(tokenData?.table && pg.pk?.[tokenData?.table]) &&
|
|
136
139
|
!(called && pkey)) {
|
|
137
|
-
|
|
140
|
+
throw NotFoundError("template not found");
|
|
138
141
|
}
|
|
139
142
|
const objectId = tokenData?.id || hookData?.id || params?.id || id;
|
|
140
143
|
const { actions = [], query: accessQuery, message: accessMessage, } = actionsParam
|
|
@@ -151,10 +154,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
151
154
|
method,
|
|
152
155
|
}, pg)) || {};
|
|
153
156
|
if (accessMessage) {
|
|
154
|
-
|
|
155
|
-
error: accessMessage,
|
|
156
|
-
code: 403,
|
|
157
|
-
});
|
|
157
|
+
throw ForbiddenError(accessMessage);
|
|
158
158
|
}
|
|
159
159
|
// const body = loadTable || hookData || tokenData;
|
|
160
160
|
const { table: table1, columns = [], sql, cardSql, form, meta, sqlColumns, editable = false, } = loadTable || hookData || tokenData || params || { table };
|
|
@@ -168,10 +168,10 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
168
168
|
!called &&
|
|
169
169
|
!accessQueryParam &&
|
|
170
170
|
!actionsParam) {
|
|
171
|
-
|
|
171
|
+
throw UnauthorizedError("unauthorized");
|
|
172
172
|
}
|
|
173
173
|
if (!ispublic && !actions.includes("view") && !config?.local && !called) {
|
|
174
|
-
|
|
174
|
+
throw ForbiddenError("access restricted");
|
|
175
175
|
}
|
|
176
176
|
const { list: filters = [] } = objectId
|
|
177
177
|
? {}
|
|
@@ -185,9 +185,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
185
185
|
timeArr.push(Date.now());
|
|
186
186
|
if (tableMeta?.view) {
|
|
187
187
|
if (!loadTable?.key && !tokenData?.key) {
|
|
188
|
-
|
|
189
|
-
.status(404)
|
|
190
|
-
.send({ error: `key not found: ${table1}`, code: 404 });
|
|
188
|
+
throw NotFoundError(`key not found: ${table1}`);
|
|
191
189
|
}
|
|
192
190
|
Object.assign(tableMeta, { pk: loadTable?.key || tokenData?.key });
|
|
193
191
|
}
|
|
@@ -204,9 +202,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
204
202
|
Object.assign(col, locales[`${table1 || paramsTable}.${col.name}`] || {});
|
|
205
203
|
});
|
|
206
204
|
if (!pk) {
|
|
207
|
-
|
|
208
|
-
.status(404)
|
|
209
|
-
.send({ error: `table not found: ${table1}`, code: 404 });
|
|
205
|
+
throw NotFoundError(`table not found: ${table1}`);
|
|
210
206
|
}
|
|
211
207
|
const columnList = dbColumns.map((el) => el.name || el).join(",");
|
|
212
208
|
const sqlTable = sql
|
|
@@ -371,9 +367,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
371
367
|
if (!rows.length &&
|
|
372
368
|
headers?.referer?.includes?.("/card/") &&
|
|
373
369
|
headers?.referer?.includes?.(templateName)) {
|
|
374
|
-
|
|
375
|
-
.status(403)
|
|
376
|
-
.send({ error: "access restricted: empty rows", code: 403 });
|
|
370
|
+
throw ForbiddenError("access restricted: empty rows");
|
|
377
371
|
}
|
|
378
372
|
timeArr.push(Date.now());
|
|
379
373
|
if (uid &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/table/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/table/index.ts"],"names":[],"mappings":"AAgCA,iBAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QAiFtC;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -14,12 +14,14 @@ import form from "./controllers/getFormByTable.js";
|
|
|
14
14
|
import loadTemplatePath from "../../plugins/table/funcs/loadTemplatePath.js";
|
|
15
15
|
import { tableDataSchema, tableSchema, searchSchema, suggestSchema, formSchema, filterSchema, cardTabDataSchema, tableDataIdSchema, } from "./schema.js";
|
|
16
16
|
const policy = "L0";
|
|
17
|
+
const tags = ["core", "table"];
|
|
17
18
|
function plugin(app, opt = {}) {
|
|
18
|
-
app.get("/token-info/:token", { config: { role: "admin" } }, tokenInfo);
|
|
19
|
-
app.get("/table-filter/:table", { config: { policy }, schema: filterSchema }, filter);
|
|
20
|
-
app.get("/table-info/:table/:id?", { config: { policy }, schema: tableDataSchema }, tableInfo);
|
|
19
|
+
app.get("/token-info/:token", { config: { tags, role: "admin" } }, tokenInfo);
|
|
20
|
+
app.get("/table-filter/:table", { config: { tags, policy }, schema: filterSchema }, filter);
|
|
21
|
+
app.get("/table-info/:table/:id?", { config: { tags, policy }, schema: tableDataSchema }, tableInfo);
|
|
21
22
|
app.get("/suggest/:data", {
|
|
22
23
|
config: {
|
|
24
|
+
tags,
|
|
23
25
|
policy,
|
|
24
26
|
rateLimit: config.rateLimit
|
|
25
27
|
? {
|
|
@@ -30,15 +32,15 @@ function plugin(app, opt = {}) {
|
|
|
30
32
|
},
|
|
31
33
|
schema: suggestSchema,
|
|
32
34
|
}, suggest);
|
|
33
|
-
app.get("/data/:table/:id?", { config: { policy }, schema: tableSchema }, data);
|
|
34
|
-
app.get("/table-data/:table", { config: { auth: "creds", policy: "L2" }, schema: tableDataSchema }, data);
|
|
35
|
-
app.get("/table-data/:table/:id", { config: { policy }, schema: tableDataIdSchema }, cardData);
|
|
36
|
-
app.get("/data-info/:id?", { config: { policy }, schema: tableSchema }, dataInfo);
|
|
37
|
-
app.get("/card-data/:token", { config: { policy },
|
|
38
|
-
app.get("/card/:table/:id", { config: { policy }, schema: tableSchema }, card);
|
|
39
|
-
app.get("/search", { config: { policy }, schema: searchSchema }, search);
|
|
40
|
-
app.get("/templates", () => loadTemplatePath);
|
|
41
|
-
app.get("/filter/:table", { config: { policy }, schema: filterSchema }, filter);
|
|
42
|
-
app.get("/form/:name/:id?", { config: { auth: "creds", policy: "L2" }, schema: formSchema }, form);
|
|
35
|
+
app.get("/data/:table/:id?", { config: { tags, policy }, schema: tableSchema }, data);
|
|
36
|
+
app.get("/table-data/:table", { config: { tags, auth: "creds", policy: "L2" }, schema: tableDataSchema }, data);
|
|
37
|
+
app.get("/table-data/:table/:id", { config: { tags, policy }, schema: tableDataIdSchema }, cardData);
|
|
38
|
+
app.get("/data-info/:id?", { config: { tags, policy }, schema: tableSchema }, dataInfo);
|
|
39
|
+
app.get("/card-data/:token", { config: { tags, policy }, schema: cardTabDataSchema }, cardTabData);
|
|
40
|
+
app.get("/card/:table/:id", { config: { tags, policy }, schema: tableSchema }, card);
|
|
41
|
+
app.get("/search", { config: { tags, policy }, schema: searchSchema }, search);
|
|
42
|
+
app.get("/templates", { config: { tags } }, () => loadTemplatePath);
|
|
43
|
+
app.get("/filter/:table", { config: { tags, policy }, schema: filterSchema }, filter);
|
|
44
|
+
app.get("/form/:name/:id?", { config: { tags, auth: "creds", policy: "L2" }, schema: formSchema }, form);
|
|
43
45
|
}
|
|
44
46
|
export default plugin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTemplate.d.ts","sourceRoot":"","sources":["../../../../../server/routes/templates/controllers/getTemplate.ts"],"names":[],"mappings":"AAyCA,wBAA8B,cAAc,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"getTemplate.d.ts","sourceRoot":"","sources":["../../../../../server/routes/templates/controllers/getTemplate.ts"],"names":[],"mappings":"AAyCA,wBAA8B,cAAc,CAAC,GAAG,EAAE,GAAG,gBAsDpD"}
|
|
@@ -32,17 +32,21 @@ function formatSchema(schema, user, opt) {
|
|
|
32
32
|
.forEach(parseDataTables);
|
|
33
33
|
}
|
|
34
34
|
export default async function getTemplateApi(req) {
|
|
35
|
-
const { user } = req || {};
|
|
36
|
-
const {
|
|
37
|
-
const { type, name } = params;
|
|
35
|
+
const { params, user } = req || {};
|
|
36
|
+
const { type, name } = params || {};
|
|
38
37
|
const tokenData = (await getToken({ token: name, uid: user?.uid, json: 1 })) || {};
|
|
39
38
|
const hookData = (await applyHook("preTemplate", {
|
|
40
39
|
name: tokenData.name || name,
|
|
41
40
|
type,
|
|
42
41
|
user,
|
|
43
42
|
}));
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
// hooks should throw custom errors instead, this is temp solution to avoid breaking changes in hooks
|
|
44
|
+
if (hookData?.message && hookData?.status) {
|
|
45
|
+
if (hookData.status >= 400) {
|
|
46
|
+
throw new Error(hookData.message);
|
|
47
|
+
}
|
|
48
|
+
return hookData.message;
|
|
49
|
+
}
|
|
46
50
|
const data = await getTemplate(type, hookData?.name || tokenData.form || name);
|
|
47
51
|
if (data && tokenData.obj) {
|
|
48
52
|
const obj = tokenData.obj.split("#").reduce((p, el) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/templates/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/templates/index.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QAMpD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import getTemplateApi from "./controllers/getTemplate.js";
|
|
2
2
|
import { getTemplateSchema } from "./schema.js";
|
|
3
3
|
const policy = "L0";
|
|
4
|
+
const tags = ["core", "templates"];
|
|
4
5
|
export default function route(app, opt = {}) {
|
|
5
|
-
app.get("/template/:type/:name", { config: { policy }, schema: getTemplateSchema }, getTemplateApi);
|
|
6
|
+
app.get("/template/:type/:name", { config: { tags, policy }, schema: getTemplateSchema }, getTemplateApi);
|
|
6
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/upload/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/upload/index.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE,GAAG,QAmGtC"}
|