diff --git a/app/client/cypress/e2e/Regression/ClientSide/AuditLogs/Audit_logs_spec.js b/app/client/cypress/e2e/Regression/ClientSide/AuditLogs/Audit_logs_spec.js
index ad22d02af7..e1ea2ca951 100644
--- a/app/client/cypress/e2e/Regression/ClientSide/AuditLogs/Audit_logs_spec.js
+++ b/app/client/cypress/e2e/Regression/ClientSide/AuditLogs/Audit_logs_spec.js
@@ -2,8 +2,7 @@ import { REPO, CURRENT_REPO } from "../../../../fixtures/REPO";
const Access = {
AdminSettingsEntryLink: ".admin-settings-menu-option",
- LeftPaneAuditLogsLink:
- "[data-testid='t--enterprise-settings-category-item-audit-logs']",
+ LeftPaneAuditLogsLink: ".t--settings-category-audit-logs",
};
const Header = {
diff --git a/app/client/cypress/e2e/Regression/Enterprise/AdminSettings/Admin_settings_spec.js b/app/client/cypress/e2e/Regression/Enterprise/AdminSettings/Admin_settings_spec.js
index 98d372bb68..4c85d7febf 100644
--- a/app/client/cypress/e2e/Regression/Enterprise/AdminSettings/Admin_settings_spec.js
+++ b/app/client/cypress/e2e/Regression/Enterprise/AdminSettings/Admin_settings_spec.js
@@ -76,13 +76,6 @@ describe("Admin settings page", function () {
cy.get("@pricingPage").should("be.called");
cy.wait(2000);
cy.go(-1);
- cy.get(adminsSettings.upgrageLeftPane).click();
- cy.url().should("contain", "/settings/business-edition");
- stubPricingPage();
- cy.xpath(adminsSettings.upgrade).click();
- cy.get("@pricingPage").should("be.called");
- cy.wait(2000);
- cy.go(-1);
}
});
});
diff --git a/app/client/cypress/locators/AdminsSettings.js b/app/client/cypress/locators/AdminsSettings.js
index 7012070ab5..22516a2cfa 100644
--- a/app/client/cypress/locators/AdminsSettings.js
+++ b/app/client/cypress/locators/AdminsSettings.js
@@ -27,8 +27,7 @@ export default {
formLoginDisabled: "[data-testid='APPSMITH_FORM_LOGIN_DISABLED']",
embedSettings: ".t--admin-settings-APPSMITH_ALLOWED_FRAME_ANCESTORS",
upgrade: "//button//span[text()='Upgrade']",
- accessControl:
- "[data-testid='t--enterprise-settings-category-item-access-control']",
- auditLogs: "[data-testid='t--enterprise-settings-category-item-audit-logs']",
+ accessControl: ".t--settings-category-access-control",
+ auditLogs: ".t--settings-category-audit-logs",
upgrageLeftPane: "[data-testid='t--enterprise-settings-category-item-be']",
};
diff --git a/app/client/src/assets/images/upgrade/provisioning/auto-group-sync.svg b/app/client/src/assets/images/upgrade/provisioning/auto-group-sync.svg
new file mode 100644
index 0000000000..9b4f10856e
--- /dev/null
+++ b/app/client/src/assets/images/upgrade/provisioning/auto-group-sync.svg
@@ -0,0 +1,74 @@
+
diff --git a/app/client/src/assets/images/upgrade/provisioning/provision-deprovision-users.svg b/app/client/src/assets/images/upgrade/provisioning/provision-deprovision-users.svg
new file mode 100644
index 0000000000..dba4e5d3ab
--- /dev/null
+++ b/app/client/src/assets/images/upgrade/provisioning/provision-deprovision-users.svg
@@ -0,0 +1,89 @@
+
diff --git a/app/client/src/ce/constants/forms.ts b/app/client/src/ce/constants/forms.ts
index c2fe062017..e7b5d09b07 100644
--- a/app/client/src/ce/constants/forms.ts
+++ b/app/client/src/ce/constants/forms.ts
@@ -37,6 +37,3 @@ export const SETTINGS_FORM_NAME = "SettingsForm";
export const WELCOME_NON_SUPER_FORM_NAME = "WelcomeNonSuperSetupForm";
export const SAVE_THEME_FORM_NAME = "SaveThemeForm";
-export const ORIGIN_URI_FORM = "OriginURIForm";
-export const REDIRECT_URL_FORM = "RedirectURLForm";
-export const ENTITYID_URL_FORM = "EntityIdURLForm";
diff --git a/app/client/src/ce/constants/messages.ts b/app/client/src/ce/constants/messages.ts
index 45887147ef..e64b179af5 100644
--- a/app/client/src/ce/constants/messages.ts
+++ b/app/client/src/ce/constants/messages.ts
@@ -324,6 +324,7 @@ export const OAUTH_2_0 = () => "OAuth 2.0";
export const ENABLE = () => "Enable";
export const UPGRADE = () => "Upgrade";
export const EDIT = () => "Edit";
+export const CONFIGURE = () => "Configure";
export const UNEXPECTED_ERROR = () => "An unexpected error occurred";
export const EXPECTED_ERROR = () => "An error occurred";
export const NO_DATASOURCE_FOR_QUERY = () =>
@@ -1248,6 +1249,14 @@ export const SAVE_BUTTON = () => "Save";
export const SAVE_AND_RESTART_BUTTON = () => "Save & Restart";
export const RESET_BUTTON = () => "Reset";
export const BUSINESS_TAG = () => "Business";
+export const ENTERPRISE_TAG = () => "Enterprise";
+
+// Upgrade pages begin
+export const AVAILABLE_ON_BUSINESS = () => "Available on a business plan only";
+export const EXCLUSIVE_TO_BUSINESS = (featureName: string) =>
+ `The ${featureName} feature is exclusive to workspaces on the Business Edition`;
+export const AVAILABLE_ON_ENTERPRISE = () => "Available on Appsmith Enterprise";
+// Upgrade pages end
// Audit logs begin
export const AUDIT_LOGS = () => "Audit logs";
@@ -1269,9 +1278,6 @@ export const DEBUGGING_DETAIL1 = () =>
export const INCIDENT_MANAGEMENT = () => "Incident management";
export const INCIDENT_MANAGEMENT_DETAIL1 = () =>
"Go back in time from an incident to see who did what, correlate events with breaking changes, and run RCAs to remediate incidents for now and the future.";
-export const AVAILABLE_ON_BUSINESS = () => "Available on a business plan only";
-export const EXCLUSIVE_TO_BUSINESS = (featureName: string) =>
- `The ${featureName} feature is exclusive to workspaces on the Business Edition`;
// Audit logs Upgrade page end
// Audit logs end
@@ -1296,6 +1302,20 @@ export const ACCESS_CONTROL_UPGRADE_PAGE_FOOTER = () =>
"Unlock granular access controls along with audit logs and SSO for enhanced security and reliability with an upgrade to our Business edition.";
// Access control upgrade page end
+// Provisioning upgrade page begin
+export const USER_PROVISIONING_FOR_ENTERPRISES = () =>
+ "user provisioning for enterprises";
+export const PROVISIONING_UPGRADE_PAGE_SUB_HEADING = () =>
+ "Provision and de-provision users on Appsmith. Automatic group sync from your IdP.";
+export const PROVISION_DEPROVISION_USERS = () =>
+ "Provision and de-provision users on Appsmith";
+export const PROVISION_DEPROVISION_USERS_DETAIL1 = () =>
+ `Automatically assign accounts to new employees and revoke access when they leave. Error-free, right from your Identity Provider (IdP).`;
+export const AUTO_GROUP_SYNC = () => "Automatic group sync from your IdP";
+export const AUTO_GROUP_SYNC_DETAIL1 = () =>
+ `Sync user groups from your IdP into Appsmith to manage access across your teams easily.`;
+// Provisioning upgrade page end
+
//
export const WELCOME_FORM_NON_SUPER_USER_ROLE_DROPDOWN = () =>
"Tell us about your primary skillset";
diff --git a/app/client/src/ce/entities/FeatureFlag.ts b/app/client/src/ce/entities/FeatureFlag.ts
index faf1e971a9..e611c1a32d 100644
--- a/app/client/src/ce/entities/FeatureFlag.ts
+++ b/app/client/src/ce/entities/FeatureFlag.ts
@@ -11,6 +11,7 @@ export const FEATURE_FLAG = {
"release_embed_hide_share_settings_enabled",
ab_ds_schema_enabled: "ab_ds_schema_enabled",
ab_ds_binding_enabled: "ab_ds_binding_enabled",
+ release_scim_provisioning_enabled: "release_scim_provisioning_enabled",
} as const;
export type FeatureFlag = keyof typeof FEATURE_FLAG;
@@ -27,6 +28,7 @@ export const DEFAULT_FEATURE_FLAG_VALUE: FeatureFlags = {
release_embed_hide_share_settings_enabled: false,
ab_ds_schema_enabled: false,
ab_ds_binding_enabled: false,
+ release_scim_provisioning_enabled: false,
};
export const AB_TESTING_EVENT_KEYS = {
diff --git a/app/client/src/ce/pages/AdminSettings/LeftPane.tsx b/app/client/src/ce/pages/AdminSettings/LeftPane.tsx
index 0883a5d6ea..679261226d 100644
--- a/app/client/src/ce/pages/AdminSettings/LeftPane.tsx
+++ b/app/client/src/ce/pages/AdminSettings/LeftPane.tsx
@@ -2,20 +2,30 @@ import React from "react";
import { Link } from "react-router-dom";
import styled from "styled-components";
import AdminConfig from "@appsmith/pages/AdminSettings/config";
-import type { Category } from "@appsmith/pages/AdminSettings/config/types";
+import {
+ CategoryType,
+ type Category,
+} from "@appsmith/pages/AdminSettings/config/types";
import { adminSettingsCategoryUrl } from "RouteBuilder";
import { useParams } from "react-router";
-import { createMessage, UPGRADE } from "@appsmith/constants/messages";
import AnalyticsUtil from "utils/AnalyticsUtil";
-import { Icon, Text } from "design-system";
-import { useDispatch } from "react-redux";
+import { Icon, Tag, Text } from "design-system";
+import { useDispatch, useSelector } from "react-redux";
import { ReduxActionTypes } from "@appsmith/constants/ReduxActionConstants";
+import { getCurrentUser } from "selectors/usersSelectors";
+import { selectFeatureFlags } from "@appsmith/selectors/featureFlagsSelectors";
+import {
+ BUSINESS_TAG,
+ ENTERPRISE_TAG,
+ createMessage,
+} from "@appsmith/constants/messages";
export const Wrapper = styled.div`
flex-basis: ${(props) => props.theme.sidebarWidth};
overflow-y: auto;
border-right: 1px solid var(--ads-v2-color-border);
flex-shrink: 0;
+ padding: 12px 0;
&::-webkit-scrollbar {
display: none;
@@ -27,13 +37,12 @@ export const Wrapper = styled.div`
`;
export const HeaderContainer = styled.div`
- padding: 20px 0;
- margin: 0 16px;
+ margin: 12px;
`;
export const StyledHeader = styled(Text)`
height: 20px;
- margin: 8px 16px 8px;
+ margin: 16px;
color: var(--ads-v2-color-fg-emphasis);
`;
@@ -47,13 +56,13 @@ export const CategoryItem = styled.li`
`;
export const StyledLink = styled(Link)<{ $active: boolean }>`
- height: 38px;
padding: 8px 16px;
border-radius: var(--ads-v2-border-radius);
background-color: ${(props) =>
props.$active ? `var(--ads-v2-color-bg-muted)` : ""};
display: flex;
gap: 12px;
+ align-items: center;
&& {
color: var(--ads-v2-color-fg);
@@ -76,8 +85,10 @@ export const SettingName = styled(Text)<{ active?: boolean }>`
font-weight: 400;
`;
-export function getSettingsCategory() {
- return Array.from(AdminConfig.categories);
+export function getSettingsCategory(type: string) {
+ return Array.from(
+ AdminConfig.categories.filter((cat: any) => cat.categoryType === type),
+ );
}
export function Categories({
@@ -95,12 +106,26 @@ export function Categories({
}) {
const dispatch = useDispatch();
- const onClickHandler = (category: string) => {
+ const triggerAnalytics = (page: string) => {
+ const source: any = {
+ "audit-logs": "AuditLogs",
+ "access-control": "AccessControl",
+ provisioning: "Provisioning",
+ };
+ AnalyticsUtil.logEvent("ADMIN_SETTINGS_CLICK", {
+ source: source[page],
+ });
+ };
+
+ const onClickHandler = (category: string, needsUpgrade: boolean) => {
if (category === "general") {
dispatch({
type: ReduxActionTypes.FETCH_ADMIN_SETTINGS,
});
}
+ if (needsUpgrade) {
+ triggerAnalytics(category);
+ }
};
return (
@@ -117,7 +142,9 @@ export function Categories({
className={`t--settings-category-${config.slug} ${
active ? "active" : ""
}`}
- onClick={() => onClickHandler(config.slug)}
+ onClick={() =>
+ onClickHandler(config.slug, config?.needsUpgrade || false)
+ }
to={
!parentCategory
? adminSettingsCategoryUrl({ category: config.slug })
@@ -127,8 +154,19 @@ export function Categories({
})
}
>
- {config?.icon && }
+ {config?.needsUpgrade ? (
+
+ ) : (
+ config?.icon &&
+ )}
{config.title}
+ {config?.needsUpgrade && (
+
+ {createMessage(
+ config?.isEnterprise ? ENTERPRISE_TAG : BUSINESS_TAG,
+ )}
+
+ )}
{showSubCategory && (
{
+ if (
+ category.slug === "provisioning" &&
+ !featureFlags.release_scim_provisioning_enabled
+ ) {
+ return null;
+ }
+ return category;
+ })
+ .filter(Boolean) as Category[];
return (
+ {isSuperUser && (
+
+
+ Admin settings
+
+
+
+ )}
- Admin settings
+ Access control
- Business
+ Others
-
-
-
-
-
- Access control
-
-
-
-
- triggerAnalytics("AuditLogs")}
- to="/settings/audit-logs"
- >
-
-
- Audit logs
-
-
-
-
- triggerAnalytics("BusinessEdition")}
- to="/settings/business-edition"
- >
-
-
- {createMessage(UPGRADE)}
-
-
-
-
+
);
diff --git a/app/client/src/ce/pages/AdminSettings/Main.tsx b/app/client/src/ce/pages/AdminSettings/Main.tsx
index 2915fcb17d..ff247d4cfa 100644
--- a/app/client/src/ce/pages/AdminSettings/Main.tsx
+++ b/app/client/src/ce/pages/AdminSettings/Main.tsx
@@ -3,13 +3,11 @@ import AdminConfig from "./config";
import { Redirect, useParams } from "react-router";
import { SettingCategories } from "@appsmith/pages/AdminSettings/config/types";
import SettingsForm from "pages/Settings/SettingsForm";
-import { AuditLogsUpgradePage } from "../Upgrade/AuditLogsUpgradePage";
-import { AccessControlUpgradePage } from "../Upgrade/AccessControlUpgradePage";
import { getDefaultAdminSettingsPath } from "@appsmith/utils/adminSettingsHelpers";
import { useSelector } from "react-redux";
import { getCurrentUser } from "selectors/usersSelectors";
import { getTenantPermissions } from "@appsmith/selectors/tenantSelectors";
-import { UpgradeToBEPage } from "../Upgrade/businessEdition/UpgradeToBEPage";
+import { selectFeatureFlags } from "@appsmith/selectors/featureFlagsSelectors";
const Main = () => {
const params = useParams() as any;
@@ -19,22 +17,19 @@ const Main = () => {
const isSuperUser = user?.isSuperUser || false;
const wrapperCategory =
AdminConfig.wrapperCategories[subCategory ?? category];
+ const featureFlags = useSelector(selectFeatureFlags);
- /* New flow, where data is hand written and processed differently than old flow
- * In old flow, config and a factory was used to generate the Main content.
- */
- if (category === "access-control") {
- return ;
- }
- if (category === "audit-logs") {
- return ;
+ if (
+ category === "provisioning" &&
+ !featureFlags.release_scim_provisioning_enabled
+ ) {
+ return (
+
+ );
}
- if (category === "business-edition") {
- return ;
- }
-
- /* Old, still working flow; config, factory based */
if (!!wrapperCategory?.component) {
const { component: WrapperCategoryComponent } = wrapperCategory;
return ;
diff --git a/app/client/src/ce/pages/AdminSettings/config/auditLogsConfig.ts b/app/client/src/ce/pages/AdminSettings/config/auditLogsConfig.ts
new file mode 100644
index 0000000000..5d0b5a2ff4
--- /dev/null
+++ b/app/client/src/ce/pages/AdminSettings/config/auditLogsConfig.ts
@@ -0,0 +1,18 @@
+import type { AdminConfigType } from "@appsmith/pages/AdminSettings/config/types";
+import {
+ CategoryType,
+ SettingCategories,
+ SettingTypes,
+} from "@appsmith/pages/AdminSettings/config/types";
+import { AuditLogsUpgradePage } from "../../Upgrade/AuditLogsUpgradePage";
+
+export const config: AdminConfigType = {
+ icon: "file-list-2-line",
+ type: SettingCategories.AUDIT_LOGS,
+ categoryType: CategoryType.OTHER,
+ controlType: SettingTypes.PAGE,
+ component: AuditLogsUpgradePage,
+ title: "Audit logs",
+ canSave: false,
+ needsUpgrade: true,
+} as AdminConfigType;
diff --git a/app/client/src/ce/pages/AdminSettings/config/authentication/index.tsx b/app/client/src/ce/pages/AdminSettings/config/authentication/index.tsx
index d55b879993..e9ba33b8d4 100644
--- a/app/client/src/ce/pages/AdminSettings/config/authentication/index.tsx
+++ b/app/client/src/ce/pages/AdminSettings/config/authentication/index.tsx
@@ -6,8 +6,8 @@ import {
} from "constants/ThirdPartyConstants";
import type { AdminConfigType } from "@appsmith/pages/AdminSettings/config/types";
import {
+ CategoryType,
SettingCategories,
- SettingSubCategories,
SettingSubtype,
SettingTypes,
} from "@appsmith/pages/AdminSettings/config/types";
@@ -18,7 +18,6 @@ import SamlSso from "assets/images/saml.svg";
import OIDC from "assets/images/oidc.svg";
import Github from "assets/images/Github.png";
import Lock from "assets/images/lock-password-line.svg";
-import { ORIGIN_URI_FORM, REDIRECT_URL_FORM } from "@appsmith/constants/forms";
import { useSelector } from "react-redux";
import {
getThirdPartyAuths,
@@ -35,6 +34,7 @@ import {
const FormAuth: AdminConfigType = {
type: SettingCategories.FORM_AUTH,
+ categoryType: CategoryType.GENERAL,
controlType: SettingTypes.GROUP,
title: "Form login",
subText: createMessage(FORM_LOGIN_DESC),
@@ -43,14 +43,12 @@ const FormAuth: AdminConfigType = {
{
id: "APPSMITH_FORM_LOGIN_DISABLED",
category: SettingCategories.FORM_AUTH,
- subCategory: SettingSubCategories.FORMLOGIN,
controlType: SettingTypes.TOGGLE,
label: "form login",
},
{
id: "APPSMITH_SIGNUP_DISABLED",
category: SettingCategories.FORM_AUTH,
- subCategory: SettingSubCategories.FORMLOGIN,
controlType: SettingTypes.TOGGLE,
label: "Form signup",
toggleText: (value: boolean) =>
@@ -61,7 +59,6 @@ const FormAuth: AdminConfigType = {
{
id: "APPSMITH_FORM_CALLOUT_BANNER",
category: SettingCategories.FORM_AUTH,
- subCategory: SettingSubCategories.FORMLOGIN,
controlType: SettingTypes.LINK,
label:
"The form login method does not verify the emails of users that create accounts.",
@@ -73,6 +70,7 @@ const FormAuth: AdminConfigType = {
export const GoogleAuth: AdminConfigType = {
type: SettingCategories.GOOGLE_AUTH,
+ categoryType: CategoryType.GENERAL,
controlType: SettingTypes.GROUP,
title: "Google authentication",
subText: createMessage(GOOGLE_AUTH_DESC),
@@ -81,7 +79,6 @@ export const GoogleAuth: AdminConfigType = {
{
id: "APPSMITH_OAUTH2_GOOGLE_READ_MORE",
category: SettingCategories.GOOGLE_AUTH,
- subCategory: SettingSubCategories.GOOGLE,
controlType: SettingTypes.LINK,
label: "How to configure?",
url: GOOGLE_SIGNUP_SETUP_DOC,
@@ -89,10 +86,8 @@ export const GoogleAuth: AdminConfigType = {
{
id: "APPSMITH_OAUTH2_GOOGLE_JS_ORIGIN_URL",
category: SettingCategories.GOOGLE_AUTH,
- subCategory: SettingSubCategories.GOOGLE,
controlType: SettingTypes.UNEDITABLEFIELD,
label: "JavaScript origin URL",
- formName: ORIGIN_URI_FORM,
fieldName: "js-origin-url-form",
value: "",
tooltip:
@@ -102,10 +97,8 @@ export const GoogleAuth: AdminConfigType = {
{
id: "APPSMITH_OAUTH2_GOOGLE_REDIRECT_URL",
category: SettingCategories.GOOGLE_AUTH,
- subCategory: SettingSubCategories.GOOGLE,
controlType: SettingTypes.UNEDITABLEFIELD,
label: "Redirect URL",
- formName: REDIRECT_URL_FORM,
fieldName: "redirect-url-form",
value: "/login/oauth2/code/google",
tooltip:
@@ -115,7 +108,6 @@ export const GoogleAuth: AdminConfigType = {
{
id: "APPSMITH_OAUTH2_GOOGLE_CLIENT_ID",
category: SettingCategories.GOOGLE_AUTH,
- subCategory: SettingSubCategories.GOOGLE,
controlType: SettingTypes.TEXTINPUT,
controlSubType: SettingSubtype.TEXT,
label: "Client ID",
@@ -124,7 +116,6 @@ export const GoogleAuth: AdminConfigType = {
{
id: "APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET",
category: SettingCategories.GOOGLE_AUTH,
- subCategory: SettingSubCategories.GOOGLE,
controlType: SettingTypes.TEXTINPUT,
controlSubType: SettingSubtype.TEXT,
label: "Client secret",
@@ -133,7 +124,6 @@ export const GoogleAuth: AdminConfigType = {
{
id: "APPSMITH_SIGNUP_ALLOWED_DOMAINS",
category: SettingCategories.GOOGLE_AUTH,
- subCategory: SettingSubCategories.GOOGLE,
controlType: SettingTypes.TEXTINPUT,
controlSubType: SettingSubtype.TEXT,
label: "Allowed domains",
@@ -144,6 +134,7 @@ export const GoogleAuth: AdminConfigType = {
export const GithubAuth: AdminConfigType = {
type: SettingCategories.GITHUB_AUTH,
+ categoryType: CategoryType.GENERAL,
controlType: SettingTypes.GROUP,
title: "GitHub authentication",
subText: createMessage(GITHUB_AUTH_DESC),
@@ -152,7 +143,6 @@ export const GithubAuth: AdminConfigType = {
{
id: "APPSMITH_OAUTH2_GITHUB_READ_MORE",
category: SettingCategories.GITHUB_AUTH,
- subCategory: SettingSubCategories.GITHUB,
controlType: SettingTypes.LINK,
label: "How to configure?",
url: GITHUB_SIGNUP_SETUP_DOC,
@@ -160,10 +150,8 @@ export const GithubAuth: AdminConfigType = {
{
id: "APPSMITH_OAUTH2_GITHUB_HOMEPAGE_URL",
category: SettingCategories.GITHUB_AUTH,
- subCategory: SettingSubCategories.GITHUB,
controlType: SettingTypes.UNEDITABLEFIELD,
label: "Homepage URL",
- formName: ORIGIN_URI_FORM,
fieldName: "homepage-url-form",
value: "",
tooltip:
@@ -173,10 +161,8 @@ export const GithubAuth: AdminConfigType = {
{
id: "APPSMITH_OAUTH2_GITHUB_REDIRECT_URL",
category: SettingCategories.GITHUB_AUTH,
- subCategory: SettingSubCategories.GITHUB,
controlType: SettingTypes.UNEDITABLEFIELD,
label: "Redirect URL",
- formName: REDIRECT_URL_FORM,
fieldName: "callback-url-form",
value: "/login/oauth2/code/github",
tooltip:
@@ -186,7 +172,6 @@ export const GithubAuth: AdminConfigType = {
{
id: "APPSMITH_OAUTH2_GITHUB_CLIENT_ID",
category: SettingCategories.GITHUB_AUTH,
- subCategory: SettingSubCategories.GITHUB,
controlType: SettingTypes.TEXTINPUT,
controlSubType: SettingSubtype.TEXT,
label: "Client ID",
@@ -195,7 +180,6 @@ export const GithubAuth: AdminConfigType = {
{
id: "APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET",
category: SettingCategories.GITHUB_AUTH,
- subCategory: SettingSubCategories.GITHUB,
controlType: SettingTypes.TEXTINPUT,
controlSubType: SettingSubtype.TEXT,
label: "Client secret",
@@ -268,6 +252,7 @@ function AuthMain() {
export const config: AdminConfigType = {
icon: "lock-password-line",
type: SettingCategories.AUTHENTICATION,
+ categoryType: CategoryType.GENERAL,
controlType: SettingTypes.PAGE,
title: "Authentication",
canSave: false,
diff --git a/app/client/src/ce/pages/AdminSettings/config/branding/index.tsx b/app/client/src/ce/pages/AdminSettings/config/branding/index.tsx
index 3a35596530..7f889fda9c 100644
--- a/app/client/src/ce/pages/AdminSettings/config/branding/index.tsx
+++ b/app/client/src/ce/pages/AdminSettings/config/branding/index.tsx
@@ -1,5 +1,6 @@
import type { AdminConfigType } from "@appsmith/pages/AdminSettings/config/types";
import {
+ CategoryType,
SettingCategories,
SettingTypes,
} from "@appsmith/pages/AdminSettings/config/types";
@@ -7,6 +8,7 @@ import BrandingPage from "pages/Settings/config/branding/BrandingPage";
export const config: AdminConfigType = {
type: SettingCategories.BRANDING,
+ categoryType: CategoryType.GENERAL,
controlType: SettingTypes.PAGE,
canSave: false,
title: "Branding",
diff --git a/app/client/src/ce/pages/AdminSettings/config/general.tsx b/app/client/src/ce/pages/AdminSettings/config/general.tsx
index 5a1cebc4e5..afdbf7fcf5 100644
--- a/app/client/src/ce/pages/AdminSettings/config/general.tsx
+++ b/app/client/src/ce/pages/AdminSettings/config/general.tsx
@@ -7,6 +7,7 @@ import type {
Setting,
} from "@appsmith/pages/AdminSettings/config/types";
import {
+ CategoryType,
SettingCategories,
SettingSubtype,
SettingTypes,
@@ -169,6 +170,7 @@ export const APPSMITH_ALLOWED_FRAME_ANCESTORS_SETTING: Setting = {
export const config: AdminConfigType = {
icon: "settings-2-line",
type: SettingCategories.GENERAL,
+ categoryType: CategoryType.GENERAL,
controlType: SettingTypes.GROUP,
title: "General",
canSave: true,
diff --git a/app/client/src/ce/pages/AdminSettings/config/index.ts b/app/client/src/ce/pages/AdminSettings/config/index.ts
index 0a0a10711b..1910de542a 100644
--- a/app/client/src/ce/pages/AdminSettings/config/index.ts
+++ b/app/client/src/ce/pages/AdminSettings/config/index.ts
@@ -7,6 +7,9 @@ import { config as VersionConfig } from "pages/Settings/config/version";
import { config as AdvancedConfig } from "pages/Settings/config/advanced";
import { config as Authentication } from "@appsmith/pages/AdminSettings/config/authentication";
import { config as BrandingConfig } from "@appsmith/pages/AdminSettings/config/branding";
+import { config as ProvisioningConfig } from "@appsmith/pages/AdminSettings/config/provisioning";
+import { config as UserListing } from "@appsmith/pages/AdminSettings/config//userlisting";
+import { config as AuditLogsConfig } from "@appsmith/pages/AdminSettings/config/auditLogsConfig";
ConfigFactory.register(GeneralConfig);
ConfigFactory.register(EmailConfig);
@@ -15,5 +18,8 @@ ConfigFactory.register(Authentication);
ConfigFactory.register(AdvancedConfig);
ConfigFactory.register(VersionConfig);
ConfigFactory.register(BrandingConfig);
+ConfigFactory.register(ProvisioningConfig);
+ConfigFactory.register(UserListing);
+ConfigFactory.register(AuditLogsConfig);
export default ConfigFactory;
diff --git a/app/client/src/ce/pages/AdminSettings/config/provisioning.ts b/app/client/src/ce/pages/AdminSettings/config/provisioning.ts
new file mode 100644
index 0000000000..a17073cb0c
--- /dev/null
+++ b/app/client/src/ce/pages/AdminSettings/config/provisioning.ts
@@ -0,0 +1,19 @@
+import type { AdminConfigType } from "@appsmith/pages/AdminSettings/config/types";
+import {
+ CategoryType,
+ SettingCategories,
+ SettingTypes,
+} from "@appsmith/pages/AdminSettings/config/types";
+import { ProvisioningUpgradePage } from "../../Upgrade/ProvisioningUpgradePage";
+
+export const config: AdminConfigType = {
+ icon: "user-follow-line",
+ type: SettingCategories.PROVISIONING,
+ categoryType: CategoryType.ACL,
+ controlType: SettingTypes.PAGE,
+ component: ProvisioningUpgradePage,
+ title: "Provisioning",
+ canSave: false,
+ needsUpgrade: true,
+ isEnterprise: true,
+} as AdminConfigType;
diff --git a/app/client/src/ce/pages/AdminSettings/config/types.ts b/app/client/src/ce/pages/AdminSettings/config/types.ts
index 75375c09b0..a46675a571 100644
--- a/app/client/src/ce/pages/AdminSettings/config/types.ts
+++ b/app/client/src/ce/pages/AdminSettings/config/types.ts
@@ -56,7 +56,7 @@ export type Setting = ControlType & {
format?: (value: string) => any;
parse?: (value: any) => any;
helpText?: string;
- label?: string;
+ label?: React.ReactNode;
name?: string;
placeholder?: string;
validate?: (value: string, setting?: Setting) => string | void;
@@ -93,6 +93,9 @@ export interface Category {
isConnected?: boolean;
children?: Category[];
icon?: string;
+ categoryType: string;
+ needsUpgrade?: boolean;
+ isEnterprise?: boolean;
}
export const SettingCategories = {
@@ -107,14 +110,15 @@ export const SettingCategories = {
GITHUB_AUTH: "github-auth",
AUDIT_LOGS: "audit-logs",
ACCESS_CONTROL: "access-control",
+ PROVISIONING: "provisioning",
BRANDING: "branding",
};
-export const SettingSubCategories = {
- GOOGLE: "google signup",
- GITHUB: "github signup",
- FORMLOGIN: "form login",
-};
+export enum CategoryType {
+ GENERAL = "general",
+ ACL = "acl",
+ OTHER = "other",
+}
export type AdminConfigType = {
type: string;
@@ -128,4 +132,6 @@ export type AdminConfigType = {
isConnected?: boolean;
icon?: string;
needsUpgrade?: boolean;
+ categoryType: CategoryType;
+ isEnterprise?: boolean;
};
diff --git a/app/client/src/ce/pages/AdminSettings/config/userlisting.ts b/app/client/src/ce/pages/AdminSettings/config/userlisting.ts
new file mode 100644
index 0000000000..421aa33f97
--- /dev/null
+++ b/app/client/src/ce/pages/AdminSettings/config/userlisting.ts
@@ -0,0 +1,18 @@
+import type { AdminConfigType } from "@appsmith/pages/AdminSettings/config/types";
+import {
+ CategoryType,
+ SettingCategories,
+ SettingTypes,
+} from "@appsmith/pages/AdminSettings/config/types";
+import { AccessControlUpgradePage } from "../../Upgrade/AccessControlUpgradePage";
+
+export const config: AdminConfigType = {
+ icon: "user-3-line",
+ type: SettingCategories.ACCESS_CONTROL,
+ categoryType: CategoryType.ACL,
+ controlType: SettingTypes.PAGE,
+ component: AccessControlUpgradePage,
+ title: "Access Control",
+ canSave: false,
+ needsUpgrade: true,
+} as AdminConfigType;
diff --git a/app/client/src/ce/pages/Applications/index.tsx b/app/client/src/ce/pages/Applications/index.tsx
index 71f7c3b5b0..28a9e219be 100644
--- a/app/client/src/ce/pages/Applications/index.tsx
+++ b/app/client/src/ce/pages/Applications/index.tsx
@@ -304,11 +304,7 @@ export function Item(props: {
const LeftPaneDataSection = styled.div<{ isBannerVisible?: boolean }>`
position: relative;
- height: calc(
- 100vh -
- ${(props) =>
- props.theme.homePage.header + 24 + (props.isBannerVisible ? 48 : 0)}px
- );
+ height: calc(100vh - ${(props) => 48 + (props.isBannerVisible ? 48 : 0)}px);
display: flex;
flex-direction: column;
`;
diff --git a/app/client/src/ce/pages/Home/LeftPaneBottomSection.tsx b/app/client/src/ce/pages/Home/LeftPaneBottomSection.tsx
index 7501eef82b..e2496869e2 100644
--- a/app/client/src/ce/pages/Home/LeftPaneBottomSection.tsx
+++ b/app/client/src/ce/pages/Home/LeftPaneBottomSection.tsx
@@ -28,7 +28,6 @@ import {
import { getTenantPermissions } from "@appsmith/selectors/tenantSelectors";
export const Wrapper = styled.div`
- padding-bottom: 26px;
background-color: var(--ads-v2-color-bg);
width: 100%;
margin-top: auto;
@@ -37,7 +36,6 @@ export const Wrapper = styled.div`
export const MenuWrapper = styled.div`
margin-top: 4px;
- margin-bottom: 8px;
`;
export const LeftPaneVersionData = styled.div`
@@ -49,9 +47,8 @@ export const LeftPaneVersionData = styled.div`
margin-top: ${(props) => props.theme.spaces[3]}px;
// reduce border width from 1px from width
width: calc(${(props) => props.theme.homePage.sidebar}px - 1px);
- position: fixed;
- bottom: 0;
- left: 0;
+ position: relative;
+ left: -16px;
padding: 8px 30px;
background: var(--ads-v2-color-bg-subtle);
`;
diff --git a/app/client/src/ce/pages/Upgrade/AccessControlUpgradePage.tsx b/app/client/src/ce/pages/Upgrade/AccessControlUpgradePage.tsx
index 6c8d910b91..899182c42d 100644
--- a/app/client/src/ce/pages/Upgrade/AccessControlUpgradePage.tsx
+++ b/app/client/src/ce/pages/Upgrade/AccessControlUpgradePage.tsx
@@ -52,17 +52,17 @@ export function AccessControlUpgradePage() {
],
targets: [
,
,
,
diff --git a/app/client/src/ce/pages/Upgrade/AuditLogsUpgradePage.tsx b/app/client/src/ce/pages/Upgrade/AuditLogsUpgradePage.tsx
index a2c922d205..9bcd611fe0 100644
--- a/app/client/src/ce/pages/Upgrade/AuditLogsUpgradePage.tsx
+++ b/app/client/src/ce/pages/Upgrade/AuditLogsUpgradePage.tsx
@@ -52,13 +52,17 @@ export function AuditLogsUpgradePage() {
],
targets: [
,
-
,
,
+
,
diff --git a/app/client/src/ce/pages/Upgrade/Footer.tsx b/app/client/src/ce/pages/Upgrade/Footer.tsx
index 8704bdd9c8..02187b4393 100644
--- a/app/client/src/ce/pages/Upgrade/Footer.tsx
+++ b/app/client/src/ce/pages/Upgrade/Footer.tsx
@@ -4,6 +4,7 @@ import { Button, Text } from "design-system";
import type { FooterProps } from "./types";
import {
AVAILABLE_ON_BUSINESS,
+ AVAILABLE_ON_ENTERPRISE,
createMessage,
UPGRADE,
} from "@appsmith/constants/messages";
@@ -31,11 +32,12 @@ const FooterContainer = styled.div`
& .right {
flex-grow: 1;
+ text-align: end;
}
`;
export function FooterComponent(props: FooterProps) {
- const { message, onClick, showHeading = true } = props;
+ const { isEnterprise = false, message, onClick, showHeading = true } = props;
return (
- {createMessage(AVAILABLE_ON_BUSINESS)}
+ {createMessage(
+ isEnterprise ? AVAILABLE_ON_ENTERPRISE : AVAILABLE_ON_BUSINESS,
+ )}
)}
diff --git a/app/client/src/ce/pages/Upgrade/ProvisioningUpgradePage.tsx b/app/client/src/ce/pages/Upgrade/ProvisioningUpgradePage.tsx
new file mode 100644
index 0000000000..6ec7792965
--- /dev/null
+++ b/app/client/src/ce/pages/Upgrade/ProvisioningUpgradePage.tsx
@@ -0,0 +1,68 @@
+import React from "react";
+import type { Carousel, Header } from "./types";
+import UpgradePage from "./UpgradePage";
+import ProvisionDeprovisionUsersImage from "assets/images/upgrade/provisioning/provision-deprovision-users.svg";
+import AutoGroupSyncImage from "assets/images/upgrade/provisioning/auto-group-sync.svg";
+import {
+ ACCESS_CONTROL_UPGRADE_PAGE_FOOTER,
+ AUTO_GROUP_SYNC,
+ AUTO_GROUP_SYNC_DETAIL1,
+ createMessage,
+ INTRODUCING,
+ PROVISION_DEPROVISION_USERS,
+ PROVISION_DEPROVISION_USERS_DETAIL1,
+ PROVISIONING_UPGRADE_PAGE_SUB_HEADING,
+ USER_PROVISIONING_FOR_ENTERPRISES,
+} from "@appsmith/constants/messages";
+import useOnUpgrade from "utils/hooks/useOnUpgrade";
+
+export function ProvisioningUpgradePage() {
+ const { onUpgrade } = useOnUpgrade({
+ logEventName: "PROVISIONING_UPGRADE_ADMIN_SETTINGS",
+ logEventData: { source: "Provisioning" },
+ });
+
+ const header: Header = {
+ heading: createMessage(
+ INTRODUCING,
+ createMessage(USER_PROVISIONING_FOR_ENTERPRISES),
+ ),
+ subHeadings: [createMessage(PROVISIONING_UPGRADE_PAGE_SUB_HEADING)],
+ };
+ const carousel: Carousel = {
+ triggers: [
+ {
+ icon: "user-settings-line",
+ heading: createMessage(PROVISION_DEPROVISION_USERS),
+ details: [createMessage(PROVISION_DEPROVISION_USERS_DETAIL1)],
+ },
+ {
+ icon: "group-line",
+ heading: createMessage(AUTO_GROUP_SYNC),
+ details: [createMessage(AUTO_GROUP_SYNC_DETAIL1)],
+ },
+ ],
+ targets: [
+
,
+
,
+ ],
+ design: "split-left-trigger",
+ };
+ const footer = {
+ onClick: () => {
+ onUpgrade();
+ },
+ message: createMessage(ACCESS_CONTROL_UPGRADE_PAGE_FOOTER),
+ isEnterprise: true,
+ };
+ const props = { header, carousel, footer };
+ return ;
+}
diff --git a/app/client/src/ce/pages/Upgrade/types.ts b/app/client/src/ce/pages/Upgrade/types.ts
index 487c6adde1..50368e07b5 100644
--- a/app/client/src/ce/pages/Upgrade/types.ts
+++ b/app/client/src/ce/pages/Upgrade/types.ts
@@ -25,6 +25,7 @@ export type Footer = {
onClick: ((event: React.MouseEvent) => void) | undefined;
message: string;
showHeading?: boolean;
+ isEnterprise?: boolean;
};
export type UpgradePageProps = {
header: Header;
diff --git a/app/client/src/components/utils/ReduxFormTextField.tsx b/app/client/src/components/utils/ReduxFormTextField.tsx
index 70d3b47b1e..afc12c86fa 100644
--- a/app/client/src/components/utils/ReduxFormTextField.tsx
+++ b/app/client/src/components/utils/ReduxFormTextField.tsx
@@ -25,6 +25,7 @@ const renderComponent = (
componentProps.meta.error &&
componentProps.meta.error
}
+ label={componentProps.label as string}
/>
) : (
setIsOpen(!isOpen)}
renderAs="label"
>
- {createMessage(() => label)}
+ {label}
diff --git a/app/client/src/pages/Settings/FormGroup/Checkbox.tsx b/app/client/src/pages/Settings/FormGroup/Checkbox.tsx
index 35afe0dba2..c376b9f32f 100644
--- a/app/client/src/pages/Settings/FormGroup/Checkbox.tsx
+++ b/app/client/src/pages/Settings/FormGroup/Checkbox.tsx
@@ -19,7 +19,7 @@ const CheckboxWrapper = styled.div`
`;
type CheckboxProps = {
- label?: string;
+ label?: React.ReactNode;
id?: string;
isDisabled?: boolean;
needsUpgrade?: boolean;
diff --git a/app/client/src/pages/Settings/FormGroup/Common.tsx b/app/client/src/pages/Settings/FormGroup/Common.tsx
index 2774acaab6..accb024b98 100644
--- a/app/client/src/pages/Settings/FormGroup/Common.tsx
+++ b/app/client/src/pages/Settings/FormGroup/Common.tsx
@@ -57,7 +57,7 @@ export function FormGroup({ children, className, setting }: FieldHelperProps) {
kind="body-m"
renderAs="label"
>
- {createMessage(() => setting.label || "")}
+ {setting.label || ""}
)}
{setting.isRequired && (
diff --git a/app/client/src/pages/Settings/FormGroup/CopyUrlForm.tsx b/app/client/src/pages/Settings/FormGroup/CopyUrlForm.tsx
index 4aa99c0a82..97b3f7b7e7 100644
--- a/app/client/src/pages/Settings/FormGroup/CopyUrlForm.tsx
+++ b/app/client/src/pages/Settings/FormGroup/CopyUrlForm.tsx
@@ -24,7 +24,7 @@ const HeaderWrapper = styled.div`
function CopyUrlForm(props: {
value: string;
- title: string;
+ title: React.ReactNode;
helpText?: string;
tooltip?: string;
fieldName?: string;
diff --git a/app/client/src/pages/Settings/FormGroup/Link.tsx b/app/client/src/pages/Settings/FormGroup/Link.tsx
index a246c498a3..8dc57fb74f 100644
--- a/app/client/src/pages/Settings/FormGroup/Link.tsx
+++ b/app/client/src/pages/Settings/FormGroup/Link.tsx
@@ -61,7 +61,7 @@ export default function Link({ setting }: SettingComponentProps) {
data-testid="admin-settings-link-label"
renderAs="span"
>
- {createMessage(() => setting.label || "")}
+ {setting.label || ""}
diff --git a/app/client/src/pages/Settings/FormGroup/TagInputField.tsx b/app/client/src/pages/Settings/FormGroup/TagInputField.tsx
index 7dc3823d39..8f4cdedf6d 100644
--- a/app/client/src/pages/Settings/FormGroup/TagInputField.tsx
+++ b/app/client/src/pages/Settings/FormGroup/TagInputField.tsx
@@ -29,7 +29,7 @@ type TagListFieldProps = {
name: string;
placeholder: string;
type: string;
- label?: string;
+ label?: React.ReactNode;
intent: Intent;
setting: Setting;
customError?: (err: string) => void;
diff --git a/app/client/src/pages/Settings/FormGroup/Toggle.tsx b/app/client/src/pages/Settings/FormGroup/Toggle.tsx
index 90822a926d..e9645450e3 100644
--- a/app/client/src/pages/Settings/FormGroup/Toggle.tsx
+++ b/app/client/src/pages/Settings/FormGroup/Toggle.tsx
@@ -17,7 +17,7 @@ function FieldToggleWithToggleText(
toggleText?: (value: boolean) => string,
id?: string,
isPropertyDisabled?: boolean,
- label?: string,
+ label?: React.ReactNode,
) {
return function FieldToggle(
componentProps: FormTextFieldProps & {
diff --git a/app/client/src/pages/Settings/FormGroup/group.tsx b/app/client/src/pages/Settings/FormGroup/group.tsx
index 29f8c43f6d..b26ba724d1 100644
--- a/app/client/src/pages/Settings/FormGroup/group.tsx
+++ b/app/client/src/pages/Settings/FormGroup/group.tsx
@@ -9,11 +9,7 @@ import Button from "./Button";
import { getFormValues } from "redux-form";
import { SETTINGS_FORM_NAME } from "@appsmith/constants/forms";
import { useSelector } from "react-redux";
-import {
- createMessage,
- LEARN_MORE,
- REDIRECT_URL_TOOLTIP,
-} from "@appsmith/constants/messages";
+import { createMessage, LEARN_MORE } from "@appsmith/constants/messages";
import { Callout, Text } from "design-system";
import CopyUrlForm from "./CopyUrlForm";
import Accordion from "./Accordion";
@@ -200,7 +196,7 @@ export default function Group({
},
]}
>
- {createMessage(() => setting.label || "")}
+ {setting.label || ""}
);
@@ -250,9 +246,7 @@ export default function Group({
fieldName={setting.fieldName || ""}
helpText={setting.helpText}
title={setting.label || ""}
- tooltip={
- setting.tooltip || createMessage(REDIRECT_URL_TOOLTIP)
- }
+ tooltip={setting.tooltip}
value={setting.value || ""}
/>
diff --git a/app/client/src/pages/Settings/config/ConfigFactory.ts b/app/client/src/pages/Settings/config/ConfigFactory.ts
index 81440d8c33..4d354b244c 100644
--- a/app/client/src/pages/Settings/config/ConfigFactory.ts
+++ b/app/client/src/pages/Settings/config/ConfigFactory.ts
@@ -43,6 +43,9 @@ export class ConfigFactory {
title: config.title,
slug: config.type,
subText: config.subText,
+ categoryType: config.categoryType,
+ needsUpgrade: config.needsUpgrade,
+ isEnterprise: config.isEnterprise,
children: config?.children?.map((child) =>
ConfigFactory.getCategory(child),
),
diff --git a/app/client/src/pages/Settings/config/advanced.ts b/app/client/src/pages/Settings/config/advanced.ts
index b35ed6c0a3..94ed3a1369 100644
--- a/app/client/src/pages/Settings/config/advanced.ts
+++ b/app/client/src/pages/Settings/config/advanced.ts
@@ -1,5 +1,6 @@
import type { AdminConfigType } from "@appsmith/pages/AdminSettings/config/types";
import {
+ CategoryType,
SettingCategories,
SettingSubtype,
SettingTypes,
@@ -8,6 +9,7 @@ import {
export const config: AdminConfigType = {
icon: "settings-line",
type: SettingCategories.ADVANCED,
+ categoryType: CategoryType.GENERAL,
controlType: SettingTypes.GROUP,
title: "Advanced",
canSave: true,
diff --git a/app/client/src/pages/Settings/config/email.ts b/app/client/src/pages/Settings/config/email.ts
index 70008f3bac..be832e9776 100644
--- a/app/client/src/pages/Settings/config/email.ts
+++ b/app/client/src/pages/Settings/config/email.ts
@@ -6,6 +6,7 @@ import { ReduxActionTypes } from "@appsmith/constants/ReduxActionConstants";
import { isNil, omitBy } from "lodash";
import type { AdminConfigType } from "@appsmith/pages/AdminSettings/config/types";
import {
+ CategoryType,
SettingCategories,
SettingSubtype,
SettingTypes,
@@ -14,6 +15,7 @@ import {
export const config: AdminConfigType = {
icon: "mail-line",
type: SettingCategories.EMAIL,
+ categoryType: CategoryType.GENERAL,
controlType: SettingTypes.GROUP,
title: "Email",
canSave: true,
diff --git a/app/client/src/pages/Settings/config/googleMaps.ts b/app/client/src/pages/Settings/config/googleMaps.ts
index 336981b8f6..dec78ed259 100644
--- a/app/client/src/pages/Settings/config/googleMaps.ts
+++ b/app/client/src/pages/Settings/config/googleMaps.ts
@@ -1,6 +1,7 @@
import { GOOGLE_MAPS_SETUP_DOC } from "constants/ThirdPartyConstants";
import type { AdminConfigType } from "@appsmith/pages/AdminSettings/config/types";
import {
+ CategoryType,
SettingCategories,
SettingSubtype,
SettingTypes,
@@ -9,6 +10,7 @@ import {
export const config: AdminConfigType = {
icon: "map-pin-2-line",
type: SettingCategories.GOOGLE_MAPS,
+ categoryType: CategoryType.GENERAL,
controlType: SettingTypes.GROUP,
title: "Google Maps",
canSave: true,
diff --git a/app/client/src/pages/Settings/config/version.ts b/app/client/src/pages/Settings/config/version.ts
index 9f1cedb301..3edbdc62e1 100644
--- a/app/client/src/pages/Settings/config/version.ts
+++ b/app/client/src/pages/Settings/config/version.ts
@@ -6,6 +6,7 @@ import type {
Setting,
} from "@appsmith/pages/AdminSettings/config/types";
import {
+ CategoryType,
SettingCategories,
SettingTypes,
} from "@appsmith/pages/AdminSettings/config/types";
@@ -16,6 +17,7 @@ const isAirgappedInstance = isAirgapped();
export const config: AdminConfigType = {
icon: "timer-2-line",
type: SettingCategories.VERSION,
+ categoryType: CategoryType.GENERAL,
controlType: SettingTypes.GROUP,
title: "Version",
canSave: false,
diff --git a/app/client/src/utils/AnalyticsUtil.tsx b/app/client/src/utils/AnalyticsUtil.tsx
index 3aa20336e9..33def0c072 100644
--- a/app/client/src/utils/AnalyticsUtil.tsx
+++ b/app/client/src/utils/AnalyticsUtil.tsx
@@ -239,6 +239,7 @@ export type EventName =
| "BILLING_UPGRADE_ADMIN_SETTINGS"
| "AUDIT_LOGS_UPGRADE_ADMIN_SETTINGS"
| "GAC_UPGRADE_CLICK_ADMIN_SETTINGS"
+ | "PROVISIONING_UPGRADE_ADMIN_SETTINGS"
| "REFLOW_BETA_FLAG"
| "CONTAINER_JUMP"
| "CONNECT_GIT_CLICK"