diff --git a/app/client/docker/templates/nginx-app-http.conf.template b/app/client/docker/templates/nginx-app-http.conf.template
index 58a4eda133..3fb6cdb6b9 100644
--- a/app/client/docker/templates/nginx-app-http.conf.template
+++ b/app/client/docker/templates/nginx-app-http.conf.template
@@ -42,6 +42,7 @@ server {
sub_filter __APPSMITH_DISABLE_TELEMETRY__ '${APPSMITH_DISABLE_TELEMETRY}';
sub_filter __APPSMITH_CLOUD_SERVICES_BASE_URL__ '${APPSMITH_CLOUD_SERVICES_BASE_URL}';
sub_filter __APPSMITH_RECAPTCHA_SITE_KEY__ '${APPSMITH_RECAPTCHA_SITE_KEY}';
+ sub_filter __APPSMITH_FORM_LOGIN_DISABLED__ '${APPSMITH_FORM_LOGIN_DISABLED}';
}
location /f {
diff --git a/app/client/docker/templates/nginx-app-https.conf.template b/app/client/docker/templates/nginx-app-https.conf.template
index 9b35bdeb57..c2ec7ddc86 100644
--- a/app/client/docker/templates/nginx-app-https.conf.template
+++ b/app/client/docker/templates/nginx-app-https.conf.template
@@ -52,6 +52,7 @@ server {
sub_filter __APPSMITH_DISABLE_TELEMETRY__ '${APPSMITH_DISABLE_TELEMETRY}';
sub_filter __APPSMITH_CLOUD_SERVICES_BASE_URL__ '${APPSMITH_CLOUD_SERVICES_BASE_URL}';
sub_filter __APPSMITH_RECAPTCHA_SITE_KEY__ '${APPSMITH_RECAPTCHA_SITE_KEY}';
+ sub_filter __APPSMITH_FORM_LOGIN_DISABLED__ '${APPSMITH_FORM_LOGIN_DISABLED}';
}
location /f {
diff --git a/app/client/docker/templates/nginx-app.conf.template b/app/client/docker/templates/nginx-app.conf.template
index 5302393107..31ccf48d35 100644
--- a/app/client/docker/templates/nginx-app.conf.template
+++ b/app/client/docker/templates/nginx-app.conf.template
@@ -50,6 +50,7 @@ server {
sub_filter __APPSMITH_CLOUD_SERVICES_BASE_URL__ '${APPSMITH_CLOUD_SERVICES_BASE_URL}';
sub_filter __APPSMITH_RECAPTCHA_SITE_KEY__ '${APPSMITH_RECAPTCHA_SITE_KEY}';
sub_filter __APPSMITH_DISABLE_INTERCOM__ '${APPSMITH_DISABLE_INTERCOM}';
+ sub_filter __APPSMITH_FORM_LOGIN_DISABLED__ '${APPSMITH_FORM_LOGIN_DISABLED}';
}
location /f {
diff --git a/app/client/jest.config.js b/app/client/jest.config.js
index b14ad020e2..3274979d95 100644
--- a/app/client/jest.config.js
+++ b/app/client/jest.config.js
@@ -41,6 +41,7 @@ module.exports = {
},
enableGoogleOAuth: parseConfig("__APPSMITH_OAUTH2_GOOGLE_CLIENT_ID__"),
enableGithubOAuth: parseConfig("__APPSMITH_OAUTH2_GITHUB_CLIENT_ID__"),
+ disableLoginForm: parseConfig("__APPSMITH_FORM_LOGIN_DISABLED__"),
enableRapidAPI: parseConfig("__APPSMITH_MARKETPLACE_ENABLED__"),
segment: {
apiKey: parseConfig("__APPSMITH_SEGMENT_KEY__"),
diff --git a/app/client/public/index.html b/app/client/public/index.html
index 2f73b735a7..b154ca1df6 100755
--- a/app/client/public/index.html
+++ b/app/client/public/index.html
@@ -180,6 +180,7 @@
},
enableGoogleOAuth: parseConfig("__APPSMITH_OAUTH2_GOOGLE_CLIENT_ID__"),
enableGithubOAuth: parseConfig("__APPSMITH_OAUTH2_GITHUB_CLIENT_ID__"),
+ disableLoginForm: parseConfig("__APPSMITH_FORM_LOGIN_DISABLED__"),
enableRapidAPI: parseConfig("__APPSMITH_MARKETPLACE_ENABLED__"),
segment: {
apiKey: parseConfig("__APPSMITH_SEGMENT_KEY__"),
diff --git a/app/client/src/configs/index.ts b/app/client/src/configs/index.ts
index f143c1ff51..a79570c17b 100644
--- a/app/client/src/configs/index.ts
+++ b/app/client/src/configs/index.ts
@@ -16,6 +16,7 @@ export type INJECTED_CONFIGS = {
};
enableGoogleOAuth: boolean;
enableGithubOAuth: boolean;
+ disableLoginForm: boolean;
enableRapidAPI: boolean;
segment: {
apiKey: string;
@@ -79,6 +80,7 @@ const getConfigsFromEnvVars = (): INJECTED_CONFIGS => {
enableGithubOAuth: process.env.REACT_APP_OAUTH2_GITHUB_CLIENT_ID
? process.env.REACT_APP_OAUTH2_GITHUB_CLIENT_ID.length > 0
: false,
+ disableLoginForm: !!process.env.APPSMITH_FORM_LOGIN_DISABLED,
segment: {
apiKey: process.env.REACT_APP_SEGMENT_KEY || "",
ceKey: process.env.REACT_APP_SEGMENT_CE_KEY || "",
@@ -258,6 +260,8 @@ export const getAppsmithConfigs = (): AppsmithUIConfigs => {
enableGithubOAuth:
ENV_CONFIG.enableGithubOAuth ||
APPSMITH_FEATURE_CONFIGS.enableGithubOAuth,
+ disableLoginForm:
+ ENV_CONFIG.disableLoginForm || APPSMITH_FEATURE_CONFIGS.disableLoginForm,
enableGoogleOAuth:
ENV_CONFIG.enableGoogleOAuth ||
APPSMITH_FEATURE_CONFIGS.enableGoogleOAuth,
diff --git a/app/client/src/configs/types.ts b/app/client/src/configs/types.ts
index f6db656266..bffe548830 100644
--- a/app/client/src/configs/types.ts
+++ b/app/client/src/configs/types.ts
@@ -55,6 +55,7 @@ export type AppsmithUIConfigs = {
enableRapidAPI: boolean;
enableGoogleOAuth: boolean;
enableGithubOAuth: boolean;
+ disableLoginForm: boolean;
enableMixpanel: boolean;
enableTNCPP: boolean;
diff --git a/app/client/src/pages/UserAuth/Login.tsx b/app/client/src/pages/UserAuth/Login.tsx
index d249245714..d30d629e67 100644
--- a/app/client/src/pages/UserAuth/Login.tsx
+++ b/app/client/src/pages/UserAuth/Login.tsx
@@ -50,7 +50,11 @@ import PerformanceTracker, {
} from "utils/PerformanceTracker";
import { getIsSafeRedirectURL } from "utils/helpers";
import { getCurrentUser } from "selectors/usersSelectors";
-const { enableGithubOAuth, enableGoogleOAuth } = getAppsmithConfigs();
+const {
+ disableLoginForm,
+ enableGithubOAuth,
+ enableGoogleOAuth,
+} = getAppsmithConfigs();
const validate = (values: LoginFormValues) => {
const errors: LoginFormValues = {};
@@ -116,15 +120,17 @@ export function Login(props: LoginFormProps) {
{createMessage(LOGIN_PAGE_TITLE)}
-
- {createMessage(NEW_TO_APPSMITH)}
-
- {createMessage(LOGIN_PAGE_SIGN_UP_LINK_TEXT)}
-
-
+ {!disableLoginForm && (
+
+ {createMessage(NEW_TO_APPSMITH)}
+
+ {createMessage(LOGIN_PAGE_SIGN_UP_LINK_TEXT)}
+
+
+ )}
{showError && (
0 && (
)}
-
-
-
-
-
-
-
+ {!disableLoginForm && (
+ <>
+
+
+
+
+
+
+
-
-
-
-
-
- {createMessage(LOGIN_PAGE_FORGOT_PASSWORD_TEXT)}
-
-
+
+
+
+
+
+ {createMessage(LOGIN_PAGE_FORGOT_PASSWORD_TEXT)}
+
+
+ >
+ )}
>
);
}
diff --git a/app/client/src/pages/UserAuth/SignUp.tsx b/app/client/src/pages/UserAuth/SignUp.tsx
index 6bd251514f..52b05a48c5 100644
--- a/app/client/src/pages/UserAuth/SignUp.tsx
+++ b/app/client/src/pages/UserAuth/SignUp.tsx
@@ -1,8 +1,13 @@
-import React from "react";
+import React, { useEffect } from "react";
import { reduxForm, InjectedFormProps, formValueSelector } from "redux-form";
import { AUTH_LOGIN_URL } from "constants/routes";
import { SIGNUP_FORM_NAME } from "constants/forms";
-import { RouteComponentProps, useLocation, withRouter } from "react-router-dom";
+import {
+ RouteComponentProps,
+ useHistory,
+ useLocation,
+ withRouter,
+} from "react-router-dom";
import {
AuthCardHeader,
AuthCardNavLink,
@@ -61,7 +66,7 @@ declare global {
grecaptcha: any;
}
}
-const { googleRecaptchaSiteKey } = getAppsmithConfigs();
+const { disableLoginForm, googleRecaptchaSiteKey } = getAppsmithConfigs();
const validate = (values: SignupFormValues) => {
const errors: SignupFormValues = {};
@@ -85,6 +90,12 @@ type SignUpFormProps = InjectedFormProps<
RouteComponentProps<{ email: string }> & { theme: Theme; emailValue: string };
export function SignUp(props: SignUpFormProps) {
+ const history = useHistory();
+ useEffect(() => {
+ if (disableLoginForm) {
+ history.replace(AUTH_LOGIN_URL);
+ }
+ }, []);
const { emailValue: email, error, pristine, submitting, valid } = props;
const isFormValid = valid && email && !isEmptyString(email);