From 3146ea951d64b929e8f647e263c0a77a16fee514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacio=20G=C3=B3mez-Rico=20Junquero?= <26761806H@iislafe.es> Date: Tue, 18 Jun 2024 15:16:38 +0200 Subject: [PATCH 1/3] Routes constructed considering the BASE_URL --- .../src/comps/comps/remoteComp/loaders.tsx | 3 +- .../lowcoder/src/constants/routesURL.ts | 56 +++++++++---------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/client/packages/lowcoder/src/comps/comps/remoteComp/loaders.tsx b/client/packages/lowcoder/src/comps/comps/remoteComp/loaders.tsx index 1f15cff05e..cd785a5131 100644 --- a/client/packages/lowcoder/src/comps/comps/remoteComp/loaders.tsx +++ b/client/packages/lowcoder/src/comps/comps/remoteComp/loaders.tsx @@ -1,3 +1,4 @@ +import { BASE_URL } from "constants/routesURL"; import { NPM_PLUGIN_ASSETS_BASE_URL } from "constants/npmPlugins"; import { trans } from "i18n"; import { CompConstructor } from "lowcoder-core"; @@ -38,7 +39,7 @@ async function bundleLoader( remoteInfo: RemoteCompInfo ): Promise { const { packageName, packageVersion = "latest", compName } = remoteInfo; - const entry = `/${packageName}/${packageVersion}/index.js?v=${REACT_APP_COMMIT_ID}`; + const entry = `${BASE_URL !== "/" ? BASE_URL : ""}/${packageName}/${packageVersion}/index.js?v=${REACT_APP_COMMIT_ID}`; const module = await import( /* @vite-ignore */ /* webpackIgnore: true */ diff --git a/client/packages/lowcoder/src/constants/routesURL.ts b/client/packages/lowcoder/src/constants/routesURL.ts index b57f27ac2b..6758b8a9e5 100644 --- a/client/packages/lowcoder/src/constants/routesURL.ts +++ b/client/packages/lowcoder/src/constants/routesURL.ts @@ -4,38 +4,38 @@ import { UserGuideLocationState } from "pages/tutorials/tutorialsConstant"; import { DatasourceType } from "@lowcoder-ee/constants/queryConstants"; export const BASE_URL = "/"; -export const USER_AUTH_URL = "/user/auth"; -export const USER_PROFILE_URL = "/user/profile"; -export const NEWS_URL = "/news"; -export const ORG_HOME_URL = "/org/home"; -export const COMPONENT_DOC_URL = "/components"; -export const SETTING = "/setting"; -export const PERMISSION_SETTING = "/setting/permission"; -export const ORGANIZATION_SETTING = "/setting/organization"; -export const THEME_SETTING = "/setting/theme"; -export const PLUGINS_SETTING = "/setting/plugins"; -export const THEME_DETAIL = "/setting/theme/detail"; +export const USER_AUTH_URL = `${BASE_URL}/user/auth`; +export const USER_PROFILE_URL = `${BASE_URL}/user/profile`; +export const NEWS_URL = `${BASE_URL}/news`; +export const ORG_HOME_URL = `${BASE_URL}/org/home`; +export const COMPONENT_DOC_URL = `${BASE_URL}/components`; +export const SETTING = `${BASE_URL}/setting`; +export const PERMISSION_SETTING = `${BASE_URL}/setting/permission`; +export const ORGANIZATION_SETTING = `${BASE_URL}/setting/organization`; +export const THEME_SETTING = `${BASE_URL}/setting/theme`; +export const PLUGINS_SETTING = `${BASE_URL}/setting/plugins`; +export const THEME_DETAIL = `${BASE_URL}/setting/theme/detail`; -export const OAUTH_PROVIDER_SETTING = "/setting/oauth-provider"; -export const OAUTH_PROVIDER_DETAIL = "/setting/oauth-provider/detail"; +export const OAUTH_PROVIDER_SETTING = `${BASE_URL}/setting/oauth-provider`; +export const OAUTH_PROVIDER_DETAIL = `${BASE_URL}/setting/oauth-provider/detail`; export const PERMISSION_SETTING_DETAIL = `${PERMISSION_SETTING}/:groupId`; export const ORGANIZATION_SETTING_DETAIL = `${ORGANIZATION_SETTING}/:orgId`; -export const ALL_APPLICATIONS_URL = "/apps"; -export const ADMIN_APP_URL = "/ee/:applicationId/:viewMode"; +export const ALL_APPLICATIONS_URL = `${BASE_URL}/apps`; +export const ADMIN_APP_URL = `${BASE_URL}/ee/:applicationId/:viewMode`; export const APPLICATION_MARKETPLACE_URL = `https://app.lowcoder.cloud/apps`; -export const MODULE_APPLICATIONS_URL = "/apps/module"; -export const MARKETPLACE_URL = `/marketplace`; -export const DATASOURCE_URL = `/datasource`; +export const MODULE_APPLICATIONS_URL = `${BASE_URL}/apps/module`; +export const MARKETPLACE_URL = `${BASE_URL}/marketplace`; +export const DATASOURCE_URL = `${BASE_URL}/datasource`; export const DATASOURCE_CREATE_URL = `${DATASOURCE_URL}/new/:datasourceType`; export const DATASOURCE_EDIT_URL = `${DATASOURCE_URL}/:datasourceId`; -export const QUERY_LIBRARY_URL = `/query-library`; -export const API_DOCS_URL = `/lowcoder-api`; -export const FOLDER_URL_PREFIX = `/folder`; +export const QUERY_LIBRARY_URL = `${BASE_URL}/query-library`; +export const API_DOCS_URL = `${BASE_URL}/lowcoder-api`; +export const FOLDER_URL_PREFIX = `${BASE_URL}/folder`; export const FOLDER_URL = `${FOLDER_URL_PREFIX}/:folderId`; -export const FOLDERS_URL = `/folders`; -export const TRASH_URL = `/trash`; +export const FOLDERS_URL = `${BASE_URL}/folders`; +export const TRASH_URL =`${BASE_URL}/trash`; export const IMPORT_APP_FROM_TEMPLATE_URL = `${ALL_APPLICATIONS_URL}/template-import/:templateId`; export const APP_EDITOR_URL = `${ALL_APPLICATIONS_URL}/:applicationId/:viewMode/:appPageId?`; @@ -48,11 +48,11 @@ export const QR_CODE_OAUTH_URL = `${USER_AUTH_URL}/oauth/qrcode`; export const OAUTH_REDIRECT = `${USER_AUTH_URL}/oauth/redirect`; export const CAS_AUTH_REDIRECT = `${USER_AUTH_URL}/cas/redirect`; export const LDAP_AUTH_LOGIN_URL = `${USER_AUTH_URL}/ldap/login`; -export const INVITE_LANDING_URL = "/invite/:invitationId"; -export const ORG_AUTH_LOGIN_URL = `/org/:orgId/auth/login`; -export const ORG_AUTH_REGISTER_URL = `/org/:orgId/auth/register`; -export const ORG_AUTH_FORGOT_PASSWORD_URL = `/org/:orgId/auth/forgot-password`; -export const ORG_AUTH_RESET_PASSWORD_URL = `/org/:orgId/auth/lost-password`; +export const INVITE_LANDING_URL = `${BASE_URL}/invite/:invitationId`; +export const ORG_AUTH_LOGIN_URL = `${BASE_URL}/org/:orgId/auth/login`; +export const ORG_AUTH_REGISTER_URL = `${BASE_URL}/org/:orgId/auth/register`; +export const ORG_AUTH_FORGOT_PASSWORD_URL = `${BASE_URL}/org/:orgId/auth/forgot-password`; +export const ORG_AUTH_RESET_PASSWORD_URL = `${BASE_URL}/org/:orgId/auth/lost-password`; export const MARKETPLACE_TYPE_URL = `${MARKETPLACE_URL}/:marketplaceType`; export const APPLICATION_VIEW_URL = (appId: string, viewMode: AppViewMode) => From c7e4915379a2d94170ed6f76c41ae496f8a317ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacio=20G=C3=B3mez-Rico=20Junquero?= <26761806H@iislafe.es> Date: Wed, 19 Jun 2024 09:46:27 +0200 Subject: [PATCH 2/3] APP_ROOT constant added and validated when assigned to BASE_URL in order to avoid possible "//" when building the rest of the routes --- client/packages/lowcoder/src/constants/routesURL.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/packages/lowcoder/src/constants/routesURL.ts b/client/packages/lowcoder/src/constants/routesURL.ts index 6758b8a9e5..f4130ac585 100644 --- a/client/packages/lowcoder/src/constants/routesURL.ts +++ b/client/packages/lowcoder/src/constants/routesURL.ts @@ -3,7 +3,8 @@ import { LocationDescriptor } from "history"; import { UserGuideLocationState } from "pages/tutorials/tutorialsConstant"; import { DatasourceType } from "@lowcoder-ee/constants/queryConstants"; -export const BASE_URL = "/"; +export const APP_ROOT = "/"; +export const BASE_URL = (APP_ROOT === "/")? APP_ROOT : ""; export const USER_AUTH_URL = `${BASE_URL}/user/auth`; export const USER_PROFILE_URL = `${BASE_URL}/user/profile`; export const NEWS_URL = `${BASE_URL}/news`; From 489ab1275cb55039a9c62107eea1224f9b96149c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacio=20G=C3=B3mez-Rico=20Junquero?= <26761806H@iislafe.es> Date: Wed, 19 Jun 2024 09:53:16 +0200 Subject: [PATCH 3/3] Used APP_ROOT instead of BASE_URL as it is used in other parts of the app. Fixxed the conditional assignation of APP_ROOT --- .../lowcoder/src/constants/routesURL.ts | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/client/packages/lowcoder/src/constants/routesURL.ts b/client/packages/lowcoder/src/constants/routesURL.ts index f4130ac585..e90d3f6607 100644 --- a/client/packages/lowcoder/src/constants/routesURL.ts +++ b/client/packages/lowcoder/src/constants/routesURL.ts @@ -3,40 +3,40 @@ import { LocationDescriptor } from "history"; import { UserGuideLocationState } from "pages/tutorials/tutorialsConstant"; import { DatasourceType } from "@lowcoder-ee/constants/queryConstants"; -export const APP_ROOT = "/"; -export const BASE_URL = (APP_ROOT === "/")? APP_ROOT : ""; -export const USER_AUTH_URL = `${BASE_URL}/user/auth`; -export const USER_PROFILE_URL = `${BASE_URL}/user/profile`; -export const NEWS_URL = `${BASE_URL}/news`; -export const ORG_HOME_URL = `${BASE_URL}/org/home`; -export const COMPONENT_DOC_URL = `${BASE_URL}/components`; -export const SETTING = `${BASE_URL}/setting`; -export const PERMISSION_SETTING = `${BASE_URL}/setting/permission`; -export const ORGANIZATION_SETTING = `${BASE_URL}/setting/organization`; -export const THEME_SETTING = `${BASE_URL}/setting/theme`; -export const PLUGINS_SETTING = `${BASE_URL}/setting/plugins`; -export const THEME_DETAIL = `${BASE_URL}/setting/theme/detail`; +export const BASE_URL = "/"; +export const APP_ROOT = (BASE_URL === "/") ? "" : BASE_URL; +export const USER_AUTH_URL = `${APP_ROOT}/user/auth`; +export const USER_PROFILE_URL = `${APP_ROOT}/user/profile`; +export const NEWS_URL = `${APP_ROOT}/news`; +export const ORG_HOME_URL = `${APP_ROOT}/org/home`; +export const COMPONENT_DOC_URL = `${APP_ROOT}/components`; +export const SETTING = `${APP_ROOT}/setting`; +export const PERMISSION_SETTING = `${APP_ROOT}/setting/permission`; +export const ORGANIZATION_SETTING = `${APP_ROOT}/setting/organization`; +export const THEME_SETTING = `${APP_ROOT}/setting/theme`; +export const PLUGINS_SETTING = `${APP_ROOT}/setting/plugins`; +export const THEME_DETAIL = `${APP_ROOT}/setting/theme/detail`; -export const OAUTH_PROVIDER_SETTING = `${BASE_URL}/setting/oauth-provider`; -export const OAUTH_PROVIDER_DETAIL = `${BASE_URL}/setting/oauth-provider/detail`; +export const OAUTH_PROVIDER_SETTING = `${APP_ROOT}/setting/oauth-provider`; +export const OAUTH_PROVIDER_DETAIL = `${APP_ROOT}/setting/oauth-provider/detail`; export const PERMISSION_SETTING_DETAIL = `${PERMISSION_SETTING}/:groupId`; export const ORGANIZATION_SETTING_DETAIL = `${ORGANIZATION_SETTING}/:orgId`; -export const ALL_APPLICATIONS_URL = `${BASE_URL}/apps`; -export const ADMIN_APP_URL = `${BASE_URL}/ee/:applicationId/:viewMode`; +export const ALL_APPLICATIONS_URL = `${APP_ROOT}/apps`; +export const ADMIN_APP_URL = `${APP_ROOT}/ee/:applicationId/:viewMode`; export const APPLICATION_MARKETPLACE_URL = `https://app.lowcoder.cloud/apps`; -export const MODULE_APPLICATIONS_URL = `${BASE_URL}/apps/module`; -export const MARKETPLACE_URL = `${BASE_URL}/marketplace`; -export const DATASOURCE_URL = `${BASE_URL}/datasource`; +export const MODULE_APPLICATIONS_URL = `${APP_ROOT}/apps/module`; +export const MARKETPLACE_URL = `${APP_ROOT}/marketplace`; +export const DATASOURCE_URL = `${APP_ROOT}/datasource`; export const DATASOURCE_CREATE_URL = `${DATASOURCE_URL}/new/:datasourceType`; export const DATASOURCE_EDIT_URL = `${DATASOURCE_URL}/:datasourceId`; -export const QUERY_LIBRARY_URL = `${BASE_URL}/query-library`; -export const API_DOCS_URL = `${BASE_URL}/lowcoder-api`; -export const FOLDER_URL_PREFIX = `${BASE_URL}/folder`; +export const QUERY_LIBRARY_URL = `${APP_ROOT}/query-library`; +export const API_DOCS_URL = `${APP_ROOT}/lowcoder-api`; +export const FOLDER_URL_PREFIX = `${APP_ROOT}/folder`; export const FOLDER_URL = `${FOLDER_URL_PREFIX}/:folderId`; -export const FOLDERS_URL = `${BASE_URL}/folders`; -export const TRASH_URL =`${BASE_URL}/trash`; +export const FOLDERS_URL = `${APP_ROOT}/folders`; +export const TRASH_URL = `${APP_ROOT}/trash`; export const IMPORT_APP_FROM_TEMPLATE_URL = `${ALL_APPLICATIONS_URL}/template-import/:templateId`; export const APP_EDITOR_URL = `${ALL_APPLICATIONS_URL}/:applicationId/:viewMode/:appPageId?`; @@ -49,18 +49,18 @@ export const QR_CODE_OAUTH_URL = `${USER_AUTH_URL}/oauth/qrcode`; export const OAUTH_REDIRECT = `${USER_AUTH_URL}/oauth/redirect`; export const CAS_AUTH_REDIRECT = `${USER_AUTH_URL}/cas/redirect`; export const LDAP_AUTH_LOGIN_URL = `${USER_AUTH_URL}/ldap/login`; -export const INVITE_LANDING_URL = `${BASE_URL}/invite/:invitationId`; -export const ORG_AUTH_LOGIN_URL = `${BASE_URL}/org/:orgId/auth/login`; -export const ORG_AUTH_REGISTER_URL = `${BASE_URL}/org/:orgId/auth/register`; -export const ORG_AUTH_FORGOT_PASSWORD_URL = `${BASE_URL}/org/:orgId/auth/forgot-password`; -export const ORG_AUTH_RESET_PASSWORD_URL = `${BASE_URL}/org/:orgId/auth/lost-password`; +export const INVITE_LANDING_URL = `${APP_ROOT}/invite/:invitationId`; +export const ORG_AUTH_LOGIN_URL = `${APP_ROOT}/org/:orgId/auth/login`; +export const ORG_AUTH_REGISTER_URL = `${APP_ROOT}/org/:orgId/auth/register`; +export const ORG_AUTH_FORGOT_PASSWORD_URL = `${APP_ROOT}/org/:orgId/auth/forgot-password`; +export const ORG_AUTH_RESET_PASSWORD_URL = `${APP_ROOT}/org/:orgId/auth/lost-password`; export const MARKETPLACE_TYPE_URL = `${MARKETPLACE_URL}/:marketplaceType`; export const APPLICATION_VIEW_URL = (appId: string, viewMode: AppViewMode) => `${ALL_APPLICATIONS_URL}/${appId}/${viewMode}`; export const APPLICATION_MARKETPLACE_VIEW_URL = (appId: string, viewMode: AppViewMode) => -`${APPLICATION_MARKETPLACE_URL}/${appId}/${viewMode}`; + `${APPLICATION_MARKETPLACE_URL}/${appId}/${viewMode}`; export const MARKETPLACE_URL_BY_TYPE = (type: MarketplaceType) => `${MARKETPLACE_URL}/${type}`;