diff --git a/packages/nc-gui/composables/useGlobal/state.ts b/packages/nc-gui/composables/useGlobal/state.ts
index 4fab0a5c72..318dea2a43 100644
--- a/packages/nc-gui/composables/useGlobal/state.ts
+++ b/packages/nc-gui/composables/useGlobal/state.ts
@@ -109,6 +109,7 @@ export function useGlobalState(storageKey = 'nocodb-gui-v2'): State {
automationLogLevel: 'OFF',
disableEmailAuth: false,
dashboardPath: '/dashboard',
+ inviteOnlySignup: false,
})
/** reactive token payload */
diff --git a/packages/nc-gui/composables/useGlobal/types.ts b/packages/nc-gui/composables/useGlobal/types.ts
index f7e640cd7c..9efbfacb45 100644
--- a/packages/nc-gui/composables/useGlobal/types.ts
+++ b/packages/nc-gui/composables/useGlobal/types.ts
@@ -34,6 +34,7 @@ export interface AppInfo {
disableEmailAuth: boolean
mainSubDomain?: string
dashboardPath: string
+ inviteOnlySignup: boolean
}
export interface StoredState {
diff --git a/packages/nc-gui/pages/signin.vue b/packages/nc-gui/pages/signin.vue
index 31cc73eb4e..63d3b35d77 100644
--- a/packages/nc-gui/pages/signin.vue
+++ b/packages/nc-gui/pages/signin.vue
@@ -184,7 +184,7 @@ function navigateForgotPassword() {
-
+
{{ $t('msg.info.signUp.dontHaveAccount') }}
{{ $t('general.signUp') }}
diff --git a/packages/nocodb/src/services/utils.service.ts b/packages/nocodb/src/services/utils.service.ts
index 9cd676aef3..3abeeb31e1 100644
--- a/packages/nocodb/src/services/utils.service.ts
+++ b/packages/nocodb/src/services/utils.service.ts
@@ -5,10 +5,10 @@ import { ViewTypes } from 'nocodb-sdk';
import { ConfigService } from '@nestjs/config';
import { useAgent } from 'request-filtering-agent';
import type { AppConfig } from '~/interface/config';
-import { NC_ATTACHMENT_FIELD_SIZE } from '~/constants';
+import {NC_APP_SETTINGS, NC_ATTACHMENT_FIELD_SIZE} from '~/constants';
import SqlMgrv2 from '~/db/sql-mgr/v2/SqlMgrv2';
import { NcError } from '~/helpers/catchError';
-import { Base, User } from '~/models';
+import {Base, Store, User} from '~/models';
import Noco from '~/Noco';
import NcConnectionMgrv2 from '~/utils/common/NcConnectionMgrv2';
import { MetaTable } from '~/utils/globals';
@@ -365,6 +365,13 @@ export class UtilsService {
async appInfo(param: { req: { ncSiteUrl: string } }) {
const baseHasAdmin = !(await User.isFirst());
+
+ let settings: { invite_only_signup?: boolean } = {};
+ try {
+ settings = JSON.parse((await Store.get(NC_APP_SETTINGS))?.value);
+ } catch {}
+
+
const oidcAuthEnabled = !!(
process.env.NC_OIDC_ISSUER &&
process.env.NC_OIDC_AUTHORIZATION_URL &&
@@ -384,10 +391,10 @@ export class UtilsService {
type: 'rest',
env: process.env.NODE_ENV,
googleAuthEnabled: !!(
- process.env.NC_GOOGLE_CLIENT_ID && process.env.NC_GOOGLE_CLIENT_SECRET
+ process.env.NC_GOOGLE_CLIENT_ID && process.env.NC_GOOGLE_CLIENT_SECRET
),
githubAuthEnabled: !!(
- process.env.NC_GITHUB_CLIENT_ID && process.env.NC_GITHUB_CLIENT_SECRET
+ process.env.NC_GITHUB_CLIENT_ID && process.env.NC_GITHUB_CLIENT_SECRET
),
oidcAuthEnabled,
oidcProviderName,
@@ -395,8 +402,8 @@ export class UtilsService {
connectToExternalDB: !process.env.NC_CONNECT_TO_EXTERNAL_DB_DISABLED,
version: packageVersion,
defaultLimit: Math.max(
- Math.min(defaultLimitConfig.limitDefault, defaultLimitConfig.limitMax),
- defaultLimitConfig.limitMin,
+ Math.min(defaultLimitConfig.limitDefault, defaultLimitConfig.limitMax),
+ defaultLimitConfig.limitMin,
),
defaultGroupByLimit: defaultGroupByLimitConfig,
timezone: defaultConnectionConfig.timezone,
@@ -413,9 +420,10 @@ export class UtilsService {
disableEmailAuth: this.configService.get('auth.disableEmailAuth', {
infer: true,
}),
- mainSubDomain: this.configService.get('mainSubDomain', { infer: true }),
- dashboardPath: this.configService.get('dashboardPath', { infer: true }),
- };
+ mainSubDomain: this.configService.get('mainSubDomain', {infer: true}),
+ dashboardPath: this.configService.get('dashboardPath', {infer: true}),
+ inviteOnlySignup: settings.invite_only_signup,
+ }
return result;
}