diff --git a/app/client/cypress/e2e/Regression/ClientSide/Branding/Branding_spec.js b/app/client/cypress/e2e/Regression/ClientSide/Branding/Branding_spec.js
index fe7929010443..ae4149c48ff8 100644
--- a/app/client/cypress/e2e/Regression/ClientSide/Branding/Branding_spec.js
+++ b/app/client/cypress/e2e/Regression/ClientSide/Branding/Branding_spec.js
@@ -40,17 +40,17 @@ describe("Branding", { tags: ["@tag.Settings"] }, () => {
let favicon;
let shades = {};
- it("1. check if localStorage is populated with tenantConfig values", () => {
+ it("1. check if localStorage is populated with organizationConfig values", () => {
if (CURRENT_REPO === REPO.CE) {
- const tenantConfig = localStorage.getItem("tenantConfig");
+ const organizationConfig = localStorage.getItem("organizationConfig");
- expect(tenantConfig).to.be.null;
+ expect(organizationConfig).to.be.null;
}
if (CURRENT_REPO === REPO.EE) {
- const tenantConfig = localStorage.getItem("tenantConfig");
+ const organizationConfig = localStorage.getItem("organizationConfig");
- expect(tenantConfig).to.not.be.null;
+ expect(organizationConfig).to.not.be.null;
}
});
@@ -123,10 +123,10 @@ describe("Branding", { tags: ["@tag.Settings"] }, () => {
);
});
- it("4. Check if localStorage is populated with tenantConfig values & form cannot be submitted", () => {
+ it("4. Check if localStorage is populated with organizationConfig values & form cannot be submitted", () => {
if (CURRENT_REPO === REPO.CE) {
- const tenantConfig = localStorage.getItem("tenantConfig");
- expect(tenantConfig).to.be.null;
+ const organizationConfig = localStorage.getItem("organizationConfig");
+ expect(organizationConfig).to.be.null;
cy.get(locators.submitButton).should("be.disabled");
}
diff --git a/app/client/src/ce/AppRouter.tsx b/app/client/src/ce/AppRouter.tsx
index 9e78b3b25e53..6d4f72eea78c 100644
--- a/app/client/src/ce/AppRouter.tsx
+++ b/app/client/src/ce/AppRouter.tsx
@@ -52,7 +52,7 @@ import SignupSuccess from "pages/setup/SignupSuccess";
import type { ERROR_CODES } from "ee/constants/ApiConstants";
import TemplatesListLoader from "pages/Templates/loader";
import { getCurrentUser as getCurrentUserSelector } from "selectors/usersSelectors";
-import { getTenantPermissions } from "ee/selectors/tenantSelectors";
+import { getOrganizationPermissions } from "ee/selectors/organizationSelectors";
import useBrandingTheme from "utils/hooks/useBrandingTheme";
import RouteChangeListener from "RouteChangeListener";
import { initCurrentPage } from "../actions/initActions";
@@ -71,7 +71,7 @@ export const loadingIndicator = ;
export function Routes() {
const user = useSelector(getCurrentUserSelector);
- const tenantPermissions = useSelector(getTenantPermissions);
+ const organizationPermissions = useSelector(getOrganizationPermissions);
const isFeatureEnabled = useFeatureFlag(FEATURE_FLAG.license_gac_enabled);
useFeatureFlagOverride();
@@ -102,7 +102,7 @@ export function Routes() {
: getAdminSettingsPath(
isFeatureEnabled,
user?.isSuperUser || false,
- tenantPermissions,
+ organizationPermissions,
)
}
/>
@@ -161,7 +161,7 @@ export default function AppRouter() {
const isLoading = isConsolidatedPageLoading;
- // hide the top loader once the tenant is loaded
+ // hide the top loader once the organization is loaded
useEffect(() => {
if (!isLoading) {
const loader = document.getElementById("loader") as HTMLDivElement;
diff --git a/app/client/src/ce/actions/organizationActions.ts b/app/client/src/ce/actions/organizationActions.ts
new file mode 100644
index 000000000000..e65b80af230f
--- /dev/null
+++ b/app/client/src/ce/actions/organizationActions.ts
@@ -0,0 +1,21 @@
+import { ReduxActionTypes } from "ee/constants/ReduxActionConstants";
+import type { UpdateOrganizationConfigRequest } from "ee/api/OrganizationApi";
+import type { ApiResponse } from "api/ApiResponses";
+
+export const getCurrentOrganization = (
+ isBackgroundRequest = true,
+ organizationConfig?: ApiResponse,
+) => ({
+ type: ReduxActionTypes.FETCH_CURRENT_ORGANIZATION_CONFIG,
+ payload: {
+ isBackgroundRequest,
+ organizationConfig,
+ },
+});
+
+export const updateOrganizationConfig = (
+ payload: UpdateOrganizationConfigRequest,
+) => ({
+ type: ReduxActionTypes.UPDATE_ORGANIZATION_CONFIG,
+ payload,
+});
diff --git a/app/client/src/ce/actions/tenantActions.ts b/app/client/src/ce/actions/tenantActions.ts
deleted file mode 100644
index 6e4668f936dd..000000000000
--- a/app/client/src/ce/actions/tenantActions.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { ReduxActionTypes } from "ee/constants/ReduxActionConstants";
-import type { UpdateTenantConfigRequest } from "ee/api/TenantApi";
-import type { ApiResponse } from "api/ApiResponses";
-
-export const getCurrentTenant = (
- isBackgroundRequest = true,
- tenantConfig?: ApiResponse,
-) => ({
- type: ReduxActionTypes.FETCH_CURRENT_TENANT_CONFIG,
- payload: {
- isBackgroundRequest,
- tenantConfig,
- },
-});
-
-export const updateTenantConfig = (payload: UpdateTenantConfigRequest) => ({
- type: ReduxActionTypes.UPDATE_TENANT_CONFIG,
- payload,
-});
diff --git a/app/client/src/ce/api/OrganizationApi.ts b/app/client/src/ce/api/OrganizationApi.ts
new file mode 100644
index 000000000000..4476731652af
--- /dev/null
+++ b/app/client/src/ce/api/OrganizationApi.ts
@@ -0,0 +1,46 @@
+import type { AxiosPromise, AxiosRequestConfig } from "axios";
+
+import Api from "api/Api";
+import type { ApiResponse } from "api/ApiResponses";
+
+export type FetchCurrentOrganizationConfigResponse = ApiResponse<{
+ userPermissions: string[];
+ organizationConfiguration: Record;
+ new: boolean;
+}>;
+
+export type UpdateOrganizationConfigResponse = ApiResponse<{
+ organizationConfiguration: Record;
+}>;
+
+export interface UpdateOrganizationConfigRequest {
+ organizationConfiguration: Record;
+ needsRefresh?: boolean;
+ isOnlyOrganizationSettings?: boolean;
+ apiConfig?: AxiosRequestConfig;
+}
+
+export class OrganizationApi extends Api {
+ static tenantsUrl = "v1/tenants";
+
+ static async fetchCurrentOrganizationConfig(): Promise<
+ AxiosPromise
+ > {
+ return Api.get(`${OrganizationApi.tenantsUrl}/current`);
+ }
+
+ static async updateOrganizationConfig(
+ request: UpdateOrganizationConfigRequest,
+ ): Promise> {
+ return Api.put(
+ `${OrganizationApi.tenantsUrl}`,
+ request.organizationConfiguration,
+ null,
+ {
+ ...(request.apiConfig || {}),
+ },
+ );
+ }
+}
+
+export default OrganizationApi;
diff --git a/app/client/src/ce/api/TenantApi.ts b/app/client/src/ce/api/TenantApi.ts
deleted file mode 100644
index 81560d029f8e..000000000000
--- a/app/client/src/ce/api/TenantApi.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import type { AxiosPromise, AxiosRequestConfig } from "axios";
-
-import Api from "api/Api";
-import type { ApiResponse } from "api/ApiResponses";
-
-export type FetchCurrentTenantConfigResponse = ApiResponse<{
- userPermissions: string[];
- tenantConfiguration: Record;
- new: boolean;
-}>;
-
-export type UpdateTenantConfigResponse = ApiResponse<{
- tenantConfiguration: Record;
-}>;
-
-export interface UpdateTenantConfigRequest {
- tenantConfiguration: Record;
- needsRefresh?: boolean;
- isOnlyTenantSettings?: boolean;
- apiConfig?: AxiosRequestConfig;
-}
-
-export class TenantApi extends Api {
- static tenantsUrl = "v1/tenants";
-
- static async fetchCurrentTenantConfig(): Promise<
- AxiosPromise
- > {
- return Api.get(`${TenantApi.tenantsUrl}/current`);
- }
-
- static async updateTenantConfig(
- request: UpdateTenantConfigRequest,
- ): Promise> {
- return Api.put(
- `${TenantApi.tenantsUrl}`,
- request.tenantConfiguration,
- null,
- {
- ...(request.apiConfig || {}),
- },
- );
- }
-}
-
-export default TenantApi;
diff --git a/app/client/src/ce/constants/ReduxActionConstants.tsx b/app/client/src/ce/constants/ReduxActionConstants.tsx
index bacbf4ce3d6b..769eebc4977a 100644
--- a/app/client/src/ce/constants/ReduxActionConstants.tsx
+++ b/app/client/src/ce/constants/ReduxActionConstants.tsx
@@ -1197,19 +1197,21 @@ const AppSettingsActionTypes = {
"UPDATE_APP_SETTINGS_PANE_SELECTED_TAB",
};
-const TenantActionTypes = {
- FETCH_CURRENT_TENANT_CONFIG: "FETCH_CURRENT_TENANT_CONFIG",
- FETCH_CURRENT_TENANT_CONFIG_SUCCESS: "FETCH_CURRENT_TENANT_CONFIG_SUCCESS",
- UPDATE_TENANT_CONFIG: "UPDATE_TENANT_CONFIG",
- UPDATE_TENANT_CONFIG_SUCCESS: "UPDATE_TENANT_CONFIG_SUCCESS",
+const OrganizationActionTypes = {
+ FETCH_CURRENT_ORGANIZATION_CONFIG: "FETCH_CURRENT_ORGANIZATION_CONFIG",
+ FETCH_CURRENT_ORGANIZATION_CONFIG_SUCCESS:
+ "FETCH_CURRENT_ORGANIZATION_CONFIG_SUCCESS",
+ UPDATE_ORGANIZATION_CONFIG: "UPDATE_ORGANIZATION_CONFIG",
+ UPDATE_ORGANIZATION_CONFIG_SUCCESS: "UPDATE_ORGANIZATION_CONFIG_SUCCESS",
FETCH_PRODUCT_ALERT_INIT: "FETCH_PRODUCT_ALERT_INIT",
FETCH_PRODUCT_ALERT_SUCCESS: "FETCH_PRODUCT_ALERT_SUCCESS",
UPDATE_PRODUCT_ALERT_CONFIG: "UPDATE_PRODUCT_ALERT_CONFIG",
};
-const TenantActionErrorTypes = {
- FETCH_CURRENT_TENANT_CONFIG_ERROR: "FETCH_CURRENT_TENANT_CONFIG_ERROR",
- UPDATE_TENANT_CONFIG_ERROR: "UPDATE_TENANT_CONFIG_ERROR",
+const OrganizationActionErrorTypes = {
+ FETCH_CURRENT_ORGANIZATION_CONFIG_ERROR:
+ "FETCH_CURRENT_ORGANIZATION_CONFIG_ERROR",
+ UPDATE_ORGANIZATION_CONFIG_ERROR: "UPDATE_ORGANIZATION_CONFIG_ERROR",
FETCH_PRODUCT_ALERT_FAILED: "FETCH_PRODUCT_ALERT_FAILED",
};
@@ -1290,7 +1292,7 @@ export const ReduxActionTypes = {
...SnippingModeActionTypes,
...TableWidgetActionsTypes,
...TemplateActionsTypes,
- ...TenantActionTypes,
+ ...OrganizationActionTypes,
...ThemeActionTypes,
...UserAuthActionTypes,
...UserProfileActionTypes,
@@ -1320,7 +1322,7 @@ export const ReduxActionErrorTypes = {
...PlatformActionErrorTypes,
...PluginActionErrorTypes,
...TemplateActionErrorTypes,
- ...TenantActionErrorTypes,
+ ...OrganizationActionErrorTypes,
...UserAuthActionErrorTypes,
...UserProfileActionErrorTypes,
...WidgetCanvasActionErrorTypes,
@@ -1336,7 +1338,7 @@ export const toastMessageErrorTypes = {
...GitActionErrorTypes,
...ImportExportActionErrorTypes,
...PlatformActionErrorTypes,
- ...TenantActionErrorTypes,
+ ...OrganizationActionErrorTypes,
...UserAuthActionErrorTypes,
...UserProfileActionErrorTypes,
...WorkspaceActionErrorTypes,
diff --git a/app/client/src/ce/constants/tenantConstants.ts b/app/client/src/ce/constants/organizationConstants.ts
similarity index 88%
rename from app/client/src/ce/constants/tenantConstants.ts
rename to app/client/src/ce/constants/organizationConstants.ts
index 8ab31888f464..0168039c00bd 100644
--- a/app/client/src/ce/constants/tenantConstants.ts
+++ b/app/client/src/ce/constants/organizationConstants.ts
@@ -1,4 +1,4 @@
-export const tenantConfigConnection: string[] = [
+export const organizationConfigConnection: string[] = [
"instanceName",
"googleMapsKey",
"emailVerificationEnabled",
diff --git a/app/client/src/ce/pages/AdminSettings/config/authentication.tsx b/app/client/src/ce/pages/AdminSettings/config/authentication.tsx
index 2d46cae39c18..8cb3b1544cde 100644
--- a/app/client/src/ce/pages/AdminSettings/config/authentication.tsx
+++ b/app/client/src/ce/pages/AdminSettings/config/authentication.tsx
@@ -22,7 +22,7 @@ import { useSelector } from "react-redux";
import {
getThirdPartyAuths,
getIsFormLoginEnabled,
-} from "ee/selectors/tenantSelectors";
+} from "ee/selectors/organizationSelectors";
import {
FORM_LOGIN_DESC,
GITHUB_AUTH_DESC,
diff --git a/app/client/src/ce/pages/AdminSettings/config/general.tsx b/app/client/src/ce/pages/AdminSettings/config/general.tsx
index ce70177f71f5..ae0ba589e46d 100644
--- a/app/client/src/ce/pages/AdminSettings/config/general.tsx
+++ b/app/client/src/ce/pages/AdminSettings/config/general.tsx
@@ -110,7 +110,7 @@ export const APPSMITH_IS_ATOMIC_PUSH_ALLOWED: Setting = {
category: SettingCategories.GENERAL,
controlType: SettingTypes.CHECKBOX,
label: "Allow atomic pushes",
- text: "Git operations on this tenant should attempt to perform pushes atomically",
+ text: "Git operations on this organization should attempt to perform pushes atomically",
};
export const APPSMITH_ALLOWED_FRAME_ANCESTORS_SETTING: Setting = {
diff --git a/app/client/src/ce/pages/Applications/CreateNewAppsOption.test.tsx b/app/client/src/ce/pages/Applications/CreateNewAppsOption.test.tsx
index 06940dc36fcc..b80fdc7c7bc2 100644
--- a/app/client/src/ce/pages/Applications/CreateNewAppsOption.test.tsx
+++ b/app/client/src/ce/pages/Applications/CreateNewAppsOption.test.tsx
@@ -15,8 +15,8 @@ jest.mock("selectors/gitModSelectors", () => ({
const defaultStoreState = {
...unitTestBaseMockStore,
- tenant: {
- tenantConfiguration: {},
+ organization: {
+ organizationConfiguration: {},
},
entities: {
...unitTestBaseMockStore.entities,
diff --git a/app/client/src/ce/pages/Applications/CreateNewAppsOption.tsx b/app/client/src/ce/pages/Applications/CreateNewAppsOption.tsx
index 465c87898aca..c306a5396e31 100644
--- a/app/client/src/ce/pages/Applications/CreateNewAppsOption.tsx
+++ b/app/client/src/ce/pages/Applications/CreateNewAppsOption.tsx
@@ -27,7 +27,7 @@ import { fetchMockDatasources } from "actions/datasourceActions";
import DatasourceForm from "pages/Editor/SaaSEditor/DatasourceForm";
import type { Datasource } from "entities/Datasource";
import { fetchingEnvironmentConfigs } from "ee/actions/environmentAction";
-import { shouldShowLicenseBanner } from "ee/selectors/tenantSelectors";
+import { shouldShowLicenseBanner } from "ee/selectors/organizationSelectors";
import { isAirgapped } from "ee/utils/airgapHelpers";
const SectionWrapper = styled.div<{ isBannerVisible: boolean }>`
diff --git a/app/client/src/ce/pages/Applications/index.tsx b/app/client/src/ce/pages/Applications/index.tsx
index 393c3530e9bb..f04d3e39e388 100644
--- a/app/client/src/ce/pages/Applications/index.tsx
+++ b/app/client/src/ce/pages/Applications/index.tsx
@@ -97,9 +97,9 @@ import {
getIsFetchingApplications,
} from "ee/selectors/selectedWorkspaceSelectors";
import {
- getTenantPermissions,
+ getOrganizationPermissions,
shouldShowLicenseBanner,
-} from "ee/selectors/tenantSelectors";
+} from "ee/selectors/organizationSelectors";
import { getWorkflowsList } from "ee/selectors/workflowSelectors";
import {
getFetchedWorkspaces,
@@ -301,12 +301,12 @@ export function LeftPaneSection(props: {
}) {
const dispatch = useDispatch();
const isFeatureEnabled = useFeatureFlag(FEATURE_FLAG.license_gac_enabled);
- const tenantPermissions = useSelector(getTenantPermissions);
+ const organizationPermissions = useSelector(getOrganizationPermissions);
const fetchedWorkspaces = useSelector(getFetchedWorkspaces);
const canCreateWorkspace = getHasCreateWorkspacePermission(
isFeatureEnabled,
- tenantPermissions,
+ organizationPermissions,
);
const createNewWorkspace = async () => {
diff --git a/app/client/src/ce/reducers/index.tsx b/app/client/src/ce/reducers/index.tsx
index 522215056c91..e7537b9e557a 100644
--- a/app/client/src/ce/reducers/index.tsx
+++ b/app/client/src/ce/reducers/index.tsx
@@ -54,8 +54,8 @@ import SettingsReducer from "ee/reducers/settingsReducer";
import type { TriggerValuesEvaluationState } from "reducers/evaluationReducers/triggerReducer";
import type { CanvasWidgetStructure } from "WidgetProvider/constants";
import type { AppSettingsPaneReduxState } from "reducers/uiReducers/appSettingsPaneReducer";
-import type { TenantReduxState } from "ee/reducers/tenantReducer";
-import tenantReducer from "ee/reducers/tenantReducer";
+import type { OrganizationReduxState } from "ee/reducers/organizationReducer";
+import organizationReducer from "ee/reducers/organizationReducer";
import type { FocusHistoryState } from "reducers/uiReducers/focusHistoryReducer";
import type { EditorContextState } from "ee/reducers/uiReducers/editorContextReducer";
import type { LibraryState } from "reducers/uiReducers/libraryReducer";
@@ -90,7 +90,7 @@ export const reducerObject = {
evaluations: evaluationsReducer,
form: formReducer,
settings: SettingsReducer,
- tenant: tenantReducer,
+ organization: organizationReducer,
linting: lintErrorReducer,
git: gitReducer,
};
@@ -183,7 +183,7 @@ export interface AppState {
settings: SettingsReduxState;
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- tenant: TenantReduxState;
+ organization: OrganizationReduxState;
git: {
global: GitGlobalReduxState;
artifacts: GitArtifactRootReduxState;
diff --git a/app/client/src/ce/reducers/tenantReducer.ts b/app/client/src/ce/reducers/organizationReducer.ts
similarity index 68%
rename from app/client/src/ce/reducers/tenantReducer.ts
rename to app/client/src/ce/reducers/organizationReducer.ts
index d0abcdaaa06b..c53179aec271 100644
--- a/app/client/src/ce/reducers/tenantReducer.ts
+++ b/app/client/src/ce/reducers/organizationReducer.ts
@@ -11,9 +11,9 @@ import {
} from "utils/BrandingUtils";
import { createReducer } from "utils/ReducerUtils";
-export interface TenantReduxState {
+export interface OrganizationReduxState {
userPermissions: string[];
- tenantConfiguration: Record;
+ organizationConfiguration: Record;
new: boolean;
isLoading: boolean;
instanceId: string;
@@ -29,9 +29,9 @@ export const defaultBrandingConfig = {
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
-export const initialState: TenantReduxState = {
+export const initialState: OrganizationReduxState = {
userPermissions: [],
- tenantConfiguration: {
+ organizationConfiguration: {
...defaultBrandingConfig,
},
new: false,
@@ -40,65 +40,65 @@ export const initialState: TenantReduxState = {
};
export const handlers = {
- [ReduxActionTypes.FETCH_CURRENT_TENANT_CONFIG]: (
+ [ReduxActionTypes.FETCH_CURRENT_ORGANIZATION_CONFIG]: (
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- state: TenantReduxState,
+ state: OrganizationReduxState,
action: ReduxAction<{ isBackgroundRequest: boolean }>,
) => ({
...state,
isLoading: !action.payload.isBackgroundRequest,
}),
- [ReduxActionTypes.FETCH_CURRENT_TENANT_CONFIG_SUCCESS]: (
+ [ReduxActionTypes.FETCH_CURRENT_ORGANIZATION_CONFIG_SUCCESS]: (
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- state: TenantReduxState,
+ state: OrganizationReduxState,
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- action: ReduxAction>,
+ action: ReduxAction>,
) => ({
...state,
userPermissions: action.payload.userPermissions || [],
- tenantConfiguration: {
+ organizationConfiguration: {
...defaultBrandingConfig,
- ...state.tenantConfiguration,
- ...action.payload.tenantConfiguration,
+ ...state.organizationConfiguration,
+ ...action.payload.organizationConfiguration,
brandColors: {
...defaultBrandingConfig.brandColors,
- ...action.payload.tenantConfiguration.brandColors,
+ ...action.payload.organizationConfiguration.brandColors,
},
},
isLoading: false,
instanceId: action.payload.instanceId,
}),
- [ReduxActionErrorTypes.FETCH_CURRENT_TENANT_CONFIG_ERROR]: (
+ [ReduxActionErrorTypes.FETCH_CURRENT_ORGANIZATION_CONFIG_ERROR]: (
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- state: TenantReduxState,
+ state: OrganizationReduxState,
) => ({
...state,
isLoading: false,
}),
- [ReduxActionTypes.UPDATE_TENANT_CONFIG_SUCCESS]: (
+ [ReduxActionTypes.UPDATE_ORGANIZATION_CONFIG_SUCCESS]: (
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- state: TenantReduxState,
+ state: OrganizationReduxState,
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- action: ReduxAction>,
+ action: ReduxAction>,
) => ({
...state,
...action.payload,
- tenantConfiguration: {
- ...state.tenantConfiguration,
- ...action.payload.tenantConfiguration,
+ organizationConfiguration: {
+ ...state.organizationConfiguration,
+ ...action.payload.organizationConfiguration,
},
isLoading: false,
}),
- [ReduxActionErrorTypes.UPDATE_TENANT_CONFIG_ERROR]: (
+ [ReduxActionErrorTypes.UPDATE_ORGANIZATION_CONFIG_ERROR]: (
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- state: TenantReduxState,
+ state: OrganizationReduxState,
) => ({
...state,
isLoading: false,
diff --git a/app/client/src/ce/reducers/settingsReducer.ts b/app/client/src/ce/reducers/settingsReducer.ts
index b9354d99c8c5..db3164de752e 100644
--- a/app/client/src/ce/reducers/settingsReducer.ts
+++ b/app/client/src/ce/reducers/settingsReducer.ts
@@ -4,8 +4,8 @@ import {
ReduxActionTypes,
} from "ee/constants/ReduxActionConstants";
import { createReducer } from "utils/ReducerUtils";
-import type { TenantReduxState } from "ee/reducers/tenantReducer";
-import { tenantConfigConnection } from "ee/constants/tenantConstants";
+import type { OrganizationReduxState } from "ee/reducers/organizationReducer";
+import { organizationConfigConnection } from "ee/constants/organizationConstants";
export const initialState: SettingsReduxState = {
isLoading: true,
@@ -43,21 +43,21 @@ export const handlers = {
...action.payload,
},
}),
- [ReduxActionTypes.FETCH_CURRENT_TENANT_CONFIG_SUCCESS]: (
+ [ReduxActionTypes.FETCH_CURRENT_ORGANIZATION_CONFIG_SUCCESS]: (
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- state: SettingsReduxState & TenantReduxState,
+ state: SettingsReduxState & OrganizationReduxState,
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- action: ReduxAction>,
+ action: ReduxAction>,
) => {
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const configs: any = {};
- tenantConfigConnection.forEach((key: string) => {
- if (action.payload?.tenantConfiguration?.hasOwnProperty(key)) {
- configs[key] = action.payload?.tenantConfiguration?.[key];
+ organizationConfigConnection.forEach((key: string) => {
+ if (action.payload?.organizationConfiguration?.hasOwnProperty(key)) {
+ configs[key] = action.payload?.organizationConfiguration?.[key];
}
});
@@ -70,21 +70,21 @@ export const handlers = {
},
};
},
- [ReduxActionTypes.UPDATE_TENANT_CONFIG_SUCCESS]: (
+ [ReduxActionTypes.UPDATE_ORGANIZATION_CONFIG_SUCCESS]: (
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- state: SettingsReduxState & TenantReduxState,
+ state: SettingsReduxState & OrganizationReduxState,
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- action: ReduxAction>,
+ action: ReduxAction>,
) => {
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const configs: any = {};
- tenantConfigConnection.forEach((key: string) => {
- if (action.payload?.tenantConfiguration?.hasOwnProperty(key)) {
- configs[key] = action.payload?.tenantConfiguration?.[key];
+ organizationConfigConnection.forEach((key: string) => {
+ if (action.payload?.organizationConfiguration?.hasOwnProperty(key)) {
+ configs[key] = action.payload?.organizationConfiguration?.[key];
}
});
diff --git a/app/client/src/ce/sagas/PageSagas.tsx b/app/client/src/ce/sagas/PageSagas.tsx
index 2b6323759d82..53481cfcc892 100644
--- a/app/client/src/ce/sagas/PageSagas.tsx
+++ b/app/client/src/ce/sagas/PageSagas.tsx
@@ -129,7 +129,7 @@ import { SelectionRequestType } from "sagas/WidgetSelectUtils";
import { toast } from "@appsmith/ads";
import type { MainCanvasReduxState } from "reducers/uiReducers/mainCanvasReducer";
import { UserCancelledActionExecutionError } from "sagas/ActionExecution/errorUtils";
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import { MAIN_CONTAINER_WIDGET_ID } from "constants/WidgetConstants";
import type { WidgetProps } from "widgets/BaseWidget";
import { nestDSL, flattenDSL, LATEST_DSL_VERSION } from "@shared/dsl";
diff --git a/app/client/src/ce/sagas/SuperUserSagas.tsx b/app/client/src/ce/sagas/SuperUserSagas.tsx
index 9a9f444bd365..88131c767280 100644
--- a/app/client/src/ce/sagas/SuperUserSagas.tsx
+++ b/app/client/src/ce/sagas/SuperUserSagas.tsx
@@ -28,9 +28,9 @@ import {
MIGRATION_STATUS,
RESTART_POLL_INTERVAL,
RESTART_POLL_TIMEOUT,
-} from "ee/constants/tenantConstants";
-import type { FetchCurrentTenantConfigResponse } from "ee/api/TenantApi";
-import TenantApi from "ee/api/TenantApi";
+} from "ee/constants/organizationConstants";
+import type { FetchCurrentOrganizationConfigResponse } from "ee/api/OrganizationApi";
+import OrganizationApi from "ee/api/OrganizationApi";
export function* FetchAdminSettingsSaga() {
const response: ApiResponse = yield call(UserApi.fetchAdminSettings);
@@ -153,13 +153,13 @@ export function* RestryRestartServerPoll() {
pollCount++;
yield delay(RESTART_POLL_INTERVAL);
try {
- const response: FetchCurrentTenantConfigResponse = yield call(
- TenantApi.fetchCurrentTenantConfig,
+ const response: FetchCurrentOrganizationConfigResponse = yield call(
+ OrganizationApi.fetchCurrentOrganizationConfig,
);
if (
response.responseMeta.status === 200 &&
- response.data?.tenantConfiguration?.migrationStatus ===
+ response.data?.organizationConfiguration?.migrationStatus ===
MIGRATION_STATUS.COMPLETED
) {
window.location.reload();
diff --git a/app/client/src/ce/sagas/analyticsSaga.ts b/app/client/src/ce/sagas/analyticsSaga.ts
index 355db4e04c0b..df5d0f4f4464 100644
--- a/app/client/src/ce/sagas/analyticsSaga.ts
+++ b/app/client/src/ce/sagas/analyticsSaga.ts
@@ -1,4 +1,4 @@
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import { call, select } from "redux-saga/effects";
import type { APP_MODE } from "entities/App";
import { getCurrentPageId } from "selectors/editorSelectors";
diff --git a/app/client/src/ce/sagas/index.tsx b/app/client/src/ce/sagas/index.tsx
index e6bb5cf321aa..577711a4f01c 100644
--- a/app/client/src/ce/sagas/index.tsx
+++ b/app/client/src/ce/sagas/index.tsx
@@ -1,7 +1,7 @@
import { watchActionExecutionSagas } from "ee/sagas/ActionExecution/ActionExecutionSagas";
import NavigationSagas from "ee/sagas/NavigationSagas";
import SuperUserSagas from "ee/sagas/SuperUserSagas";
-import tenantSagas from "ee/sagas/tenantSagas";
+import organizationSagas from "ee/sagas/organizationSagas";
import userSagas from "ee/sagas/userSagas";
import workspaceSagas from "ee/sagas/WorkspaceSagas";
import { watchPluginActionExecutionSagas } from "sagas/ActionExecution/PluginActionSaga";
@@ -97,7 +97,7 @@ export const sagas = [
NavigationSagas,
editorContextSagas,
AutoHeightSagas,
- tenantSagas,
+ organizationSagas,
JSLibrarySaga,
LintingSaga,
autoLayoutUpdateSagas,
diff --git a/app/client/src/ce/sagas/tenantSagas.tsx b/app/client/src/ce/sagas/organizationSagas.tsx
similarity index 69%
rename from app/client/src/ce/sagas/tenantSagas.tsx
rename to app/client/src/ce/sagas/organizationSagas.tsx
index b9a5c247a4c7..b1d5547bd18f 100644
--- a/app/client/src/ce/sagas/tenantSagas.tsx
+++ b/app/client/src/ce/sagas/organizationSagas.tsx
@@ -5,27 +5,27 @@ import {
} from "ee/constants/ReduxActionConstants";
import { call, put } from "redux-saga/effects";
import type { APIResponseError, ApiResponse } from "api/ApiResponses";
-import type { UpdateTenantConfigRequest } from "ee/api/TenantApi";
-import { TenantApi } from "ee/api/TenantApi";
+import type { UpdateOrganizationConfigRequest } from "ee/api/OrganizationApi";
+import { OrganizationApi } from "ee/api/OrganizationApi";
import { validateResponse } from "sagas/ErrorSagas";
import { safeCrashAppRequest } from "actions/errorActions";
import { ERROR_CODES } from "ee/constants/ApiConstants";
-import { defaultBrandingConfig as CE_defaultBrandingConfig } from "ee/reducers/tenantReducer";
+import { defaultBrandingConfig as CE_defaultBrandingConfig } from "ee/reducers/organizationReducer";
import { toast } from "@appsmith/ads";
import AnalyticsUtil from "ee/utils/AnalyticsUtil";
import { getFromServerWhenNoPrefetchedResult } from "sagas/helper";
-// On CE we don't expose tenant config so this shouldn't make any API calls and should just return necessary permissions for the user
-export function* fetchCurrentTenantConfigSaga(action?: {
- payload?: { tenantConfig?: ApiResponse };
+// On CE we don't expose organization config so this shouldn't make any API calls and should just return necessary permissions for the user
+export function* fetchCurrentOrganizationConfigSaga(action?: {
+ payload?: { organizationConfig?: ApiResponse };
}) {
- const tenantConfig = action?.payload?.tenantConfig;
+ const organizationConfig = action?.payload?.organizationConfig;
try {
const response: ApiResponse = yield call(
getFromServerWhenNoPrefetchedResult,
- tenantConfig,
- () => call(TenantApi.fetchCurrentTenantConfig),
+ organizationConfig,
+ () => call(OrganizationApi.fetchCurrentOrganizationConfig),
);
const isValidResponse: boolean = yield validateResponse(response);
@@ -36,29 +36,29 @@ export function* fetchCurrentTenantConfigSaga(action?: {
const data: any = response.data;
yield put({
- type: ReduxActionTypes.FETCH_CURRENT_TENANT_CONFIG_SUCCESS,
+ type: ReduxActionTypes.FETCH_CURRENT_ORGANIZATION_CONFIG_SUCCESS,
payload: data,
});
AnalyticsUtil.initInstanceId(data.instanceId);
}
} catch (error) {
yield put({
- type: ReduxActionErrorTypes.FETCH_CURRENT_TENANT_CONFIG_ERROR,
+ type: ReduxActionErrorTypes.FETCH_CURRENT_ORGANIZATION_CONFIG_ERROR,
payload: {
error,
},
});
- // tenant api is UI blocking call, we have to safe crash the app if it fails
+ // organization api is UI blocking call, we have to safe crash the app if it fails
yield put(safeCrashAppRequest());
}
}
-export function* updateTenantConfigSaga(
- action: ReduxAction,
+export function* updateOrganizationConfigSaga(
+ action: ReduxAction,
) {
try {
- const settings = action.payload.tenantConfiguration;
+ const settings = action.payload.organizationConfiguration;
const hasSingleSessionUserSetting = settings.hasOwnProperty(
"singleSessionPerUserEnabled",
);
@@ -70,7 +70,7 @@ export function* updateTenantConfigSaga(
);
const response: ApiResponse = yield call(
- TenantApi.updateTenantConfig,
+ OrganizationApi.updateOrganizationConfig,
action.payload,
);
const isValidResponse: boolean = yield validateResponse(response);
@@ -100,19 +100,19 @@ export function* updateTenantConfigSaga(
});
}
- // If the tenant config is not present, we need to set the default config
+ // If the organization config is not present, we need to set the default config
yield put({
- type: ReduxActionTypes.UPDATE_TENANT_CONFIG_SUCCESS,
+ type: ReduxActionTypes.UPDATE_ORGANIZATION_CONFIG_SUCCESS,
payload: {
...payload,
- tenantConfiguration: {
+ organizationConfiguration: {
...CE_defaultBrandingConfig,
- ...payload.tenantConfiguration,
+ ...payload.organizationConfiguration,
},
},
});
- if (action.payload.isOnlyTenantSettings) {
+ if (action.payload.isOnlyOrganizationSettings) {
toast.show("Successfully saved", {
kind: "success",
});
@@ -126,7 +126,7 @@ export function* updateTenantConfigSaga(
const errorObj = error as APIResponseError;
yield put({
- type: ReduxActionErrorTypes.UPDATE_TENANT_CONFIG_ERROR,
+ type: ReduxActionErrorTypes.UPDATE_ORGANIZATION_CONFIG_ERROR,
payload: {
errorObj,
},
diff --git a/app/client/src/ce/sagas/userSagas.tsx b/app/client/src/ce/sagas/userSagas.tsx
index da2459f5f8d6..65831655ff29 100644
--- a/app/client/src/ce/sagas/userSagas.tsx
+++ b/app/client/src/ce/sagas/userSagas.tsx
@@ -124,7 +124,7 @@ export function* getCurrentUserSaga(action?: {
function* getSessionRecordingConfig() {
const featureFlags: FeatureFlags = yield select(selectFeatureFlags);
- // This is a tenant level flag to kill session recordings
+ // This is a organization level flag to kill session recordings
// If this is true, we do not do any session recordings
if (featureFlags.kill_session_recordings_enabled) {
return {
@@ -142,7 +142,7 @@ function* getSessionRecordingConfig() {
};
}
- // Now we know that both tenant and user level flags are not blocking session recordings
+ // Now we know that both organization and user level flags are not blocking session recordings
return {
enabled: true,
// Check if we need to mask the session recordings from feature flags
diff --git a/app/client/src/ce/selectors/tenantSelectors.tsx b/app/client/src/ce/selectors/organizationSelectors.tsx
similarity index 52%
rename from app/client/src/ce/selectors/tenantSelectors.tsx
rename to app/client/src/ce/selectors/organizationSelectors.tsx
index 2ab76f7e4cff..0011addfa39e 100644
--- a/app/client/src/ce/selectors/tenantSelectors.tsx
+++ b/app/client/src/ce/selectors/organizationSelectors.tsx
@@ -1,27 +1,27 @@
import type { AppState } from "ee/reducers";
/**
- * selects the tenant permissions
+ * selects the organization permissions
*
* @param state
* @returns
*/
-export const getTenantPermissions = (state: AppState) => {
- return state.tenant?.userPermissions;
+export const getOrganizationPermissions = (state: AppState) => {
+ return state.organization?.userPermissions;
};
/**
- * selects the tenant config
+ * selects the organization config
*
* @param state
* @returns
*/
-export const getTenantConfig = (state: AppState) => {
- return state.tenant?.tenantConfiguration;
+export const getOrganizationConfig = (state: AppState) => {
+ return state.organization?.organizationConfiguration;
};
/**
- * selects the tenant brand colors
+ * selects the organization brand colors
*
* @returns
*/
@@ -33,27 +33,29 @@ export const isValidLicense = () => {
return true;
};
-export const isTenantLoading = (state: AppState) => {
- return state.tenant?.isLoading;
+export const isOrganizationLoading = (state: AppState) => {
+ return state.organization?.isLoading;
};
export const getGoogleMapsApiKey = (state: AppState): string | undefined =>
- state.tenant?.tenantConfiguration?.googleMapsKey as string | undefined;
+ state.organization?.organizationConfiguration?.googleMapsKey as
+ | string
+ | undefined;
export const getThirdPartyAuths = (state: AppState): string[] =>
- state.tenant?.tenantConfiguration?.thirdPartyAuths ?? [];
+ state.organization?.organizationConfiguration?.thirdPartyAuths ?? [];
export const getIsFormLoginEnabled = (state: AppState): boolean =>
- state.tenant?.tenantConfiguration?.isFormLoginEnabled ?? true;
+ state.organization?.organizationConfiguration?.isFormLoginEnabled ?? true;
export const getInstanceId = (state: AppState): string =>
- state.tenant?.instanceId;
+ state.organization?.instanceId;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export const shouldShowLicenseBanner = (state: AppState) => false;
export const getHideWatermark = (state: AppState): boolean =>
- state.tenant?.tenantConfiguration?.hideWatermark;
+ state.organization?.organizationConfiguration?.hideWatermark;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export const isFreePlan = (state: AppState) => true;
diff --git a/app/client/src/ce/selectors/rampSelectors.tsx b/app/client/src/ce/selectors/rampSelectors.tsx
index 0d881df88581..06f755382c19 100644
--- a/app/client/src/ce/selectors/rampSelectors.tsx
+++ b/app/client/src/ce/selectors/rampSelectors.tsx
@@ -14,7 +14,7 @@ import { isPermitted, PERMISSION_TYPE } from "ee/utils/permissionHelpers";
const { cloudHosting, customerPortalUrl, pricingUrl } = getAppsmithConfigs();
-const tenantState = (state: AppState) => state.tenant;
+const organizationState = (state: AppState) => state.organization;
const uiState = (state: AppState) => state.ui;
export const getRampLink = ({
@@ -26,8 +26,8 @@ export const getRampLink = ({
feature: string;
isBusinessFeature?: boolean;
}) =>
- createSelector(tenantState, (tenant) => {
- const instanceId = tenant?.instanceId;
+ createSelector(organizationState, (organization) => {
+ const instanceId = organization?.instanceId;
const source = cloudHosting ? "cloud" : "CE";
const RAMP_LINK_TO = isBusinessFeature
? CUSTOMER_PORTAL_URL_WITH_PARAMS(
diff --git a/app/client/src/ce/utils/BusinessFeatures/adminSettingsHelpers.tsx b/app/client/src/ce/utils/BusinessFeatures/adminSettingsHelpers.tsx
index f2667562545d..69df995cf5b5 100644
--- a/app/client/src/ce/utils/BusinessFeatures/adminSettingsHelpers.tsx
+++ b/app/client/src/ce/utils/BusinessFeatures/adminSettingsHelpers.tsx
@@ -20,11 +20,17 @@ export const getShowAdminSettings = (
export const getAdminSettingsPath = (
isEnabled: boolean,
isSuperUser: boolean | undefined,
- tenantPermissions: string[] = [],
+ organizationPermissions: string[] = [],
) => {
if (isEnabled) {
- return getDefaultAdminSettingsPath_EE({ isSuperUser, tenantPermissions });
+ return getDefaultAdminSettingsPath_EE({
+ isSuperUser,
+ organizationPermissions,
+ });
} else {
- return getDefaultAdminSettingsPath_CE({ isSuperUser, tenantPermissions });
+ return getDefaultAdminSettingsPath_CE({
+ isSuperUser,
+ organizationPermissions,
+ });
}
};
diff --git a/app/client/src/ce/utils/adminSettingsHelpers.ts b/app/client/src/ce/utils/adminSettingsHelpers.ts
index 5628f50fe105..56ea44af04db 100644
--- a/app/client/src/ce/utils/adminSettingsHelpers.ts
+++ b/app/client/src/ce/utils/adminSettingsHelpers.ts
@@ -1,4 +1,4 @@
-import { tenantConfigConnection } from "ee/constants/tenantConstants";
+import { organizationConfigConnection } from "ee/constants/organizationConstants";
import type {
AdminConfigType,
Category,
@@ -37,7 +37,7 @@ export const saveAllowed = (
export const getDefaultAdminSettingsPath = (
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
- { isSuperUser, tenantPermissions: any = [] }: Record,
+ { isSuperUser, organizationPermissions: any = [] }: Record,
): string => {
return ADMIN_SETTINGS_CATEGORY_DEFAULT_PATH;
};
@@ -52,8 +52,8 @@ export const getLoginUrl = (method: string): string => {
return urls[method];
};
-export const isTenantConfig = (name: string): boolean => {
- const fields: string[] = tenantConfigConnection;
+export const isOrganizationConfig = (name: string): boolean => {
+ const fields: string[] = organizationConfigConnection;
return fields.includes(name);
};
diff --git a/app/client/src/ce/utils/permissionHelpers.tsx b/app/client/src/ce/utils/permissionHelpers.tsx
index da55328cf376..736e06ccb9f0 100644
--- a/app/client/src/ce/utils/permissionHelpers.tsx
+++ b/app/client/src/ce/utils/permissionHelpers.tsx
@@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
export enum PERMISSION_TYPE {
/* Workspace permissions */
- CREATE_WORKSPACE = "createWorkspaces:tenant",
+ CREATE_WORKSPACE = "createWorkspaces:organization",
MANAGE_WORKSPACE = "manage:workspaces",
READ_WORKSPACE = "read:workspaces",
INVITE_USER_TO_WORKSPACE = "inviteUsers:workspace",
diff --git a/app/client/src/components/editorComponents/PartialImportExport/PartialExportModal/unitTestUtils.ts b/app/client/src/components/editorComponents/PartialImportExport/PartialExportModal/unitTestUtils.ts
index 6caa81392991..8d225b555af3 100644
--- a/app/client/src/components/editorComponents/PartialImportExport/PartialExportModal/unitTestUtils.ts
+++ b/app/client/src/components/editorComponents/PartialImportExport/PartialExportModal/unitTestUtils.ts
@@ -12684,7 +12684,7 @@ export const defaultAppState = {
],
slug: "jacques-s-apps",
isAutoGeneratedWorkspace: true,
- tenantId: "653236225e9a6424e4c04b65",
+ organizationId: "653236225e9a6424e4c04b65",
logoUrl: "/api/v1/assets/null",
new: false,
},
@@ -20651,9 +20651,9 @@ export const defaultAppState = {
emailVerificationEnabled: false,
},
},
- tenant: {
+ organization: {
userPermissions: [],
- tenantConfiguration: {
+ organizationConfiguration: {
brandFaviconUrl:
"https://assets.appsmith.com/appsmith-favicon-orange.ico",
brandColors: {
diff --git a/app/client/src/components/propertyControls/ColorPickerComponentV2.test.tsx b/app/client/src/components/propertyControls/ColorPickerComponentV2.test.tsx
index 4810dbbd57ca..02c1e09ff49c 100644
--- a/app/client/src/components/propertyControls/ColorPickerComponentV2.test.tsx
+++ b/app/client/src/components/propertyControls/ColorPickerComponentV2.test.tsx
@@ -31,9 +31,9 @@ const store = mockStore({
},
},
},
- tenant: {
+ organization: {
userPermissions: [],
- tenantConfiguration: {
+ organizationConfiguration: {
brandColors: {},
},
new: false,
diff --git a/app/client/src/components/propertyControls/ColorPickerComponentV2.tsx b/app/client/src/components/propertyControls/ColorPickerComponentV2.tsx
index c80ad0ee8ad6..a763add13ce5 100644
--- a/app/client/src/components/propertyControls/ColorPickerComponentV2.tsx
+++ b/app/client/src/components/propertyControls/ColorPickerComponentV2.tsx
@@ -29,7 +29,7 @@ import {
import { TAILWIND_COLORS } from "constants/ThemeConstants";
import useDSEvent from "utils/hooks/useDSEvent";
import { DSEventTypes } from "utils/AppsmithUtils";
-import { getBrandColors } from "ee/selectors/tenantSelectors";
+import { getBrandColors } from "ee/selectors/organizationSelectors";
import FocusTrap from "focus-trap-react";
import { createMessage, FULL_COLOR_PICKER_LABEL } from "ee/constants/messages";
diff --git a/app/client/src/ee/actions/organizationActions.ts b/app/client/src/ee/actions/organizationActions.ts
new file mode 100644
index 000000000000..02afdd761804
--- /dev/null
+++ b/app/client/src/ee/actions/organizationActions.ts
@@ -0,0 +1 @@
+export * from "ce/actions/organizationActions";
diff --git a/app/client/src/ee/actions/tenantActions.ts b/app/client/src/ee/actions/tenantActions.ts
deleted file mode 100644
index e5fb6026b705..000000000000
--- a/app/client/src/ee/actions/tenantActions.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "ce/actions/tenantActions";
diff --git a/app/client/src/ee/api/OrganizationApi.ts b/app/client/src/ee/api/OrganizationApi.ts
new file mode 100644
index 000000000000..432079bd435f
--- /dev/null
+++ b/app/client/src/ee/api/OrganizationApi.ts
@@ -0,0 +1,6 @@
+export * from "ce/api/OrganizationApi";
+import { OrganizationApi as CE_OrganizationApi } from "ce/api/OrganizationApi";
+
+class OrganizationApi extends CE_OrganizationApi {}
+
+export default OrganizationApi;
diff --git a/app/client/src/ee/api/TenantApi.ts b/app/client/src/ee/api/TenantApi.ts
deleted file mode 100644
index 5d2f188cd3de..000000000000
--- a/app/client/src/ee/api/TenantApi.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export * from "ce/api/TenantApi";
-import { TenantApi as CE_TenantApi } from "ce/api/TenantApi";
-
-class TenantApi extends CE_TenantApi {}
-
-export default TenantApi;
diff --git a/app/client/src/ee/constants/organizationConstants.ts b/app/client/src/ee/constants/organizationConstants.ts
new file mode 100644
index 000000000000..d2e66b215266
--- /dev/null
+++ b/app/client/src/ee/constants/organizationConstants.ts
@@ -0,0 +1 @@
+export * from "ce/constants/organizationConstants";
diff --git a/app/client/src/ee/constants/tenantConstants.ts b/app/client/src/ee/constants/tenantConstants.ts
deleted file mode 100644
index 2866f0898e53..000000000000
--- a/app/client/src/ee/constants/tenantConstants.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "ce/constants/tenantConstants";
diff --git a/app/client/src/ee/reducers/organizationReducer.ts b/app/client/src/ee/reducers/organizationReducer.ts
new file mode 100644
index 000000000000..c8c59c55c6ee
--- /dev/null
+++ b/app/client/src/ee/reducers/organizationReducer.ts
@@ -0,0 +1,5 @@
+export * from "ce/reducers/organizationReducer";
+import { handlers, initialState } from "ce/reducers/organizationReducer";
+import { createReducer } from "utils/ReducerUtils";
+
+export default createReducer(initialState, handlers);
diff --git a/app/client/src/ee/reducers/tenantReducer.ts b/app/client/src/ee/reducers/tenantReducer.ts
deleted file mode 100644
index a5ab731605a4..000000000000
--- a/app/client/src/ee/reducers/tenantReducer.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export * from "ce/reducers/tenantReducer";
-import { handlers, initialState } from "ce/reducers/tenantReducer";
-import { createReducer } from "utils/ReducerUtils";
-
-export default createReducer(initialState, handlers);
diff --git a/app/client/src/ee/sagas/organizationSagas.tsx b/app/client/src/ee/sagas/organizationSagas.tsx
new file mode 100644
index 000000000000..3d7e5e379a29
--- /dev/null
+++ b/app/client/src/ee/sagas/organizationSagas.tsx
@@ -0,0 +1,20 @@
+export * from "ce/sagas/organizationSagas";
+import { ReduxActionTypes } from "ee/constants/ReduxActionConstants";
+import {
+ fetchCurrentOrganizationConfigSaga,
+ updateOrganizationConfigSaga,
+} from "ce/sagas/organizationSagas";
+import { all, takeLatest } from "redux-saga/effects";
+
+export default function* organizationSagas() {
+ yield all([
+ takeLatest(
+ ReduxActionTypes.FETCH_CURRENT_ORGANIZATION_CONFIG,
+ fetchCurrentOrganizationConfigSaga,
+ ),
+ takeLatest(
+ ReduxActionTypes.UPDATE_ORGANIZATION_CONFIG,
+ updateOrganizationConfigSaga,
+ ),
+ ]);
+}
diff --git a/app/client/src/ee/sagas/tenantSagas.tsx b/app/client/src/ee/sagas/tenantSagas.tsx
deleted file mode 100644
index 53ca8398e7e7..000000000000
--- a/app/client/src/ee/sagas/tenantSagas.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-export * from "ce/sagas/tenantSagas";
-import { ReduxActionTypes } from "ee/constants/ReduxActionConstants";
-import {
- fetchCurrentTenantConfigSaga,
- updateTenantConfigSaga,
-} from "ce/sagas/tenantSagas";
-import { all, takeLatest } from "redux-saga/effects";
-
-export default function* tenantSagas() {
- yield all([
- takeLatest(
- ReduxActionTypes.FETCH_CURRENT_TENANT_CONFIG,
- fetchCurrentTenantConfigSaga,
- ),
- takeLatest(ReduxActionTypes.UPDATE_TENANT_CONFIG, updateTenantConfigSaga),
- ]);
-}
diff --git a/app/client/src/ee/selectors/organizationSelectors.tsx b/app/client/src/ee/selectors/organizationSelectors.tsx
new file mode 100644
index 000000000000..49474f8ce5e3
--- /dev/null
+++ b/app/client/src/ee/selectors/organizationSelectors.tsx
@@ -0,0 +1 @@
+export * from "ce/selectors/organizationSelectors";
diff --git a/app/client/src/ee/selectors/tenantSelectors.tsx b/app/client/src/ee/selectors/tenantSelectors.tsx
deleted file mode 100644
index 22a80dbfc947..000000000000
--- a/app/client/src/ee/selectors/tenantSelectors.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export * from "ce/selectors/tenantSelectors";
diff --git a/app/client/src/git/hooks/useAppsmithEnterpriseUrl.ts b/app/client/src/git/hooks/useAppsmithEnterpriseUrl.ts
index dfe46397247e..36d19eccd596 100644
--- a/app/client/src/git/hooks/useAppsmithEnterpriseUrl.ts
+++ b/app/client/src/git/hooks/useAppsmithEnterpriseUrl.ts
@@ -1,4 +1,4 @@
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import { useSelector } from "react-redux";
import { ENTERPRISE_PRICING_PAGE } from "constants/ThirdPartyConstants";
import { useMemo } from "react";
diff --git a/app/client/src/layoutSystems/common/dropTarget/unitTestUtils.ts b/app/client/src/layoutSystems/common/dropTarget/unitTestUtils.ts
index 1f9ac44b17a8..d86a20c29947 100644
--- a/app/client/src/layoutSystems/common/dropTarget/unitTestUtils.ts
+++ b/app/client/src/layoutSystems/common/dropTarget/unitTestUtils.ts
@@ -247,7 +247,7 @@ export const unitTestBaseMockStore = {
],
slug: "jacques-s-apps",
isAutoGeneratedWorkspace: true,
- tenantId: "653236225e9a6424e4c04b65",
+ organizationId: "653236225e9a6424e4c04b65",
logoUrl: "/api/v1/assets/null",
new: false,
},
@@ -433,7 +433,7 @@ export const unitTestBaseMockStore = {
],
slug: "jacques-s-apps",
isAutoGeneratedWorkspace: true,
- tenantId: "653236225e9a6424e4c04b65",
+ organizationId: "653236225e9a6424e4c04b65",
logoUrl: "/api/v1/assets/null",
new: false,
},
diff --git a/app/client/src/pages/AdminSettings/Branding/BrandingPage.tsx b/app/client/src/pages/AdminSettings/Branding/BrandingPage.tsx
index 834077106eb7..ed6feaf6415d 100644
--- a/app/client/src/pages/AdminSettings/Branding/BrandingPage.tsx
+++ b/app/client/src/pages/AdminSettings/Branding/BrandingPage.tsx
@@ -4,7 +4,7 @@ import { useForm } from "react-hook-form";
import Previews from "./previews";
import SettingsForm from "./SettingsForm";
-import { getTenantConfig } from "ee/selectors/tenantSelectors";
+import { getOrganizationConfig } from "ee/selectors/organizationSelectors";
import { Wrapper } from "pages/AdminSettings/Authentication/AuthPage";
import { getAssetUrl } from "ee/utils/airgapHelpers";
@@ -31,11 +31,11 @@ interface BrandingPageProps {
function BrandingPage(props: BrandingPageProps) {
const { category } = props;
const isBrandingEnabled = category?.isFeatureEnabled ?? false;
- const tenantConfig = useSelector(getTenantConfig);
+ const organizationConfig = useSelector(getOrganizationConfig);
const defaultValues = {
- brandColors: tenantConfig.brandColors,
- brandLogo: tenantConfig.brandLogoUrl,
- brandFavicon: tenantConfig.brandFaviconUrl,
+ brandColors: organizationConfig.brandColors,
+ brandLogo: organizationConfig.brandLogoUrl,
+ brandFavicon: organizationConfig.brandFaviconUrl,
};
const {
control,
@@ -53,15 +53,15 @@ function BrandingPage(props: BrandingPageProps) {
const values = getValues();
/**
- * reset the form when the tenant config changes
+ * reset the form when the organization config changes
*/
useEffect(() => {
reset({
- brandColors: tenantConfig.brandColors,
- brandLogo: tenantConfig.brandLogoUrl,
- brandFavicon: tenantConfig.brandFaviconUrl,
+ brandColors: organizationConfig.brandColors,
+ brandLogo: organizationConfig.brandLogoUrl,
+ brandFavicon: organizationConfig.brandFaviconUrl,
});
- }, [tenantConfig, reset]);
+ }, [organizationConfig, reset]);
watch();
diff --git a/app/client/src/pages/AdminSettings/FormGroup/Checkbox.tsx b/app/client/src/pages/AdminSettings/FormGroup/Checkbox.tsx
index 4a002cee0abc..7985d76657ea 100644
--- a/app/client/src/pages/AdminSettings/FormGroup/Checkbox.tsx
+++ b/app/client/src/pages/AdminSettings/FormGroup/Checkbox.tsx
@@ -7,7 +7,7 @@ import type { FormTextFieldProps } from "components/utils/ReduxFormTextField";
import { Checkbox } from "@appsmith/ads";
import { useSelector } from "react-redux";
import { SETTINGS_FORM_NAME } from "ee/constants/forms";
-import { isTenantConfig } from "ee/utils/adminSettingsHelpers";
+import { isOrganizationConfig } from "ee/utils/adminSettingsHelpers";
const CheckboxWrapper = styled.div`
display: grid;
@@ -98,7 +98,7 @@ export function CheckboxComponent({ setting }: SettingComponentProps) {
isDisabled: setting.isDisabled && setting.isDisabled(settings),
isFeatureEnabled: setting.isFeatureEnabled,
labelSuffix: setting.textSuffix,
- isPropertyDisabled: isTenantConfig(setting.id)
+ isPropertyDisabled: isOrganizationConfig(setting.id)
? false
: !setting.name?.toLowerCase().includes("enable"),
})}
diff --git a/app/client/src/pages/AdminSettings/LeftPane.tsx b/app/client/src/pages/AdminSettings/LeftPane.tsx
index 112fbe72e5ca..c410f3827b5c 100644
--- a/app/client/src/pages/AdminSettings/LeftPane.tsx
+++ b/app/client/src/pages/AdminSettings/LeftPane.tsx
@@ -14,7 +14,7 @@ import { ReduxActionTypes } from "ee/constants/ReduxActionConstants";
import { getCurrentUser } from "selectors/usersSelectors";
import BusinessTag from "components/BusinessTag";
import EnterpriseTag from "components/EnterpriseTag";
-import { getTenantPermissions } from "ee/selectors/tenantSelectors";
+import { getOrganizationPermissions } from "ee/selectors/organizationSelectors";
import {
getFilteredAclCategories,
getFilteredGeneralCategories,
@@ -200,11 +200,11 @@ export default function LeftPane() {
const { category, selected: subCategory } = useParams() as any;
const user = useSelector(getCurrentUser);
const isSuperUser = user?.isSuperUser;
- const tenantPermissions = useSelector(getTenantPermissions);
+ const organizationPermissions = useSelector(getOrganizationPermissions);
const isFeatureEnabled = useFeatureFlag(FEATURE_FLAG.license_gac_enabled);
const isAuditLogsEnabled = getHasAuditLogsReadPermission(
isFeatureEnabled,
- tenantPermissions,
+ organizationPermissions,
);
const filteredGeneralCategories = getFilteredGeneralCategories(categories);
diff --git a/app/client/src/pages/AdminSettings/Main.tsx b/app/client/src/pages/AdminSettings/Main.tsx
index 078459a3ad02..4702b6ab0356 100644
--- a/app/client/src/pages/AdminSettings/Main.tsx
+++ b/app/client/src/pages/AdminSettings/Main.tsx
@@ -6,7 +6,7 @@ import SettingsForm from "pages/AdminSettings/SettingsForm";
import { getWrapperCategory } from "ee/utils/adminSettingsHelpers";
import { useSelector } from "react-redux";
import { getCurrentUser } from "selectors/usersSelectors";
-import { getTenantPermissions } from "ee/selectors/tenantSelectors";
+import { getOrganizationPermissions } from "ee/selectors/organizationSelectors";
import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
import { FEATURE_FLAG } from "ee/entities/FeatureFlag";
import { getAdminSettingsPath } from "ee/utils/BusinessFeatures/adminSettingsHelpers";
@@ -17,7 +17,7 @@ const Main = () => {
const params = useParams() as any;
const { category, selected: subCategory } = params;
const user = useSelector(getCurrentUser);
- const tenantPermissions = useSelector(getTenantPermissions);
+ const organizationPermissions = useSelector(getOrganizationPermissions);
const isSuperUser = user?.isSuperUser || false;
const wrapperCategory = getWrapperCategory(
AdminConfig.wrapperCategories,
@@ -39,7 +39,7 @@ const Main = () => {
to={getAdminSettingsPath(
isFeatureEnabled,
isSuperUser,
- tenantPermissions,
+ organizationPermissions,
)}
/>
);
diff --git a/app/client/src/pages/AdminSettings/SaveSettings.tsx b/app/client/src/pages/AdminSettings/SaveSettings.tsx
index a3136feb9bfe..638bdb4ce086 100644
--- a/app/client/src/pages/AdminSettings/SaveSettings.tsx
+++ b/app/client/src/pages/AdminSettings/SaveSettings.tsx
@@ -31,25 +31,25 @@ const SettingsButtonWrapper = styled.div`
`;
interface SaveAdminSettingsProps {
- isOnlyTenantConfig?: boolean;
+ isOnlyOrganizationConfig?: boolean;
isSaving?: boolean;
needsRefresh?: boolean;
onSave?: () => void;
onClear?: () => void;
settings: Record;
valid: boolean;
- updatedTenantSettings?: string[];
+ updatedOrganizationSettings?: string[];
}
const saveAdminSettings = (props: SaveAdminSettingsProps) => {
const {
- isOnlyTenantConfig = false,
+ isOnlyOrganizationConfig = false,
isSaving,
needsRefresh = false,
onClear,
onSave,
settings,
- updatedTenantSettings,
+ updatedOrganizationSettings,
valid,
} = props;
@@ -58,9 +58,9 @@ const saveAdminSettings = (props: SaveAdminSettingsProps) => {
if (needsRefresh) {
saveButtonText = SAVE_AND_REFRESH_BUTTON;
} else if (
- isOnlyTenantConfig ||
- (updatedTenantSettings?.length === Object.keys(settings).length &&
- updatedTenantSettings?.length !== 0)
+ isOnlyOrganizationConfig ||
+ (updatedOrganizationSettings?.length === Object.keys(settings).length &&
+ updatedOrganizationSettings?.length !== 0)
) {
saveButtonText = SAVE_BUTTON;
}
diff --git a/app/client/src/pages/AdminSettings/SettingsForm.tsx b/app/client/src/pages/AdminSettings/SettingsForm.tsx
index 77a7a16c790c..0fc1d3c5dff4 100644
--- a/app/client/src/pages/AdminSettings/SettingsForm.tsx
+++ b/app/client/src/pages/AdminSettings/SettingsForm.tsx
@@ -29,7 +29,10 @@ import {
DISCONNECT_SERVICE_WARNING,
MANDATORY_FIELDS_ERROR,
} from "ee/constants/messages";
-import { isTenantConfig, saveAllowed } from "ee/utils/adminSettingsHelpers";
+import {
+ isOrganizationConfig,
+ saveAllowed,
+} from "ee/utils/adminSettingsHelpers";
import AnalyticsUtil from "ee/utils/AnalyticsUtil";
import {
Wrapper,
@@ -44,9 +47,9 @@ import { toast } from "@appsmith/ads";
import {
getIsFormLoginEnabled,
getThirdPartyAuths,
-} from "ee/selectors/tenantSelectors";
-import { updateTenantConfig } from "ee/actions/tenantActions";
-import { tenantConfigConnection } from "ee/constants/tenantConstants";
+} from "ee/selectors/organizationSelectors";
+import { updateOrganizationConfig } from "ee/actions/organizationActions";
+import { organizationConfigConnection } from "ee/constants/organizationConstants";
interface FormProps {
settings: Record;
@@ -87,54 +90,54 @@ export function SettingsForm(
const isFormLoginEnabled = useSelector(getIsFormLoginEnabled);
const socialLoginList = useSelector(getThirdPartyAuths);
- const updatedTenantSettings = useMemo(
- () => Object.keys(props.settings).filter((s) => isTenantConfig(s)),
+ const updatedOrganizationSettings = useMemo(
+ () => Object.keys(props.settings).filter((s) => isOrganizationConfig(s)),
[props.settings],
);
- // Is there a non-tenant (env) config in this category of settings?
- const isOnlyTenantConfig = !settingsDetails.find(
+ // Is there a non-organization (env) config in this category of settings?
+ const isOnlyOrganizationConfig = !settingsDetails.find(
(s) =>
s.category === (subCategory || category) &&
s.controlType != SettingTypes.CALLOUT &&
- !isTenantConfig(s.id),
+ !isOrganizationConfig(s.id),
);
const saveChangedSettings = () => {
const settingsKeyLength = Object.keys(props.settings).length;
const isOnlyEnvSettings =
- updatedTenantSettings.length === 0 && settingsKeyLength !== 0;
- const isEnvAndTenantSettings =
- updatedTenantSettings.length !== 0 &&
- updatedTenantSettings.length !== settingsKeyLength;
+ updatedOrganizationSettings.length === 0 && settingsKeyLength !== 0;
+ const isEnvAndOrganizationSettings =
+ updatedOrganizationSettings.length !== 0 &&
+ updatedOrganizationSettings.length !== settingsKeyLength;
if (isOnlyEnvSettings) {
// only env settings
dispatch(saveSettings(props.settings));
} else {
- // only tenant settings
+ // only organization settings
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const config: any = {};
for (const each in props.settings) {
- if (tenantConfigConnection.includes(each)) {
+ if (organizationConfigConnection.includes(each)) {
config[each] = props.settings[each];
}
}
dispatch(
- updateTenantConfig({
- tenantConfiguration: config,
- isOnlyTenantSettings: !isEnvAndTenantSettings,
+ updateOrganizationConfig({
+ organizationConfiguration: config,
+ isOnlyOrganizationSettings: !isEnvAndOrganizationSettings,
needsRefresh: details?.needsRefresh,
}),
);
- // both env and tenant settings
- if (isEnvAndTenantSettings) {
+ // both env and organization settings
+ if (isEnvAndOrganizationSettings) {
const filteredSettings = Object.keys(props.settings)
- .filter((key) => !isTenantConfig(key))
+ .filter((key) => !isOrganizationConfig(key))
.reduce((obj, key) => {
return Object.assign(obj, {
[key]: props.settings[key],
@@ -295,13 +298,13 @@ export function SettingsForm(
/>
{isSavable && (
)}
diff --git a/app/client/src/pages/AppIDE/components/AppSettings/components/NavigationSettings/LogoInput.tsx b/app/client/src/pages/AppIDE/components/AppSettings/components/NavigationSettings/LogoInput.tsx
index 502851e0d25f..bafdebf49823 100644
--- a/app/client/src/pages/AppIDE/components/AppSettings/components/NavigationSettings/LogoInput.tsx
+++ b/app/client/src/pages/AppIDE/components/AppSettings/components/NavigationSettings/LogoInput.tsx
@@ -12,7 +12,7 @@ import {
getIsDeletingNavigationLogo,
getIsUploadingNavigationLogo,
} from "ee/selectors/applicationSelectors";
-import { getTenantConfig } from "ee/selectors/tenantSelectors";
+import { getOrganizationConfig } from "ee/selectors/organizationSelectors";
import { getAppsmithConfigs } from "ee/configs";
import { DeleteLogoButton } from "ee/pages/Editor/NavigationSettings/DeleteLogoButton";
@@ -28,7 +28,7 @@ const LogoInput = ({ navigationSetting }: ButtonGroupSettingProps) => {
const applicationId = useSelector(getCurrentApplicationId);
const isUploadingNavigationLogo = useSelector(getIsUploadingNavigationLogo);
const isDeletingNavigationLogo = useSelector(getIsDeletingNavigationLogo);
- const tenantConfig = useSelector(getTenantConfig);
+ const organizationConfig = useSelector(getOrganizationConfig);
const { logoAssetId } = navigationSetting;
const [logoUrl, setLogoUrl] = useState(null);
@@ -41,8 +41,8 @@ const LogoInput = ({ navigationSetting }: ButtonGroupSettingProps) => {
setLogoUrl(null);
return;
- } else if (!cloudHosting && tenantConfig?.brandLogoUrl) {
- setLogoUrl(tenantConfig.brandLogoUrl);
+ } else if (!cloudHosting && organizationConfig?.brandLogoUrl) {
+ setLogoUrl(organizationConfig.brandLogoUrl);
return;
}
@@ -50,7 +50,7 @@ const LogoInput = ({ navigationSetting }: ButtonGroupSettingProps) => {
setLogoUrl(null);
return;
- }, [logoAssetId, tenantConfig, cloudHosting]);
+ }, [logoAssetId, organizationConfig, cloudHosting]);
const handleChange = (file: File) => {
dispatch({
diff --git a/app/client/src/pages/AppIDE/components/PageList/PagesSection.tsx b/app/client/src/pages/AppIDE/components/PageList/PagesSection.tsx
index 56c9bf93b7d5..15f55b47e3d9 100644
--- a/app/client/src/pages/AppIDE/components/PageList/PagesSection.tsx
+++ b/app/client/src/pages/AppIDE/components/PageList/PagesSection.tsx
@@ -16,7 +16,7 @@ import { createNewPageFromEntities } from "actions/pageActions";
import AddPageContextMenu from "./AddPageContextMenu";
import { getNextEntityName } from "utils/AppsmithUtils";
import { getCurrentWorkspaceId } from "ee/selectors/selectedWorkspaceSelectors";
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import { PageElement } from "./PageElement";
import { PAGE_ENTITY_NAME } from "ee/constants/messages";
diff --git a/app/client/src/pages/AppViewer/PageMenu.tsx b/app/client/src/pages/AppViewer/PageMenu.tsx
index 85a915afc0ec..1625e261a250 100644
--- a/app/client/src/pages/AppViewer/PageMenu.tsx
+++ b/app/client/src/pages/AppViewer/PageMenu.tsx
@@ -21,7 +21,7 @@ import { PageMenuContainer, StyledNavLink } from "./PageMenu.styled";
import { StyledCtaContainer } from "./Navigation/Sidebar.styled";
import ShareButton from "./Navigation/components/ShareButton";
import BackToAppsButton from "./Navigation/components/BackToAppsButton";
-import { getHideWatermark } from "ee/selectors/tenantSelectors";
+import { getHideWatermark } from "ee/selectors/organizationSelectors";
interface NavigationProps {
isOpen?: boolean;
diff --git a/app/client/src/pages/AppViewer/index.tsx b/app/client/src/pages/AppViewer/index.tsx
index 7121f3ede048..e860847e5f7c 100644
--- a/app/client/src/pages/AppViewer/index.tsx
+++ b/app/client/src/pages/AppViewer/index.tsx
@@ -49,7 +49,7 @@ import {
} from "@appsmith/wds-theming";
import { KBViewerFloatingButton } from "ee/pages/AppViewer/KnowledgeBase/KBViewerFloatingButton";
import urlBuilder from "ee/entities/URLRedirect/URLAssembly";
-import { getHideWatermark } from "ee/selectors/tenantSelectors";
+import { getHideWatermark } from "ee/selectors/organizationSelectors";
import { getIsAnvilLayout } from "layoutSystems/anvil/integrations/selectors";
const AppViewerBody = styled.section<{
diff --git a/app/client/src/pages/Editor/HelpButton.tsx b/app/client/src/pages/Editor/HelpButton.tsx
index 186f2a8bb129..90b284b76e59 100644
--- a/app/client/src/pages/Editor/HelpButton.tsx
+++ b/app/client/src/pages/Editor/HelpButton.tsx
@@ -35,7 +35,7 @@ import {
import SignpostingPopup from "pages/Editor/FirstTimeUserOnboarding/Modal";
import { showSignpostingModal } from "actions/onboardingActions";
import TooltipContent from "./FirstTimeUserOnboarding/TooltipContent";
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import { updateIntercomConsent, updateUserDetails } from "actions/userActions";
const { appVersion, cloudHosting, intercomAppID } = getAppsmithConfigs();
diff --git a/app/client/src/pages/Editor/IntegrationEditor/PremiumDatasources/ContactForm.tsx b/app/client/src/pages/Editor/IntegrationEditor/PremiumDatasources/ContactForm.tsx
index 0a48ff808c9f..9d426751c171 100644
--- a/app/client/src/pages/Editor/IntegrationEditor/PremiumDatasources/ContactForm.tsx
+++ b/app/client/src/pages/Editor/IntegrationEditor/PremiumDatasources/ContactForm.tsx
@@ -17,7 +17,7 @@ import { isEmail } from "utils/formhelpers";
import ReduxFormTextField from "components/utils/ReduxFormTextField";
import { PRICING_PAGE_URL } from "constants/ThirdPartyConstants";
import { getAppsmithConfigs } from "ee/configs";
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import { pricingPageUrlSource } from "ee/utils/licenseHelpers";
import { RampFeature, RampSection } from "utils/ProductRamps/RampsControlList";
import {
diff --git a/app/client/src/pages/Editor/gitSync/GitSettingsModal/TabBranch/hooks.ts b/app/client/src/pages/Editor/gitSync/GitSettingsModal/TabBranch/hooks.ts
index 79adb77e8a1c..c8cb65a48e3d 100644
--- a/app/client/src/pages/Editor/gitSync/GitSettingsModal/TabBranch/hooks.ts
+++ b/app/client/src/pages/Editor/gitSync/GitSettingsModal/TabBranch/hooks.ts
@@ -1,4 +1,4 @@
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import { useSelector } from "react-redux";
import { ENTERPRISE_PRICING_PAGE } from "constants/ThirdPartyConstants";
import { useMemo } from "react";
diff --git a/app/client/src/pages/UserAuth/Container.tsx b/app/client/src/pages/UserAuth/Container.tsx
index ba731cd980e0..936e4b90ddb0 100644
--- a/app/client/src/pages/UserAuth/Container.tsx
+++ b/app/client/src/pages/UserAuth/Container.tsx
@@ -1,7 +1,7 @@
import React from "react";
import { useSelector } from "react-redux";
-import { getTenantConfig } from "ee/selectors/tenantSelectors";
+import { getOrganizationConfig } from "ee/selectors/organizationSelectors";
import { getAssetUrl } from "ee/utils/airgapHelpers";
import LeftSideContent from "./LeftSideContent";
import { getAppsmithConfigs } from "ee/configs";
@@ -40,7 +40,7 @@ const BoxWrapper = styled.div<{ isMobileView: boolean }>`
function Container(props: ContainerProps) {
const { children, footer, subtitle, testId, title } = props;
- const tenantConfig = useSelector(getTenantConfig);
+ const organizationConfig = useSelector(getOrganizationConfig);
const { cloudHosting } = getAppsmithConfigs();
const isMobileDevice = useIsMobileDevice();
@@ -59,7 +59,7 @@ function Container(props: ContainerProps) {
{!isMobileDevice && (
)}
diff --git a/app/client/src/pages/UserAuth/Login.tsx b/app/client/src/pages/UserAuth/Login.tsx
index 76f59aa5a50e..fcac3e210b57 100644
--- a/app/client/src/pages/UserAuth/Login.tsx
+++ b/app/client/src/pages/UserAuth/Login.tsx
@@ -45,8 +45,8 @@ import Container from "pages/UserAuth/Container";
import {
getThirdPartyAuths,
getIsFormLoginEnabled,
- getTenantConfig,
-} from "ee/selectors/tenantSelectors";
+ getOrganizationConfig,
+} from "ee/selectors/organizationSelectors";
import Helmet from "react-helmet";
import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
import { FEATURE_FLAG } from "ee/entities/FeatureFlag";
@@ -97,8 +97,8 @@ export function Login(props: LoginFormProps) {
const isBrandingEnabled = useFeatureFlag(
FEATURE_FLAG.license_branding_enabled,
);
- const tentantConfig = useSelector(getTenantConfig);
- const { instanceName } = tentantConfig;
+ const organizationConfig = useSelector(getOrganizationConfig);
+ const { instanceName } = organizationConfig;
const htmlPageTitle = getHTMLPageTitle(isBrandingEnabled, instanceName);
const invalidCredsForgotPasswordLinkText = createMessage(
LOGIN_PAGE_INVALID_CREDS_FORGOT_PASSWORD_LINK,
diff --git a/app/client/src/pages/UserAuth/SignUp.tsx b/app/client/src/pages/UserAuth/SignUp.tsx
index 0d5db6e3eec5..b0e3ebde1205 100644
--- a/app/client/src/pages/UserAuth/SignUp.tsx
+++ b/app/client/src/pages/UserAuth/SignUp.tsx
@@ -48,9 +48,9 @@ import { getIsSafeRedirectURL } from "utils/helpers";
import Container from "pages/UserAuth/Container";
import {
getIsFormLoginEnabled,
- getTenantConfig,
+ getOrganizationConfig,
getThirdPartyAuths,
-} from "ee/selectors/tenantSelectors";
+} from "ee/selectors/organizationSelectors";
import Helmet from "react-helmet";
import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
import { FEATURE_FLAG } from "ee/entities/FeatureFlag";
@@ -119,8 +119,8 @@ export function SignUp(props: SignUpFormProps) {
const isBrandingEnabled = useFeatureFlag(
FEATURE_FLAG.license_branding_enabled,
);
- const tentantConfig = useSelector(getTenantConfig);
- const { instanceName } = tentantConfig;
+ const organizationConfig = useSelector(getOrganizationConfig);
+ const { instanceName } = organizationConfig;
const htmlPageTitle = getHTMLPageTitle(isBrandingEnabled, instanceName);
const recaptchaStatus = useScript(
diff --git a/app/client/src/pages/UserAuth/ThirdPartyAuth.tsx b/app/client/src/pages/UserAuth/ThirdPartyAuth.tsx
index cb9077bcb631..496e61d413ac 100644
--- a/app/client/src/pages/UserAuth/ThirdPartyAuth.tsx
+++ b/app/client/src/pages/UserAuth/ThirdPartyAuth.tsx
@@ -6,9 +6,9 @@ import type { EventName } from "ee/utils/analyticsUtilTypes";
import AnalyticsUtil from "ee/utils/AnalyticsUtil";
import { useLocation } from "react-router-dom";
import { Button } from "@appsmith/ads";
-import { isTenantConfig } from "ee/utils/adminSettingsHelpers";
+import { isOrganizationConfig } from "ee/utils/adminSettingsHelpers";
import { useSelector } from "react-redux";
-import { getTenantConfig } from "ee/selectors/tenantSelectors";
+import { getOrganizationConfig } from "ee/selectors/organizationSelectors";
const ThirdPartyAuthWrapper = styled.div`
display: flex;
@@ -36,7 +36,7 @@ function SocialLoginButton(props: {
url: string;
type: SignInType;
}) {
- const tenantConfiguration = useSelector(getTenantConfig);
+ const organizationConfiguration = useSelector(getOrganizationConfig);
const location = useLocation();
const queryParams = new URLSearchParams(location.search);
let url = props.url;
@@ -48,8 +48,8 @@ function SocialLoginButton(props: {
let buttonLabel = props.name;
- if (props.name && isTenantConfig(props.name)) {
- buttonLabel = tenantConfiguration[props.name];
+ if (props.name && isOrganizationConfig(props.name)) {
+ buttonLabel = organizationConfiguration[props.name];
}
return (
diff --git a/app/client/src/pages/UserAuth/index.tsx b/app/client/src/pages/UserAuth/index.tsx
index 2ab6a60496a0..f7d948ef3a0b 100644
--- a/app/client/src/pages/UserAuth/index.tsx
+++ b/app/client/src/pages/UserAuth/index.tsx
@@ -17,7 +17,7 @@ import VerificationError from "./VerificationError";
import FooterLinks from "./FooterLinks";
import { useIsMobileDevice } from "utils/hooks/useDeviceDetect";
import { getAssetUrl } from "ee/utils/airgapHelpers";
-import { getTenantConfig } from "ee/selectors/tenantSelectors";
+import { getOrganizationConfig } from "ee/selectors/organizationSelectors";
import { getAppsmithConfigs } from "ee/configs";
const SentryRoute = Sentry.withSentryRouting(Route);
@@ -29,7 +29,7 @@ export function UserAuth() {
getThemeDetails(state, ThemeMode.LIGHT),
);
const isMobileDevice = useIsMobileDevice();
- const tenantConfig = useSelector(getTenantConfig);
+ const organizationConfig = useSelector(getOrganizationConfig);
const { cloudHosting } = getAppsmithConfigs();
return (
@@ -43,7 +43,7 @@ export function UserAuth() {
{isMobileDevice && (
)}
diff --git a/app/client/src/pages/UserProfile/General.tsx b/app/client/src/pages/UserProfile/General.tsx
index 5ba9786e2f2e..b85ddd54a19d 100644
--- a/app/client/src/pages/UserProfile/General.tsx
+++ b/app/client/src/pages/UserProfile/General.tsx
@@ -18,7 +18,7 @@ import { ANONYMOUS_USERNAME } from "constants/userConstants";
import { ALL_LANGUAGE_CHARACTERS_REGEX } from "constants/Regex";
import { createMessage } from "@appsmith/ads-old";
import { notEmptyValidator } from "@appsmith/ads-old";
-import { getIsFormLoginEnabled } from "ee/selectors/tenantSelectors";
+import { getIsFormLoginEnabled } from "ee/selectors/organizationSelectors";
const nameValidator = (
value: string,
diff --git a/app/client/src/pages/UserProfile/index.test.tsx b/app/client/src/pages/UserProfile/index.test.tsx
index d938ffd0bd3c..9e1ec87d30a4 100644
--- a/app/client/src/pages/UserProfile/index.test.tsx
+++ b/app/client/src/pages/UserProfile/index.test.tsx
@@ -17,8 +17,8 @@ import Login from "pages/UserAuth/Login";
const defaultStoreState = {
...unitTestBaseMockStore,
- tenant: {
- tenantConfiguration: {},
+ organization: {
+ organizationConfiguration: {},
},
entities: {
...unitTestBaseMockStore.entities,
diff --git a/app/client/src/pages/common/ErrorPageHeader.tsx b/app/client/src/pages/common/ErrorPageHeader.tsx
index 01ce8637a9b6..50666b9caade 100644
--- a/app/client/src/pages/common/ErrorPageHeader.tsx
+++ b/app/client/src/pages/common/ErrorPageHeader.tsx
@@ -13,7 +13,7 @@ import ProfileDropdown from "./ProfileDropdown";
import { flushErrorsAndRedirect, flushErrors } from "actions/errorActions";
import { getSafeCrash } from "selectors/errorSelectors";
import { Indices } from "constants/Layers";
-import { getTenantConfig } from "ee/selectors/tenantSelectors";
+import { getOrganizationConfig } from "ee/selectors/organizationSelectors";
import { getSelectedAppTheme } from "selectors/appThemingSelectors";
import { NAVIGATION_SETTINGS } from "constants/AppConstants";
import { get } from "lodash";
@@ -54,7 +54,7 @@ interface ErrorPageHeaderProps {
export function ErrorPageHeader(props: ErrorPageHeaderProps) {
const { flushErrors, flushErrorsAndRedirect, safeCrash, user } = props;
const location = useLocation();
- const tenantConfig = useSelector(getTenantConfig);
+ const organizationConfig = useSelector(getOrganizationConfig);
const queryParams = new URLSearchParams(location.search);
let loginUrl = AUTH_LOGIN_URL;
const redirectUrl = queryParams.get("redirectUrl");
@@ -77,7 +77,7 @@ export function ErrorPageHeader(props: ErrorPageHeaderProps) {
return (
- {tenantConfig.brandLogoUrl && (
+ {organizationConfig.brandLogoUrl && (
{
@@ -88,7 +88,7 @@ export function ErrorPageHeader(props: ErrorPageHeaderProps) {
)}
diff --git a/app/client/src/pages/common/ErrorPages/Page.tsx b/app/client/src/pages/common/ErrorPages/Page.tsx
index 35b90d2b4339..0d4743305c0b 100644
--- a/app/client/src/pages/common/ErrorPages/Page.tsx
+++ b/app/client/src/pages/common/ErrorPages/Page.tsx
@@ -1,6 +1,6 @@
import React from "react";
import { useSelector } from "react-redux";
-import { getTenantConfig } from "ee/selectors/tenantSelectors";
+import { getOrganizationConfig } from "ee/selectors/organizationSelectors";
import { getComplementaryGrayscaleColor } from "widgets/WidgetUtils";
import styled from "styled-components";
import type { PageErrorMessageProps } from "./Components/PageErrorMessage";
@@ -31,8 +31,8 @@ interface PageProps {
function Page(props: PageProps) {
const { cta, description, errorCode, errorIcon, title } = props;
- const tenantConfig = useSelector(getTenantConfig);
- const backgroundColor = tenantConfig.brandColors.background;
+ const organizationConfig = useSelector(getOrganizationConfig);
+ const backgroundColor = organizationConfig.brandColors.background;
const textColor = getComplementaryGrayscaleColor(backgroundColor);
return (
diff --git a/app/client/src/pages/common/MobileSidebar.tsx b/app/client/src/pages/common/MobileSidebar.tsx
index 299d98717267..3d89938e2666 100644
--- a/app/client/src/pages/common/MobileSidebar.tsx
+++ b/app/client/src/pages/common/MobileSidebar.tsx
@@ -19,7 +19,7 @@ import {
} from "ee/constants/messages";
import { getAppsmithConfigs } from "ee/configs";
import { howMuchTimeBeforeText } from "utils/helpers";
-import { getTenantPermissions } from "ee/selectors/tenantSelectors";
+import { getOrganizationPermissions } from "ee/selectors/organizationSelectors";
import { DISCORD_URL } from "constants/ThirdPartyConstants";
import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
import { FEATURE_FLAG } from "ee/entities/FeatureFlag";
@@ -85,7 +85,7 @@ const LeftPaneVersionData = styled.div`
export default function MobileSideBar(props: MobileSideBarProps) {
const user = useSelector(getCurrentUser);
- const tenantPermissions = useSelector(getTenantPermissions);
+ const organizationPermissions = useSelector(getOrganizationPermissions);
const { appVersion } = getAppsmithConfigs();
const howMuchTimeBefore = howMuchTimeBeforeText(appVersion.releaseDate);
const isFeatureEnabled = useFeatureFlag(FEATURE_FLAG.license_gac_enabled);
@@ -116,7 +116,7 @@ export default function MobileSideBar(props: MobileSideBarProps) {
path: getAdminSettingsPath(
isFeatureEnabled,
user?.isSuperUser,
- tenantPermissions,
+ organizationPermissions,
),
});
}}
diff --git a/app/client/src/pages/common/PageHeader.tsx b/app/client/src/pages/common/PageHeader.tsx
index 80e2c01499d6..522eeddd4b29 100644
--- a/app/client/src/pages/common/PageHeader.tsx
+++ b/app/client/src/pages/common/PageHeader.tsx
@@ -8,7 +8,7 @@ import type { AppState } from "ee/reducers";
import type { User } from "constants/userConstants";
import { useIsMobileDevice } from "utils/hooks/useDeviceDetect";
import { getTemplateNotificationSeenAction } from "actions/templateActions";
-import { shouldShowLicenseBanner } from "ee/selectors/tenantSelectors";
+import { shouldShowLicenseBanner } from "ee/selectors/organizationSelectors";
import { Banner } from "ee/utils/licenseHelpers";
import bootIntercom from "utils/bootIntercom";
import EntitySearchBar from "pages/common/SearchBar/EntitySearchBar";
diff --git a/app/client/src/pages/common/PageWrapper.tsx b/app/client/src/pages/common/PageWrapper.tsx
index b7a7ba755a47..4ce4f1bd4c6c 100644
--- a/app/client/src/pages/common/PageWrapper.tsx
+++ b/app/client/src/pages/common/PageWrapper.tsx
@@ -8,7 +8,7 @@ import {
} from "ee/utils/BusinessFeatures/brandingPageHelpers";
import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
import { FEATURE_FLAG } from "ee/entities/FeatureFlag";
-import { getTenantConfig } from "ee/selectors/tenantSelectors";
+import { getOrganizationConfig } from "ee/selectors/organizationSelectors";
import { useSelector } from "react-redux";
export const Wrapper = styled.section<{ isFixed?: boolean }>`
@@ -68,8 +68,8 @@ export function PageWrapper(props: PageWrapperProps) {
const isBrandingEnabled = useFeatureFlag(
FEATURE_FLAG?.license_branding_enabled,
);
- const tentantConfig = useSelector(getTenantConfig);
- const { instanceName } = tentantConfig;
+ const organizationConfig = useSelector(getOrganizationConfig);
+ const { instanceName } = organizationConfig;
const titleSuffix = useMemo(
() => getHTMLPageTitle(isBrandingEnabled, instanceName),
diff --git a/app/client/src/pages/common/SearchBar/EntitySearchBar.tsx b/app/client/src/pages/common/SearchBar/EntitySearchBar.tsx
index 71e2c00ce521..ada799f13174 100644
--- a/app/client/src/pages/common/SearchBar/EntitySearchBar.tsx
+++ b/app/client/src/pages/common/SearchBar/EntitySearchBar.tsx
@@ -10,7 +10,7 @@ import EditorButton from "components/editorComponents/Button";
import history from "utils/history";
import ProductUpdatesModal from "pages/Applications/ProductUpdatesModal";
import { useDispatch, useSelector } from "react-redux";
-import { getTenantConfig } from "ee/selectors/tenantSelectors";
+import { getOrganizationConfig } from "ee/selectors/organizationSelectors";
import {
getCurrentApplication,
getCurrentApplicationIdForCreateNewApp,
@@ -68,7 +68,7 @@ function EntitySearchBar(props: any) {
useState(false);
const [searchedPackages, setSearchedPackages] = useState([]);
- const tenantConfig = useSelector(getTenantConfig);
+ const organizationConfig = useSelector(getOrganizationConfig);
const isCreateNewAppFlow = useSelector(
getCurrentApplicationIdForCreateNewApp,
);
@@ -243,12 +243,12 @@ function EntitySearchBar(props: any) {
))}
- {tenantConfig.brandLogoUrl && (
+ {organizationConfig.brandLogoUrl && (
)}
diff --git a/app/client/src/pages/common/SearchBar/HomepageHeaderAction.tsx b/app/client/src/pages/common/SearchBar/HomepageHeaderAction.tsx
index 8d259e9d7ae6..50610c34a564 100644
--- a/app/client/src/pages/common/SearchBar/HomepageHeaderAction.tsx
+++ b/app/client/src/pages/common/SearchBar/HomepageHeaderAction.tsx
@@ -10,7 +10,7 @@ import {
} from "ee/constants/messages";
import { FEATURE_FLAG } from "ee/entities/FeatureFlag";
import { getCurrentApplicationIdForCreateNewApp } from "ee/selectors/applicationSelectors";
-import { getTenantPermissions } from "ee/selectors/tenantSelectors";
+import { getOrganizationPermissions } from "ee/selectors/organizationSelectors";
import {
getAdminSettingsPath,
getShowAdminSettings,
@@ -61,7 +61,7 @@ const HomepageHeaderAction = ({
}) => {
const dispatch = useDispatch();
const isFeatureEnabled = useFeatureFlag(FEATURE_FLAG.license_gac_enabled);
- const tenantPermissions = useSelector(getTenantPermissions);
+ const organizationPermissions = useSelector(getOrganizationPermissions);
const isCreateNewAppFlow = useSelector(
getCurrentApplicationIdForCreateNewApp,
);
@@ -87,7 +87,7 @@ const HomepageHeaderAction = ({
path: getAdminSettingsPath(
isFeatureEnabled,
user?.isSuperUser,
- tenantPermissions,
+ organizationPermissions,
),
});
}}
diff --git a/app/client/src/pages/setup/SignupSuccess.tsx b/app/client/src/pages/setup/SignupSuccess.tsx
index 3289f58f0667..3efe3f6ff30f 100644
--- a/app/client/src/pages/setup/SignupSuccess.tsx
+++ b/app/client/src/pages/setup/SignupSuccess.tsx
@@ -8,7 +8,7 @@ import { getCurrentUser } from "selectors/usersSelectors";
import UserWelcomeScreen from "pages/setup/UserWelcomeScreen";
import { Center } from "pages/setup/common";
import { Spinner } from "@appsmith/ads";
-import { isValidLicense } from "ee/selectors/tenantSelectors";
+import { isValidLicense } from "ee/selectors/organizationSelectors";
import { redirectUserAfterSignup } from "ee/utils/signupHelpers";
import { setUserSignedUpFlag } from "utils/storage";
import AnalyticsUtil from "ee/utils/AnalyticsUtil";
diff --git a/app/client/src/pages/workspace/__tests__/settings.test.tsx b/app/client/src/pages/workspace/__tests__/settings.test.tsx
index 464d800eb985..cdf9124e08ae 100644
--- a/app/client/src/pages/workspace/__tests__/settings.test.tsx
+++ b/app/client/src/pages/workspace/__tests__/settings.test.tsx
@@ -146,7 +146,7 @@ const mockWorkspaceData = {
],
slug: "sangeeth-s-apps",
isAutoGeneratedWorkspace: true,
- tenantId: "62a57f3c30ad39335c4dbffe",
+ organizationId: "62a57f3c30ad39335c4dbffe",
logoUrl: "/api/v1/assets/null",
new: false,
};
diff --git a/app/client/src/reducers/uiReducers/errorReducer.tsx b/app/client/src/reducers/uiReducers/errorReducer.tsx
index f62b5930b172..bf3e542a1ae7 100644
--- a/app/client/src/reducers/uiReducers/errorReducer.tsx
+++ b/app/client/src/reducers/uiReducers/errorReducer.tsx
@@ -42,11 +42,12 @@ const errorReducer = createReducer(initialState, {
[ReduxActionTypes.FLUSH_ERRORS]: () => {
return initialState;
},
- [ReduxActionTypes.FETCH_CURRENT_TENANT_CONFIG_SUCCESS]: (
+ [ReduxActionTypes.FETCH_CURRENT_ORGANIZATION_CONFIG_SUCCESS]: (
state: ErrorReduxState,
) => {
if (
- state?.currentError?.sourceAction === "FETCH_CURRENT_TENANT_CONFIG_ERROR"
+ state?.currentError?.sourceAction ===
+ "FETCH_CURRENT_ORGANIZATION_CONFIG_ERROR"
) {
return {
...state,
@@ -56,8 +57,12 @@ const errorReducer = createReducer(initialState, {
return state;
},
- [ReduxActionTypes.UPDATE_TENANT_CONFIG_SUCCESS]: (state: ErrorReduxState) => {
- if (state?.currentError?.sourceAction === "UPDATE_TENANT_CONFIG_ERROR") {
+ [ReduxActionTypes.UPDATE_ORGANIZATION_CONFIG_SUCCESS]: (
+ state: ErrorReduxState,
+ ) => {
+ if (
+ state?.currentError?.sourceAction === "UPDATE_ORGANIZATION_CONFIG_ERROR"
+ ) {
return {
...state,
...initialState,
diff --git a/app/client/src/sagas/EvaluationsSaga.test.ts b/app/client/src/sagas/EvaluationsSaga.test.ts
index 9411d9a072ba..5aa1ca60bc70 100644
--- a/app/client/src/sagas/EvaluationsSaga.test.ts
+++ b/app/client/src/sagas/EvaluationsSaga.test.ts
@@ -24,7 +24,7 @@ import {
} from "ee/constants/ReduxActionConstants";
import { fetchPluginFormConfigsSuccess } from "actions/pluginActions";
import { createJSCollectionSuccess } from "actions/jsActionActions";
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import {
getApplicationLastDeployedAt,
getCurrentApplicationId,
diff --git a/app/client/src/sagas/EvaluationsSaga.ts b/app/client/src/sagas/EvaluationsSaga.ts
index 302629efdfe0..8bbe2180b365 100644
--- a/app/client/src/sagas/EvaluationsSaga.ts
+++ b/app/client/src/sagas/EvaluationsSaga.ts
@@ -118,7 +118,7 @@ import {
getCurrentApplicationId,
getCurrentPageId,
} from "selectors/editorSelectors";
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import type {
AffectedJSObjects,
EvaluationReduxAction,
diff --git a/app/client/src/sagas/InitSagas.ts b/app/client/src/sagas/InitSagas.ts
index 8ad5f7ff6cc9..3b3f635ec929 100644
--- a/app/client/src/sagas/InitSagas.ts
+++ b/app/client/src/sagas/InitSagas.ts
@@ -66,7 +66,7 @@ import { getDebuggerErrors } from "selectors/debuggerSelectors";
import { deleteErrorLog } from "actions/debuggerActions";
import { getCurrentUser } from "actions/authActions";
-import { getCurrentTenant } from "ee/actions/tenantActions";
+import { getCurrentOrganization } from "ee/actions/organizationActions";
import {
fetchFeatureFlagsInit,
fetchProductAlertInit,
@@ -106,7 +106,7 @@ export interface ReduxURLChangeAction {
export interface DeployConsolidatedApi {
productAlert: ApiResponse;
- tenantConfig: ApiResponse;
+ organizationConfig: ApiResponse;
featureFlags: ApiResponse;
userProfile: ApiResponse;
pages: FetchApplicationResponse;
@@ -120,7 +120,7 @@ export interface DeployConsolidatedApi {
export interface EditConsolidatedApi {
productAlert: ApiResponse;
- tenantConfig: ApiResponse;
+ organizationConfig: ApiResponse;
featureFlags: ApiResponse;
userProfile: ApiResponse;
pages: FetchApplicationResponse;
@@ -285,8 +285,13 @@ export function* getInitResponses({
throw new PageNotFoundError(`Cannot find page with base id: ${basePageId}`);
}
- const { featureFlags, productAlert, tenantConfig, userProfile, ...rest } =
- response || {};
+ const {
+ featureFlags,
+ organizationConfig,
+ productAlert,
+ userProfile,
+ ...rest
+ } = response || {};
//actions originating from INITIALIZE_CURRENT_PAGE should update user details
//other actions are not necessary
@@ -298,7 +303,7 @@ export function* getInitResponses({
yield put(fetchFeatureFlagsInit(featureFlags));
- yield put(getCurrentTenant(false, tenantConfig));
+ yield put(getCurrentOrganization(false, organizationConfig));
yield put(fetchProductAlertInit(productAlert));
yield call(
diff --git a/app/client/src/sagas/PostEvaluationSagas.ts b/app/client/src/sagas/PostEvaluationSagas.ts
index 86811acf8915..9d705214da76 100644
--- a/app/client/src/sagas/PostEvaluationSagas.ts
+++ b/app/client/src/sagas/PostEvaluationSagas.ts
@@ -36,7 +36,7 @@ import type { ActionEntityConfig } from "ee/entities/DataTree/types";
import type { SuccessfulBindings } from "utils/SuccessfulBindingsMap";
import SuccessfulBindingMap from "utils/SuccessfulBindingsMap";
import { getCurrentWorkspaceId } from "ee/selectors/selectedWorkspaceSelectors";
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import type { EvalTreeResponseData } from "workers/Evaluation/types";
import { endSpan, startRootSpan } from "instrumentation/generateTraces";
import { getJSActionPathNameToDisplay } from "ee/utils/actionExecutionUtils";
diff --git a/app/client/src/selectors/propertyPaneSelectors.tsx b/app/client/src/selectors/propertyPaneSelectors.tsx
index 18dde0b5a3f7..d0d341991092 100644
--- a/app/client/src/selectors/propertyPaneSelectors.tsx
+++ b/app/client/src/selectors/propertyPaneSelectors.tsx
@@ -16,7 +16,7 @@ import {
isPathDynamicTrigger,
} from "utils/DynamicBindingUtils";
import { generateClassName } from "utils/generators";
-import { getGoogleMapsApiKey } from "ee/selectors/tenantSelectors";
+import { getGoogleMapsApiKey } from "ee/selectors/organizationSelectors";
import type { WidgetProps } from "widgets/BaseWidget";
import { getCanvasWidgets } from "ee/selectors/entitiesSelector";
import { getLastSelectedWidget, getSelectedWidgets } from "./ui";
diff --git a/app/client/src/usagePulse/utils.ts b/app/client/src/usagePulse/utils.ts
index 29ed44891a5a..c4270a80f12d 100644
--- a/app/client/src/usagePulse/utils.ts
+++ b/app/client/src/usagePulse/utils.ts
@@ -6,7 +6,7 @@ import { getAppMode } from "ee/selectors/entitiesSelector";
import store from "store";
import AnalyticsUtil from "ee/utils/AnalyticsUtil";
import { FALLBACK_KEY } from "ee/constants/UsagePulse";
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
//TODO (Dipyaman): We should return a promise that will get resolved only on success or rejected after the retries
export const fetchWithRetry = (config: {
diff --git a/app/client/src/utils/BrandingUtils.ts b/app/client/src/utils/BrandingUtils.ts
index d3756991ef52..5b3d2fac00a0 100644
--- a/app/client/src/utils/BrandingUtils.ts
+++ b/app/client/src/utils/BrandingUtils.ts
@@ -209,13 +209,13 @@ export const faivconImageValidator = (
// NOTE: the reason why the json parsing is out of selector is we don't
// want to do the parsing everytime selector is called
-let cachedTenantConfigParsed = {};
-const cachedTenantConfig = localStorage.getItem("tenantConfig");
+let cachedOrganizationConfigParsed = {};
+const cachedOrganizationConfig = localStorage.getItem("organizationConfig");
try {
- if (cachedTenantConfig) {
- cachedTenantConfigParsed = JSON.parse(cachedTenantConfig);
+ if (cachedOrganizationConfig) {
+ cachedOrganizationConfigParsed = JSON.parse(cachedOrganizationConfig);
}
} catch (e) {}
-export { cachedTenantConfigParsed };
+export { cachedOrganizationConfigParsed };
diff --git a/app/client/src/utils/hooks/useBrandingTheme.ts b/app/client/src/utils/hooks/useBrandingTheme.ts
index 12d6df6d84d3..df0a755cb904 100644
--- a/app/client/src/utils/hooks/useBrandingTheme.ts
+++ b/app/client/src/utils/hooks/useBrandingTheme.ts
@@ -1,13 +1,13 @@
import { useSelector } from "react-redux";
-import { getTenantConfig } from "ee/selectors/tenantSelectors";
+import { getOrganizationConfig } from "ee/selectors/organizationSelectors";
import { useLayoutEffect } from "react";
import { getAssetUrl } from "ee/utils/airgapHelpers";
import { APPSMITH_BRAND_PRIMARY_COLOR } from "utils/BrandingUtils";
import { LightModeTheme } from "@appsmith/wds-theming";
const useBrandingTheme = () => {
- const config = useSelector(getTenantConfig);
+ const config = useSelector(getOrganizationConfig);
let activeColor: string | undefined = undefined;
if (
diff --git a/app/client/src/utils/hooks/useOnUpgrade.ts b/app/client/src/utils/hooks/useOnUpgrade.ts
index 29292d2b9c62..372c93932138 100644
--- a/app/client/src/utils/hooks/useOnUpgrade.ts
+++ b/app/client/src/utils/hooks/useOnUpgrade.ts
@@ -1,5 +1,5 @@
import { useSelector } from "react-redux";
-import { getInstanceId } from "ee/selectors/tenantSelectors";
+import { getInstanceId } from "ee/selectors/organizationSelectors";
import {
CUSTOMER_PORTAL_URL_WITH_PARAMS,
PRICING_PAGE_URL,
diff --git a/app/client/src/widgets/withWidgetProps.tsx b/app/client/src/widgets/withWidgetProps.tsx
index 5a0f13d6c19d..7781e3131907 100644
--- a/app/client/src/widgets/withWidgetProps.tsx
+++ b/app/client/src/widgets/withWidgetProps.tsx
@@ -37,7 +37,7 @@ import type { WidgetEntityConfig } from "ee/entities/DataTree/types";
import { Positioning } from "layoutSystems/common/utils/constants";
import { isAutoHeightEnabledForWidget } from "./WidgetUtils";
import { CANVAS_DEFAULT_MIN_HEIGHT_PX } from "constants/AppConstants";
-import { getGoogleMapsApiKey } from "ee/selectors/tenantSelectors";
+import { getGoogleMapsApiKey } from "ee/selectors/organizationSelectors";
import ConfigTreeActions from "utils/configTree";
import { getSelectedWidgetAncestry } from "../selectors/widgetSelectors";
import { getWidgetMinMaxDimensionsInPixel } from "layoutSystems/autolayout/utils/flexWidgetUtils";
diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/OrganizationSpan.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/OrganizationSpan.java
new file mode 100644
index 000000000000..a9c025d5794a
--- /dev/null
+++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/OrganizationSpan.java
@@ -0,0 +1,5 @@
+package com.appsmith.external.constants.spans;
+
+import com.appsmith.external.constants.spans.ce.OrganizationSpanCE;
+
+public class OrganizationSpan extends OrganizationSpanCE {}
diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/TenantSpan.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/TenantSpan.java
deleted file mode 100644
index 488238e251ec..000000000000
--- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/TenantSpan.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.appsmith.external.constants.spans;
-
-import com.appsmith.external.constants.spans.ce.TenantSpanCE;
-
-public class TenantSpan extends TenantSpanCE {}
diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ConsolidatedApiSpanNamesCE.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ConsolidatedApiSpanNamesCE.java
index 9e2ac07b3ee8..6b8619565624 100644
--- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ConsolidatedApiSpanNamesCE.java
+++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/ConsolidatedApiSpanNamesCE.java
@@ -15,7 +15,7 @@ public class ConsolidatedApiSpanNamesCE {
public static final String CONSOLIDATED_API_ROOT_VIEW = CONSOLIDATED_API_PREFIX + VIEW + ROOT;
public static final String USER_PROFILE_SPAN = "user_profile";
public static final String FEATURE_FLAG_SPAN = "feature_flag";
- public static final String TENANT_SPAN = "tenant";
+ public static final String ORGANIZATION_SPAN = "tenant";
public static final String PRODUCT_ALERT_SPAN = "product_alert";
public static final String APPLICATION_ID_SPAN = "application_id";
public static final String PAGES_SPAN = "pages";
diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/OrganizationSpanCE.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/OrganizationSpanCE.java
new file mode 100644
index 000000000000..1ce36010fd97
--- /dev/null
+++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/OrganizationSpanCE.java
@@ -0,0 +1,11 @@
+package com.appsmith.external.constants.spans.ce;
+
+import static com.appsmith.external.constants.spans.BaseSpan.APPSMITH_SPAN_PREFIX;
+
+public class OrganizationSpanCE {
+ public static final String ORGANIZATION_SPAN = APPSMITH_SPAN_PREFIX + "tenant.";
+ public static final String FETCH_DEFAULT_ORGANIZATION_SPAN = ORGANIZATION_SPAN + "fetch_default_tenant";
+ public static final String FETCH_ORGANIZATION_CACHE_POST_DESERIALIZATION_ERROR_SPAN =
+ ORGANIZATION_SPAN + "fetch_tenant_cache_post_deserialization_error";
+ public static final String FETCH_ORGANIZATION_FROM_DB_SPAN = ORGANIZATION_SPAN + "fetch_tenant_from_db";
+}
diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/TenantSpanCE.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/TenantSpanCE.java
deleted file mode 100644
index 104561730b0a..000000000000
--- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/TenantSpanCE.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.appsmith.external.constants.spans.ce;
-
-import static com.appsmith.external.constants.spans.BaseSpan.APPSMITH_SPAN_PREFIX;
-
-public class TenantSpanCE {
- public static final String TENANT_SPAN = APPSMITH_SPAN_PREFIX + "tenant.";
- public static final String FETCH_DEFAULT_TENANT_SPAN = TENANT_SPAN + "fetch_default_tenant";
- public static final String FETCH_TENANT_CACHE_POST_DESERIALIZATION_ERROR_SPAN =
- TENANT_SPAN + "fetch_tenant_cache_post_deserialization_error";
- public static final String FETCH_TENANT_FROM_DB_SPAN = TENANT_SPAN + "fetch_tenant_from_db";
-}
diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/dtos/ExecuteActionDTO.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/dtos/ExecuteActionDTO.java
index 1704e0e1cf49..b524a3a2c8a6 100644
--- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/dtos/ExecuteActionDTO.java
+++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/dtos/ExecuteActionDTO.java
@@ -20,7 +20,7 @@ public class ExecuteActionDTO {
String datasourceId;
String workspaceId;
String instanceId;
- String tenantId;
+ String organizationId;
List params;
diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/enums/FeatureFlagEnum.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/enums/FeatureFlagEnum.java
index 0e47bb43b866..bde30a1ef674 100644
--- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/enums/FeatureFlagEnum.java
+++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/enums/FeatureFlagEnum.java
@@ -6,7 +6,7 @@ public enum FeatureFlagEnum {
TEST_FEATURE_1,
TEST_FEATURE_2,
TEST_FEATURE_3,
- TENANT_TEST_FEATURE,
+ ORGANIZATION_TEST_FEATURE,
// ------------------- End of features for testing -------------------------------------------------------------- //
// ------------------- These are actual feature flags meant to be used across the product ----------------------- //
diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/TriggerRequestDTO.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/TriggerRequestDTO.java
index 6c1aae7faeba..01284535afe7 100644
--- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/TriggerRequestDTO.java
+++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/TriggerRequestDTO.java
@@ -37,7 +37,7 @@ public class TriggerRequestDTO {
String datasourceId;
String actionId;
String instanceId;
- String tenantId;
+ String organizationId;
// this param is expected to be sent by the client if needed
String workspaceId;
diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/plugins/PluginExecutor.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/plugins/PluginExecutor.java
index 70acc28eeb9d..5f9cdb89d1b3 100644
--- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/plugins/PluginExecutor.java
+++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/plugins/PluginExecutor.java
@@ -255,12 +255,10 @@ default Mono executeParameterizedWithMetrics(
}
// TODO: Following methods of executeParameterizedWithFlags, executeParameterizedWithMetricsAndFlags,
- // triggerWithFlags are
- // added
- // to support feature flags in the plugin modules. Current implementation of featureFlagService is only available in
- // server module
- // and not available in any of the plugin modules due to dependencies on SessionUserService, TenantService etc.
- // Hence, these methods are added to support feature flags in the plugin modules.
+ // triggerWithFlags are added to support feature flags in the plugin modules. Current implementation of
+ // featureFlagService is only available in server module and not available in any of the plugin modules due to
+ // dependencies on SessionUserService, OrganizationService etc. Hence, these methods are added to support feature
+ // flags in the plugin modules.
// Ideal solution would be to move featureFlagService and its dependencies to the shared interface module
// But this is a bigger change and will be done in future. Current change of passing flags was done to resolve
// release blocker
diff --git a/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/constants/AppsmithAiConstants.java b/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/constants/AppsmithAiConstants.java
index 384d297f0624..e8b0e1570816 100644
--- a/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/constants/AppsmithAiConstants.java
+++ b/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/constants/AppsmithAiConstants.java
@@ -32,7 +32,7 @@ public class AppsmithAiConstants {
public static final String ACTION_ID = "actionId";
public static final String WORKSPACE_ID = "workspaceId";
public static final String INSTANCE_ID = "instanceId";
- public static final String TENANT_ID = "tenantId";
+ public static final String ORGANIZATION_ID = "organizationId";
public static final String SOURCE_DETAILS = "sourceDetail";
public static final String PERIOD_DELIMITER = ".";
diff --git a/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/dtos/SourceDetails.java b/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/dtos/SourceDetails.java
index 34fdbc2dc6cb..75b554fa020c 100644
--- a/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/dtos/SourceDetails.java
+++ b/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/dtos/SourceDetails.java
@@ -9,14 +9,14 @@ public class SourceDetails {
String workspaceId;
String datasourceId;
String instanceId;
- String tenantId;
+ String organizationId;
public static SourceDetails createSourceDetails(ExecuteActionDTO executeActionDTO) {
SourceDetails sourceDetails = new SourceDetails();
sourceDetails.setWorkspaceId(executeActionDTO.getWorkspaceId());
sourceDetails.setDatasourceId(executeActionDTO.getDatasourceId());
sourceDetails.setInstanceId(executeActionDTO.getInstanceId());
- sourceDetails.setTenantId(executeActionDTO.getTenantId());
+ sourceDetails.setOrganizationId(executeActionDTO.getOrganizationId());
return sourceDetails;
}
@@ -25,7 +25,7 @@ public static SourceDetails createSourceDetails(TriggerRequestDTO triggerRequest
sourceDetails.setWorkspaceId(triggerRequestDTO.getWorkspaceId());
sourceDetails.setDatasourceId(triggerRequestDTO.getDatasourceId());
sourceDetails.setInstanceId(triggerRequestDTO.getInstanceId());
- sourceDetails.setTenantId(triggerRequestDTO.getTenantId());
+ sourceDetails.setOrganizationId(triggerRequestDTO.getOrganizationId());
return sourceDetails;
}
}
diff --git a/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/utils/HeadersUtil.java b/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/utils/HeadersUtil.java
index 9cc8562a0309..965e11a53fe2 100644
--- a/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/utils/HeadersUtil.java
+++ b/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/utils/HeadersUtil.java
@@ -6,7 +6,7 @@
import static com.external.plugins.constants.AppsmithAiConstants.ACTION_ID;
import static com.external.plugins.constants.AppsmithAiConstants.DATASOURCE_ID;
import static com.external.plugins.constants.AppsmithAiConstants.INSTANCE_ID;
-import static com.external.plugins.constants.AppsmithAiConstants.TENANT_ID;
+import static com.external.plugins.constants.AppsmithAiConstants.ORGANIZATION_ID;
import static com.external.plugins.constants.AppsmithAiConstants.WORKSPACE_ID;
public class HeadersUtil {
@@ -46,9 +46,9 @@ public static String createSourceDetailsHeader(SourceDetails sourceDetails) {
+ COLON
+ sourceDetails.getWorkspaceId()
+ SEMI_COLON
- + TENANT_ID
+ + ORGANIZATION_ID
+ COLON
- + sourceDetails.getTenantId()
+ + sourceDetails.getOrganizationId()
+ SEMI_COLON
+ INSTANCE_ID
+ COLON
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/AclPermission.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/AclPermission.java
index 1d718b9f17f1..9ee3717cc9d0 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/AclPermission.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/AclPermission.java
@@ -7,8 +7,8 @@
import com.appsmith.server.domains.Config;
import com.appsmith.server.domains.NewAction;
import com.appsmith.server.domains.NewPage;
+import com.appsmith.server.domains.Organization;
import com.appsmith.server.domains.PermissionGroup;
-import com.appsmith.server.domains.Tenant;
import com.appsmith.server.domains.Theme;
import com.appsmith.server.domains.User;
import com.appsmith.server.domains.Workspace;
@@ -120,8 +120,10 @@ public enum AclPermission {
@Deprecated
READ_PERMISSION_GROUPS("read:permissionGroups", PermissionGroup.class),
- // Manage tenant permissions
- MANAGE_TENANT("manage:tenants", Tenant.class),
+ // Manage organization permissions
+ MANAGE_ORGANIZATION("manage:organization", Organization.class),
+ @Deprecated(forRemoval = true, since = "v1.62")
+ MANAGE_TENANT("manage:tenant", Organization.class),
CONNECT_TO_GIT("connectToGit:applications", Application.class),
MANAGE_PROTECTED_BRANCHES("manageProtectedBranches:applications", Application.class),
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/AppsmithRole.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/AppsmithRole.java
index 2f71537d7de4..85f0a91176be 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/AppsmithRole.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/acl/AppsmithRole.java
@@ -5,7 +5,7 @@
import java.util.Set;
import static com.appsmith.server.acl.AclPermission.DELETE_WORKSPACES;
-import static com.appsmith.server.acl.AclPermission.MANAGE_TENANT;
+import static com.appsmith.server.acl.AclPermission.MANAGE_ORGANIZATION;
import static com.appsmith.server.acl.AclPermission.MANAGE_WORKSPACES;
import static com.appsmith.server.acl.AclPermission.READ_WORKSPACES;
import static com.appsmith.server.acl.AclPermission.WORKSPACE_CREATE_APPLICATION;
@@ -62,7 +62,7 @@ public enum AppsmithRole {
WORKSPACE_READ_APPLICATIONS,
WORKSPACE_INVITE_USERS,
WORKSPACE_EXECUTE_DATASOURCES)),
- TENANT_ADMIN("", "", Set.of(MANAGE_TENANT)),
+ TENANT_ADMIN("", "", Set.of(MANAGE_ORGANIZATION)),
;
private Set permissions;
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/aspect/FeatureFlaggedMethodInvokerAspect.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/aspect/FeatureFlaggedMethodInvokerAspect.java
index 2216f66e8ce4..e0377b652b23 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/aspect/FeatureFlaggedMethodInvokerAspect.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/aspect/FeatureFlaggedMethodInvokerAspect.java
@@ -65,7 +65,7 @@ private Object invokeMethod(ProceedingJoinPoint joinPoint, FeatureFlagged annota
return featureFlagMono.flatMapMany(isSupported -> (Flux>) invokeMethod(isSupported, joinPoint, method));
}
// For non-reactive methods with feature flagging annotation we will be using the in memory feature flag cache
- // which is getting updated whenever the tenant feature flags are updated.
+ // which is getting updated whenever the organization feature flags are updated.
return invokeMethod(isFeatureFlagEnabled(flagName), joinPoint, method);
}
@@ -108,7 +108,7 @@ AppsmithException getInvalidAnnotationUsageException(Method method, String error
}
boolean isFeatureFlagEnabled(FeatureFlagEnum flagName) {
- CachedFeatures cachedFeatures = featureFlagService.getCachedTenantFeatureFlags();
+ CachedFeatures cachedFeatures = featureFlagService.getCachedOrganizationFeatureFlags();
return cachedFeatures != null
&& !CollectionUtils.isNullOrEmpty(cachedFeatures.getFeatures())
&& Boolean.TRUE.equals(cachedFeatures.getFeatures().get(flagName.name()));
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/AuthenticationSuccessHandler.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/AuthenticationSuccessHandler.java
index 66467580e46a..4d538b6e552e 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/AuthenticationSuccessHandler.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/AuthenticationSuccessHandler.java
@@ -8,8 +8,8 @@
import com.appsmith.server.repositories.WorkspaceRepository;
import com.appsmith.server.services.AnalyticsService;
import com.appsmith.server.services.ApplicationPageService;
+import com.appsmith.server.services.OrganizationService;
import com.appsmith.server.services.SessionUserService;
-import com.appsmith.server.services.TenantService;
import com.appsmith.server.services.UserDataService;
import com.appsmith.server.services.UserService;
import com.appsmith.server.services.WorkspaceService;
@@ -32,7 +32,7 @@ public AuthenticationSuccessHandler(
ApplicationPageService applicationPageService,
WorkspacePermission workspacePermission,
RateLimitService rateLimitService,
- TenantService tenantService,
+ OrganizationService organizationService,
UserService userService,
WorkspaceServiceHelper workspaceServiceHelper) {
super(
@@ -46,7 +46,7 @@ public AuthenticationSuccessHandler(
applicationPageService,
workspacePermission,
rateLimitService,
- tenantService,
+ organizationService,
userService,
workspaceServiceHelper);
}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/AuthenticationSuccessHandlerCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/AuthenticationSuccessHandlerCE.java
index 1b4054ddb248..c9a02b286a55 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/AuthenticationSuccessHandlerCE.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/AuthenticationSuccessHandlerCE.java
@@ -17,8 +17,8 @@
import com.appsmith.server.repositories.WorkspaceRepository;
import com.appsmith.server.services.AnalyticsService;
import com.appsmith.server.services.ApplicationPageService;
+import com.appsmith.server.services.OrganizationService;
import com.appsmith.server.services.SessionUserService;
-import com.appsmith.server.services.TenantService;
import com.appsmith.server.services.UserDataService;
import com.appsmith.server.services.UserService;
import com.appsmith.server.services.WorkspaceService;
@@ -65,14 +65,14 @@ public class AuthenticationSuccessHandlerCE implements ServerAuthenticationSucce
private final ApplicationPageService applicationPageService;
private final WorkspacePermission workspacePermission;
private final RateLimitService rateLimitService;
- private final TenantService tenantService;
+ private final OrganizationService organizationService;
private final UserService userService;
private final WorkspaceServiceHelper workspaceServiceHelper;
private Mono isVerificationRequired(String userEmail, String method) {
- Mono emailVerificationEnabledMono = tenantService
- .getTenantConfiguration()
- .map(tenant -> tenant.getTenantConfiguration().isEmailVerificationEnabled())
+ Mono emailVerificationEnabledMono = organizationService
+ .getOrganizationConfiguration()
+ .map(organization -> organization.getOrganizationConfiguration().isEmailVerificationEnabled())
.cache();
Mono userMono = userRepository.findByEmail(userEmail).cache();
@@ -80,7 +80,7 @@ private Mono isVerificationRequired(String userEmail, String method) {
if ("signup".equals(method)) {
verificationRequiredMono = emailVerificationEnabledMono.flatMap(emailVerificationEnabled -> {
- // email verification is not enabled at the tenant, so verification not required
+ // email verification is not enabled at the org, so verification not required
if (!TRUE.equals(emailVerificationEnabled)) {
return userMono.flatMap(user -> {
user.setEmailVerificationRequired(FALSE);
@@ -101,12 +101,12 @@ private Mono isVerificationRequired(String userEmail, String method) {
return Mono.just(FALSE);
} else {
return emailVerificationEnabledMono.flatMap(emailVerificationEnabled -> {
- // email verification not enabled at the tenant
+ // email verification not enabled at the org
if (!TRUE.equals(emailVerificationEnabled)) {
user.setEmailVerificationRequired(FALSE);
return userRepository.save(user).then(Mono.just(FALSE));
} else {
- // scenario when at the time of signup, the email verification was disabled at the tenant
+ // scenario when at the time of signup, the email verification was disabled at the org
// but later on turned on, now when this user logs in, it will not be prompted to verify
// as the configuration at time of signup is considered for any user.
// for old users, the login works as expected, without the need to verify
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/InstanceConfig.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/InstanceConfig.java
index 879780c0bb71..261286df2b33 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/InstanceConfig.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/InstanceConfig.java
@@ -61,17 +61,18 @@ public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
// Prefill the server cache with anonymous user permission group ids.
.then(cacheableRepositoryHelper.preFillAnonymousUserPermissionGroupIdsCache())
// Add cold publisher as we have dependency on the instance registration
- // TODO Update implementation to fetch license status for all the tenants once multi-tenancy is
+ // TODO Update implementation to fetch license status for all the organizations once multi-tenancy is
// introduced
.then(Mono.defer(instanceConfigHelper::isLicenseValid)
- // Ensure that the tenant feature flags are refreshed with the latest values after completing
+ // Ensure that the organization feature flags are refreshed with the latest values after
+ // completing
// the
// license verification process.
.flatMap(isValid -> {
log.debug(
"License verification completed with status: {}",
TRUE.equals(isValid) ? "valid" : "invalid");
- return instanceConfigHelper.updateCacheForTenantFeatureFlags();
+ return instanceConfigHelper.updateCacheForOrganizationFeatureFlags();
}));
try {
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/OrganizationConfig.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/OrganizationConfig.java
new file mode 100644
index 000000000000..49844825d2b5
--- /dev/null
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/OrganizationConfig.java
@@ -0,0 +1,47 @@
+package com.appsmith.server.configurations;
+
+import com.appsmith.server.constants.FieldName;
+import com.appsmith.server.domains.Organization;
+import com.appsmith.server.helpers.CollectionUtils;
+import com.appsmith.server.repositories.CacheableRepositoryHelper;
+import com.appsmith.server.repositories.OrganizationRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.event.ApplicationStartedEvent;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.annotation.Configuration;
+import reactor.core.publisher.Mono;
+
+import static com.appsmith.external.models.BaseDomain.policySetToMap;
+
+@Configuration
+@RequiredArgsConstructor
+@Slf4j
+public class OrganizationConfig implements ApplicationListener {
+
+ private final OrganizationRepository organizationRepository;
+ private final CacheableRepositoryHelper cacheableRepositoryHelper;
+
+ // Method to cleanup the cache and update the default organization policies if the policyMap is empty. This will
+ // make sure
+ // cache will be updated if we update the organization via startup DB migrations.
+ // As we have mocked the OrganizationService in the tests, we had to manually evict the cache and save the object to
+ // DB
+ private Mono cleanupAndUpdateRefreshDefaultOrganizationPolicies() {
+ log.debug("Cleaning up and updating default organization policies on server startup");
+ return organizationRepository.findBySlug(FieldName.DEFAULT).flatMap(organization -> {
+ if (CollectionUtils.isNullOrEmpty(organization.getPolicyMap())) {
+ organization.setPolicyMap(policySetToMap(organization.getPolicies()));
+ return cacheableRepositoryHelper
+ .evictCachedOrganization(organization.getId())
+ .then(organizationRepository.save(organization));
+ }
+ return Mono.just(organization);
+ });
+ }
+
+ @Override
+ public void onApplicationEvent(ApplicationStartedEvent event) {
+ cleanupAndUpdateRefreshDefaultOrganizationPolicies().block();
+ }
+}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/SecurityConfig.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/SecurityConfig.java
index f44711f4c82a..ecf53ac70d16 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/SecurityConfig.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/SecurityConfig.java
@@ -67,9 +67,9 @@
import static com.appsmith.server.constants.Url.APPLICATION_URL;
import static com.appsmith.server.constants.Url.ASSET_URL;
import static com.appsmith.server.constants.Url.CUSTOM_JS_LIB_URL;
+import static com.appsmith.server.constants.Url.ORGANIZATION_URL;
import static com.appsmith.server.constants.Url.PAGE_URL;
import static com.appsmith.server.constants.Url.PRODUCT_ALERT;
-import static com.appsmith.server.constants.Url.TENANT_URL;
import static com.appsmith.server.constants.Url.THEME_URL;
import static com.appsmith.server.constants.Url.USAGE_PULSE_URL;
import static com.appsmith.server.constants.Url.USER_URL;
@@ -213,7 +213,7 @@ public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, APPLICATION_URL + "/**"),
ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, THEME_URL + "/**"),
ServerWebExchangeMatchers.pathMatchers(HttpMethod.POST, ACTION_URL + "/execute"),
- ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, TENANT_URL + "/current"),
+ ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, ORGANIZATION_URL + "/current"),
ServerWebExchangeMatchers.pathMatchers(HttpMethod.POST, USAGE_PULSE_URL),
ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, CUSTOM_JS_LIB_URL + "/*/view"),
ServerWebExchangeMatchers.pathMatchers(
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/TenantConfig.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/TenantConfig.java
deleted file mode 100644
index 544430ca03ca..000000000000
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/TenantConfig.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.appsmith.server.configurations;
-
-import com.appsmith.server.constants.FieldName;
-import com.appsmith.server.domains.Tenant;
-import com.appsmith.server.helpers.CollectionUtils;
-import com.appsmith.server.repositories.CacheableRepositoryHelper;
-import com.appsmith.server.repositories.TenantRepository;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.context.event.ApplicationStartedEvent;
-import org.springframework.context.ApplicationListener;
-import org.springframework.context.annotation.Configuration;
-import reactor.core.publisher.Mono;
-
-import static com.appsmith.external.models.BaseDomain.policySetToMap;
-
-@Configuration
-@RequiredArgsConstructor
-@Slf4j
-public class TenantConfig implements ApplicationListener {
-
- private final TenantRepository tenantRepository;
- private final CacheableRepositoryHelper cachableRepositoryHelper;
-
- // Method to cleanup the cache and update the default tenant policies if the policyMap is empty. This will make sure
- // cache will be updated if we update the tenant via startup DB migrations.
- // As we have mocked the TenantService in the tests, we had to manually evict the cache and save the object to DB
- private Mono cleanupAndUpdateRefreshDefaultTenantPolicies() {
- log.debug("Cleaning up and updating default tenant policies on server startup");
- return tenantRepository.findBySlug(FieldName.DEFAULT).flatMap(tenant -> {
- if (CollectionUtils.isNullOrEmpty(tenant.getPolicyMap())) {
- tenant.setPolicyMap(policySetToMap(tenant.getPolicies()));
- return cachableRepositoryHelper
- .evictCachedTenant(tenant.getId())
- .then(tenantRepository.save(tenant));
- }
- return Mono.just(tenant);
- });
- }
-
- @Override
- public void onApplicationEvent(ApplicationStartedEvent event) {
- cleanupAndUpdateRefreshDefaultTenantPolicies().block();
- }
-}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigCECompatibleImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigCECompatibleImpl.java
index 90fbc54eb4cc..1f78a25c43d6 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigCECompatibleImpl.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigCECompatibleImpl.java
@@ -1,12 +1,12 @@
package com.appsmith.server.configurations.git;
import com.appsmith.external.configurations.git.GitConfigCECompatible;
-import com.appsmith.server.services.TenantService;
+import com.appsmith.server.services.OrganizationService;
import org.springframework.stereotype.Component;
@Component
public class GitConfigCECompatibleImpl extends GitConfigCEImpl implements GitConfigCECompatible {
- public GitConfigCECompatibleImpl(TenantService tenantService) {
- super(tenantService);
+ public GitConfigCECompatibleImpl(OrganizationService organizationService) {
+ super(organizationService);
}
}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigCEImpl.java
index b75010ad32d0..441cc3a7dfcf 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigCEImpl.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigCEImpl.java
@@ -1,7 +1,7 @@
package com.appsmith.server.configurations.git;
import com.appsmith.external.configurations.git.GitConfigCE;
-import com.appsmith.server.services.TenantService;
+import com.appsmith.server.services.OrganizationService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
@@ -10,13 +10,13 @@
@Component
public class GitConfigCEImpl implements GitConfigCE {
- private final TenantService tenantService;
+ private final OrganizationService organizationService;
@Override
public Mono getIsAtomicPushAllowed() {
- return tenantService
- .getTenantConfiguration()
- .map(tenant -> tenant.getTenantConfiguration().getIsAtomicPushAllowed())
+ return organizationService
+ .getOrganizationConfiguration()
+ .map(organization -> organization.getOrganizationConfiguration().getIsAtomicPushAllowed())
.switchIfEmpty(Mono.just(false));
}
}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigImpl.java
index 3cef3e9c08c4..1bf8d6d51525 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigImpl.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/git/GitConfigImpl.java
@@ -1,12 +1,12 @@
package com.appsmith.server.configurations.git;
import com.appsmith.external.configurations.git.GitConfig;
-import com.appsmith.server.services.TenantService;
+import com.appsmith.server.services.OrganizationService;
import org.springframework.stereotype.Component;
@Component
public class GitConfigImpl extends GitConfigCECompatibleImpl implements GitConfig {
- public GitConfigImpl(TenantService tenantService) {
- super(tenantService);
+ public GitConfigImpl(OrganizationService organizationService) {
+ super(organizationService);
}
}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/ce/FieldNameCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/ce/FieldNameCE.java
index aeab3822f0c4..2b53895370cc 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/ce/FieldNameCE.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/ce/FieldNameCE.java
@@ -183,7 +183,7 @@ public class FieldNameCE {
public static final String ENVIRONMENT = "environment";
public static final String UNUSED_ENVIRONMENT_ID = "unused_env";
- public static final String TENANT = "tenant";
+ public static final String ORGANIZATION = "organization";
public static final String SUFFIX_USER_MANAGEMENT_ROLE = " User Management";
@@ -205,5 +205,6 @@ public class FieldNameCE {
public static final String ARTIFACT_CONTEXT = "artifactContext";
public static final String ARTIFACT_ID = "artifactId";
public static final String BODY = "body";
+ public static final String ORGANIZATION_ID = "organizationId";
public static final String NONE = "none";
}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/ce/UrlCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/ce/UrlCE.java
index c070dbeabc2e..6e1780ba6f2f 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/ce/UrlCE.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/constants/ce/UrlCE.java
@@ -27,7 +27,7 @@ public class UrlCE {
public static final String THEME_URL = BASE_URL + VERSION + "/themes";
public static final String APP_TEMPLATE_URL = BASE_URL + VERSION + "/app-templates";
public static final String USAGE_PULSE_URL = BASE_URL + VERSION + "/usage-pulse";
- public static final String TENANT_URL = BASE_URL + VERSION + "/tenants";
+ public static final String ORGANIZATION_URL = BASE_URL + VERSION + "/tenants";
public static final String CUSTOM_JS_LIB_URL = BASE_URL + VERSION + "/libraries";
public static final String PRODUCT_ALERT = BASE_URL + VERSION + "/product-alert";
public static final String SEARCH_ENTITY_URL = BASE_URL + VERSION + "/search-entities";
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/TenantController.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/OrganizationController.java
similarity index 50%
rename from app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/TenantController.java
rename to app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/OrganizationController.java
index 15a914eeac6f..45de4b18e74a 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/TenantController.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/OrganizationController.java
@@ -1,18 +1,18 @@
package com.appsmith.server.controllers;
import com.appsmith.server.constants.Url;
-import com.appsmith.server.controllers.ce.TenantControllerCE;
-import com.appsmith.server.services.TenantService;
+import com.appsmith.server.controllers.ce.OrganizationControllerCE;
+import com.appsmith.server.services.OrganizationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
-@RequestMapping(Url.TENANT_URL)
-public class TenantController extends TenantControllerCE {
+@RequestMapping(Url.ORGANIZATION_URL)
+public class OrganizationController extends OrganizationControllerCE {
- public TenantController(TenantService service) {
+ public OrganizationController(OrganizationService service) {
super(service);
}
}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/TenantControllerCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/OrganizationControllerCE.java
similarity index 53%
rename from app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/TenantControllerCE.java
rename to app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/OrganizationControllerCE.java
index ba34d1029f44..2e2a8c01669b 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/TenantControllerCE.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/OrganizationControllerCE.java
@@ -2,10 +2,10 @@
import com.appsmith.external.views.Views;
import com.appsmith.server.constants.Url;
-import com.appsmith.server.domains.Tenant;
-import com.appsmith.server.domains.TenantConfiguration;
+import com.appsmith.server.domains.Organization;
+import com.appsmith.server.domains.OrganizationConfiguration;
import com.appsmith.server.dtos.ResponseDTO;
-import com.appsmith.server.services.TenantService;
+import com.appsmith.server.services.OrganizationService;
import com.fasterxml.jackson.annotation.JsonView;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
@@ -18,17 +18,17 @@
import java.util.Map;
@Slf4j
-@RequestMapping(Url.TENANT_URL)
-public class TenantControllerCE {
+@RequestMapping(Url.ORGANIZATION_URL)
+public class OrganizationControllerCE {
- private final TenantService service;
+ private final OrganizationService service;
- public TenantControllerCE(TenantService service) {
+ public OrganizationControllerCE(OrganizationService service) {
this.service = service;
}
/**
- * This API returns the tenant configuration for any user (anonymous or logged in). The configurations are set
+ * This API returns the organization configuration for any user (anonymous or logged in). The configurations are set
* in {@link com.appsmith.server.controllers.ce.InstanceAdminControllerCE#saveEnvChanges(Map)}
*
* The update and retrieval are in different controllers because it would have been weird to fetch the configurations
@@ -38,15 +38,16 @@ public TenantControllerCE(TenantService service) {
*/
@JsonView(Views.Public.class)
@GetMapping("/current")
- public Mono> getTenantConfig() {
- log.debug("Attempting to retrieve tenant configuration ... ");
- return service.getTenantConfiguration()
+ public Mono> getOrganizationConfig() {
+ log.debug("Attempting to retrieve organization configuration ... ");
+ return service.getOrganizationConfiguration()
.map(resource -> new ResponseDTO<>(HttpStatus.OK.value(), resource, null));
}
@PutMapping("")
- public Mono> updateTenantConfiguration(@RequestBody TenantConfiguration tenantConfiguration) {
- return service.updateDefaultTenantConfiguration(tenantConfiguration)
- .map(tenant -> new ResponseDTO<>(HttpStatus.OK.value(), tenant, null));
+ public Mono> updateOrganizationConfiguration(
+ @RequestBody OrganizationConfiguration organizationConfiguration) {
+ return service.updateDefaultOrganizationConfiguration(organizationConfiguration)
+ .map(organization -> new ResponseDTO<>(HttpStatus.OK.value(), organization, null));
}
}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/datasources/base/DatasourceServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/datasources/base/DatasourceServiceCEImpl.java
index 3bd7a58a0cd1..df7decf15976 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/datasources/base/DatasourceServiceCEImpl.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/datasources/base/DatasourceServiceCEImpl.java
@@ -31,9 +31,9 @@
import com.appsmith.server.services.ConfigService;
import com.appsmith.server.services.DatasourceContextService;
import com.appsmith.server.services.FeatureFlagService;
+import com.appsmith.server.services.OrganizationService;
import com.appsmith.server.services.SequenceService;
import com.appsmith.server.services.SessionUserService;
-import com.appsmith.server.services.TenantService;
import com.appsmith.server.services.WorkspaceService;
import com.appsmith.server.solutions.DatasourcePermission;
import com.appsmith.server.solutions.EnvironmentPermission;
@@ -97,7 +97,7 @@ public class DatasourceServiceCEImpl implements DatasourceServiceCE {
private final RateLimitService rateLimitService;
private final FeatureFlagService featureFlagService;
private final ObservationRegistry observationRegistry;
- private final TenantService tenantService;
+ private final OrganizationService organizationService;
private final ConfigService configService;
// Defines blocking duration for test as well as connection created for query execution
@@ -126,7 +126,7 @@ public DatasourceServiceCEImpl(
RateLimitService rateLimitService,
FeatureFlagService featureFlagService,
ObservationRegistry observationRegistry,
- TenantService tenantService,
+ OrganizationService organizationService,
ConfigService configService) {
this.workspaceService = workspaceService;
@@ -146,7 +146,7 @@ public DatasourceServiceCEImpl(
this.rateLimitService = rateLimitService;
this.featureFlagService = featureFlagService;
this.observationRegistry = observationRegistry;
- this.tenantService = tenantService;
+ this.organizationService = organizationService;
this.configService = configService;
}
@@ -264,12 +264,12 @@ private Mono createEx(
}
private Mono setAdditionalMetadataInDatasourceStorage(DatasourceStorage datasourceStorage) {
- Mono tenantIdMono = tenantService.getDefaultTenantId();
+ Mono organizationIdMono = organizationService.getDefaultOrganizationId();
Mono instanceIdMono = configService.getInstanceId();
Map metadata = new HashMap<>();
- return tenantIdMono.zipWith(instanceIdMono).map(tuple -> {
+ return organizationIdMono.zipWith(instanceIdMono).map(tuple -> {
metadata.put(TENANT_ID, tuple.getT1());
metadata.put(INSTANCE_ID, tuple.getT2());
datasourceStorage.setMetadata(metadata);
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/datasources/base/DatasourceServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/datasources/base/DatasourceServiceImpl.java
index 67a8e8f3d94f..adb06b2f3b3e 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/datasources/base/DatasourceServiceImpl.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/datasources/base/DatasourceServiceImpl.java
@@ -11,9 +11,9 @@
import com.appsmith.server.services.ConfigService;
import com.appsmith.server.services.DatasourceContextService;
import com.appsmith.server.services.FeatureFlagService;
+import com.appsmith.server.services.OrganizationService;
import com.appsmith.server.services.SequenceService;
import com.appsmith.server.services.SessionUserService;
-import com.appsmith.server.services.TenantService;
import com.appsmith.server.services.WorkspaceService;
import com.appsmith.server.solutions.DatasourcePermission;
import com.appsmith.server.solutions.EnvironmentPermission;
@@ -44,7 +44,7 @@ public DatasourceServiceImpl(
RateLimitService rateLimitService,
FeatureFlagService featureFlagService,
ObservationRegistry observationRegistry,
- TenantService tenantService,
+ OrganizationService organizationService,
ConfigService configService) {
super(
@@ -65,7 +65,7 @@ public DatasourceServiceImpl(
rateLimitService,
featureFlagService,
observationRegistry,
- tenantService,
+ organizationService,
configService);
}
}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Organization.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Organization.java
new file mode 100644
index 000000000000..6740f279b216
--- /dev/null
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Organization.java
@@ -0,0 +1,38 @@
+package com.appsmith.server.domains;
+
+import com.appsmith.external.models.BaseDomain;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.FieldNameConstants;
+import org.checkerframework.common.aliasing.qual.Unique;
+import org.springframework.data.annotation.Transient;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.io.Serializable;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@Document
+@FieldNameConstants
+public class Organization extends BaseDomain implements Serializable {
+
+ @Unique String slug;
+
+ String displayName;
+
+ @Transient
+ String instanceId;
+
+ @Transient
+ String adminEmailDomainHash;
+
+ PricingPlan pricingPlan;
+
+ OrganizationConfiguration organizationConfiguration;
+
+ // TODO add SSO and other configurations here after migrating from environment variables to database configuration
+}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/OrganizationConfiguration.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/OrganizationConfiguration.java
new file mode 100644
index 000000000000..5be0df072461
--- /dev/null
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/OrganizationConfiguration.java
@@ -0,0 +1,9 @@
+package com.appsmith.server.domains;
+
+import com.appsmith.server.domains.ce.OrganizationConfigurationCE;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OrganizationConfiguration extends OrganizationConfigurationCE {}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PermissionGroup.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PermissionGroup.java
index fcb44cdc2e4f..52729bd50e55 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PermissionGroup.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PermissionGroup.java
@@ -21,8 +21,12 @@ public class PermissionGroup extends BaseDomain {
@NotNull String name;
+ @Deprecated
+ // TODO: Remove this field once we have migrated the data to use organizationId instead of tenantId
String tenantId;
+ String organizationId;
+
String description;
// TODO: refactor this to defaultDocumentId, as we can use this to store associated document id for
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PricingPlan.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PricingPlan.java
index b216f0c78faf..3fc13de97019 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PricingPlan.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PricingPlan.java
@@ -1,7 +1,7 @@
package com.appsmith.server.domains;
/**
- * Deprecated since we use plans based on the license and this information is stored inside license tenant pricingPlan is no longer used
+ * Deprecated since we use plans based on the license and this information is stored inside license organization pricingPlan is no longer used
*/
@Deprecated
public enum PricingPlan {
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Tenant.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Tenant.java
index f4a005bbff76..53f97fae68b6 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Tenant.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Tenant.java
@@ -12,6 +12,8 @@
import java.io.Serializable;
+@Deprecated
+// This class has been deprecated. Please use Organization instead.
@Getter
@Setter
@ToString
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/TenantConfiguration.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/TenantConfiguration.java
index e4b293b814a7..ccae88485bd5 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/TenantConfiguration.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/TenantConfiguration.java
@@ -4,6 +4,7 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
+@Deprecated
@Data
@EqualsAndHashCode(callSuper = true)
public class TenantConfiguration extends TenantConfigurationCE {}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/UsagePulse.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/UsagePulse.java
index 36ed0e074d83..03637199c319 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/UsagePulse.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/UsagePulse.java
@@ -15,7 +15,11 @@ public class UsagePulse extends BaseDomain {
// Hashed user email
private String user;
private String instanceId;
- private String tenantId;
+ private String organizationId;
private Boolean viewMode;
private Boolean isAnonymousUser;
+
+ @Deprecated
+ // TODO: Remove this field once we have migrated the data to use organizationId instead of tenantId
+ private String tenantId;
}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/User.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/User.java
index a2444c5ac74e..87b211f2cd03 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/User.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/User.java
@@ -76,9 +76,14 @@ public class User extends BaseDomain implements UserDetails, OidcUser {
@JsonView(Views.Public.class)
Boolean isAnonymous = false;
+ @Deprecated
+ // TODO: Remove this field once we have migrated the data to use organizationId instead of tenantId
@JsonView(Views.Public.class)
private String tenantId;
+ @JsonView(Views.Public.class)
+ private String organizationId;
+
// Field to indicate if the user is system generated or not. Expected to be `true` for system generated users, null
// otherwise.
// e.g. AnonymousUser is created by the system migration during the first time startup.
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Workspace.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Workspace.java
index 8e72b4b98d9c..49f8fc3afa82 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Workspace.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Workspace.java
@@ -47,9 +47,14 @@ public class Workspace extends BaseDomain {
@JsonView(Views.Internal.class)
private String logoAssetId;
+ @Deprecated
+ // TODO: Remove this field once we have migrated the data to use organizationId instead of tenantId
@JsonView(Views.Public.class)
private String tenantId;
+ @JsonView(Views.Public.class)
+ private String organizationId;
+
@JsonView(Views.Internal.class)
private Boolean hasEnvironments;
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/OrganizationConfigurationCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/OrganizationConfigurationCE.java
new file mode 100644
index 000000000000..a8cd697d5594
--- /dev/null
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/OrganizationConfigurationCE.java
@@ -0,0 +1,91 @@
+package com.appsmith.server.domains.ce;
+
+import com.appsmith.external.enums.FeatureFlagEnum;
+import com.appsmith.server.constants.FeatureMigrationType;
+import com.appsmith.server.constants.LicensePlan;
+import com.appsmith.server.constants.MigrationStatus;
+import com.appsmith.server.domains.License;
+import com.appsmith.server.domains.OrganizationConfiguration;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+import org.apache.commons.lang3.ObjectUtils;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class OrganizationConfigurationCE implements Serializable {
+
+ private String googleMapsKey;
+
+ private Boolean isFormLoginEnabled;
+
+ private String instanceName;
+
+ protected License license;
+
+ // organization admin can toggle this field to enable/disable email verification
+ private Boolean emailVerificationEnabled;
+
+ // We add `JsonInclude` here, so that this field is included in the JSON response, even if it is `null`. Reason is,
+ // if this field is not present, then the existing value in client's state doesn't get updated. It's just the way
+ // the splat (`...`) operator works in the client. Evidently, we'll want this for all fields in this class.
+ // In that sense, this class is special, because organization configuration is cached in `localStorage`, and so it's
+ // state
+ // is preserved across browser refreshes.
+ @JsonInclude
+ private List thirdPartyAuths;
+
+ // Field to be used to track the status of migrations during upgrade and downgrade workflows. Downgrade migrations
+ // are gated by user consent whereas upgrade can be triggered immediately and depending upon the status client
+ // blocks the user access to the instance
+ MigrationStatus migrationStatus = MigrationStatus.COMPLETED;
+
+ // Field to store the list of features for which the migrations are pending. This will be used to store the diffs of
+ // the feature flags. This can happen for 2 reasons:
+ // 1. The license plan changes
+ // 2. Because of grandfathering via cron where organization level feature flags are fetched
+ Map featuresWithPendingMigration;
+
+ // This variable is used to indicate if the server needs to be restarted after the migration based on feature flags
+ // is complete.
+ Boolean isRestartRequired;
+
+ Boolean isStrongPasswordPolicyEnabled;
+
+ private Boolean isAtomicPushAllowed = false;
+
+ public void addThirdPartyAuth(String auth) {
+ if (thirdPartyAuths == null) {
+ thirdPartyAuths = new ArrayList<>();
+ }
+ thirdPartyAuths.add(auth);
+ }
+
+ public void copyNonSensitiveValues(OrganizationConfiguration organizationConfiguration) {
+ license = new License();
+ license.setPlan(LicensePlan.FREE);
+
+ if (organizationConfiguration == null) {
+ return;
+ }
+
+ googleMapsKey = ObjectUtils.defaultIfNull(organizationConfiguration.getGoogleMapsKey(), googleMapsKey);
+ isFormLoginEnabled =
+ ObjectUtils.defaultIfNull(organizationConfiguration.getIsFormLoginEnabled(), isFormLoginEnabled);
+ instanceName = ObjectUtils.defaultIfNull(organizationConfiguration.getInstanceName(), instanceName);
+ emailVerificationEnabled = ObjectUtils.defaultIfNull(
+ organizationConfiguration.isEmailVerificationEnabled(), emailVerificationEnabled);
+
+ featuresWithPendingMigration = organizationConfiguration.getFeaturesWithPendingMigration();
+ migrationStatus = organizationConfiguration.getMigrationStatus();
+ isStrongPasswordPolicyEnabled = organizationConfiguration.getIsStrongPasswordPolicyEnabled();
+ isAtomicPushAllowed = organizationConfiguration.getIsAtomicPushAllowed();
+ }
+
+ public Boolean isEmailVerificationEnabled() {
+ return Boolean.TRUE.equals(this.emailVerificationEnabled);
+ }
+}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/TenantConfigurationCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/TenantConfigurationCE.java
index 74a62527e47c..29f5e4e84bb3 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/TenantConfigurationCE.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/TenantConfigurationCE.java
@@ -15,6 +15,7 @@
import java.util.List;
import java.util.Map;
+@Deprecated
@Data
public class TenantConfigurationCE implements Serializable {
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/FeaturesRequestDTO.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/FeaturesRequestDTO.java
index f18672b49a58..d1f61bd79f39 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/FeaturesRequestDTO.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/FeaturesRequestDTO.java
@@ -7,7 +7,7 @@
@Setter
public class FeaturesRequestDTO {
private String instanceId;
- private String tenantId;
+ private String organizationId;
private String appsmithVersion;
private Boolean isCloudHosting;
}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/UserSessionDTO.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/UserSessionDTO.java
index 92b6adab46e8..9767c1ae6232 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/UserSessionDTO.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/UserSessionDTO.java
@@ -45,7 +45,7 @@ public class UserSessionDTO {
private Set workspaceIds;
- private String tenantId;
+ private String organizationId;
private Object credentials;
@@ -85,7 +85,7 @@ public static UserSessionDTO fromToken(Authentication authentication) {
session.state = user.getState();
session.isEnabled = user.isEnabled();
session.workspaceIds = user.getWorkspaceIds();
- session.tenantId = user.getTenantId();
+ session.organizationId = user.getOrganizationId();
session.emailVerified = Boolean.TRUE.equals(user.getEmailVerified());
session.emailVerificationRequired = Boolean.TRUE.equals(user.getEmailVerificationRequired());
@@ -126,7 +126,7 @@ public Authentication makeToken() {
user.setState(state);
user.setIsEnabled(isEnabled);
user.setWorkspaceIds(workspaceIds);
- user.setTenantId(tenantId);
+ user.setOrganizationId(organizationId);
user.setEmailVerified(Boolean.TRUE.equals(emailVerified));
user.setEmailVerificationRequired(Boolean.TRUE.equals(emailVerificationRequired));
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/ce/ConsolidatedAPIResponseCE_DTO.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/ce/ConsolidatedAPIResponseCE_DTO.java
index d51d75e23b2c..a9eb001f8a63 100644
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/ce/ConsolidatedAPIResponseCE_DTO.java
+++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/ce/ConsolidatedAPIResponseCE_DTO.java
@@ -3,8 +3,8 @@
import com.appsmith.external.models.ActionDTO;
import com.appsmith.external.models.Datasource;
import com.appsmith.server.domains.CustomJSLib;
+import com.appsmith.server.domains.Organization;
import com.appsmith.server.domains.Plugin;
-import com.appsmith.server.domains.Tenant;
import com.appsmith.server.domains.Theme;
import com.appsmith.server.dtos.ActionCollectionDTO;
import com.appsmith.server.dtos.ActionCollectionViewDTO;
@@ -36,7 +36,7 @@ public class ConsolidatedAPIResponseCE_DTO {
ResponseDTO