Skip to content

Commit 6f67cbf

Browse files
committed
use console var
1 parent 71ae600 commit 6f67cbf

9 files changed

Lines changed: 36 additions & 25 deletions

File tree

.env.example

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,4 @@ PUBLIC_APPWRITE_MULTI_REGION=false
44
PUBLIC_APPWRITE_ENDPOINT=http://localhost/v1
55
PUBLIC_STRIPE_KEY=
66
PUBLIC_GROWTH_ENDPOINT=
7-
PUBLIC_CONSOLE_EMAIL_VERIFICATION=false
87
PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS=true

.github/workflows/publish.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ jobs:
4141
"PUBLIC_CONSOLE_MODE=cloud"
4242
"PUBLIC_CONSOLE_FEATURE_FLAGS="
4343
"PUBLIC_APPWRITE_MULTI_REGION=true"
44-
"PUBLIC_CONSOLE_EMAIL_VERIFICATION=true"
4544
"PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS=false"
4645
"PUBLIC_GROWTH_ENDPOINT=${{ secrets.PUBLIC_GROWTH_ENDPOINT }}"
4746
"PUBLIC_STRIPE_KEY=${{ secrets.PUBLIC_STRIPE_KEY }}"
@@ -84,7 +83,6 @@ jobs:
8483
"PUBLIC_CONSOLE_MODE=cloud"
8584
"PUBLIC_CONSOLE_FEATURE_FLAGS="
8685
"PUBLIC_APPWRITE_MULTI_REGION=true"
87-
"PUBLIC_CONSOLE_EMAIL_VERIFICATION=true"
8886
"PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS=false"
8987
"PUBLIC_GROWTH_ENDPOINT=${{ secrets.PUBLIC_GROWTH_ENDPOINT }}"
9088
"PUBLIC_STRIPE_KEY=${{ secrets.PUBLIC_STRIPE_KEY_STAGE }}"
@@ -124,7 +122,6 @@ jobs:
124122
build-args: |
125123
"PUBLIC_CONSOLE_MODE=self-hosted"
126124
"PUBLIC_APPWRITE_MULTI_REGION=false"
127-
"PUBLIC_CONSOLE_EMAIL_VERIFICATION=false"
128125
"PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS=true"
129126
"PUBLIC_CONSOLE_FEATURE_FLAGS="
130127
"PUBLIC_GROWTH_ENDPOINT=${{ secrets.PUBLIC_GROWTH_ENDPOINT }}"
@@ -164,7 +161,6 @@ jobs:
164161
build-args: |
165162
"PUBLIC_CONSOLE_MODE=cloud"
166163
"PUBLIC_APPWRITE_MULTI_REGION=false"
167-
"PUBLIC_CONSOLE_EMAIL_VERIFICATION=false"
168164
"PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS=false"
169165
"PUBLIC_CONSOLE_FEATURE_FLAGS="
170166
"PUBLIC_STRIPE_KEY=${{ secrets.PUBLIC_STRIPE_KEY_STAGE }}"

AGENTS.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,6 @@ Set via `.env` (copy `.env.example`). All prefixed with `PUBLIC_` for SvelteKit:
222222
| `PUBLIC_STRIPE_KEY` | -- | Stripe public key (cloud only) |
223223
| `PUBLIC_GROWTH_ENDPOINT` | -- | Analytics endpoint |
224224
| `PUBLIC_CONSOLE_FEATURE_FLAGS` | -- | Feature flags |
225-
| `PUBLIC_CONSOLE_EMAIL_VERIFICATION` | `false` | Require email verification |
226225
| `PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS` | `true` | Mock AI in dev |
227226

228227
## Common pitfalls

Dockerfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ ADD ./static /app/static
1717
ARG PUBLIC_CONSOLE_MODE
1818
ARG PUBLIC_CONSOLE_FEATURE_FLAGS
1919
ARG PUBLIC_APPWRITE_MULTI_REGION
20-
ARG PUBLIC_CONSOLE_EMAIL_VERIFICATION
2120
ARG PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS
2221
ARG PUBLIC_APPWRITE_ENDPOINT
2322
ARG PUBLIC_GROWTH_ENDPOINT
@@ -31,7 +30,6 @@ ENV PUBLIC_GROWTH_ENDPOINT=$PUBLIC_GROWTH_ENDPOINT
3130
ENV PUBLIC_CONSOLE_MODE=$PUBLIC_CONSOLE_MODE
3231
ENV PUBLIC_CONSOLE_FEATURE_FLAGS=$PUBLIC_CONSOLE_FEATURE_FLAGS
3332
ENV PUBLIC_APPWRITE_MULTI_REGION=$PUBLIC_APPWRITE_MULTI_REGION
34-
ENV PUBLIC_CONSOLE_EMAIL_VERIFICATION=$PUBLIC_CONSOLE_EMAIL_VERIFICATION
3533
ENV PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS=$PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS
3634
ENV PUBLIC_STRIPE_KEY=$PUBLIC_STRIPE_KEY
3735
ENV PUBLIC_CONSOLE_FINGERPRINT_KEY=$PUBLIC_CONSOLE_FINGERPRINT_KEY

build.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ async function main() {
2828
logEnv('MULTI REGION', env?.PUBLIC_APPWRITE_MULTI_REGION);
2929
logEnv('APPWRITE ENDPOINT', env?.PUBLIC_APPWRITE_ENDPOINT, 'relative');
3030
logEnv('GROWTH ENDPOINT', env?.PUBLIC_GROWTH_ENDPOINT);
31-
logEnv('CONSOLE EMAIL VERIFICATION', env?.PUBLIC_CONSOLE_EMAIL_VERIFICATION);
3231
logEnv('CONSOLE MOCK AI SUGGESTIONS', env?.PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS);
3332
log();
3433
logDelimiter();

src/lib/system.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export const VARS = {
1111
APPWRITE_ENDPOINT: env.PUBLIC_APPWRITE_ENDPOINT ?? undefined,
1212
GROWTH_ENDPOINT: env.PUBLIC_GROWTH_ENDPOINT ?? undefined,
1313
PUBLIC_STRIPE_KEY: env.PUBLIC_STRIPE_KEY ?? undefined,
14-
EMAIL_VERIFICATION: env.PUBLIC_CONSOLE_EMAIL_VERIFICATION === 'true',
1514
MOCK_AI_SUGGESTIONS: (env.PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS ?? 'true') === 'true'
1615
};
1716

src/routes/(console)/+layout.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,17 @@ import { makePlansMap } from '$lib/helpers/billing';
77
import { plansInfo as plansInfoStore } from '$lib/stores/billing';
88
import { normalizeConsoleVariables } from '$lib/helpers/domains';
99
import { syncServerTime } from '$lib/helpers/fingerprint';
10+
import { redirect } from '@sveltejs/kit';
11+
import { resolve } from '$app/paths';
1012

11-
export const load: LayoutLoad = async ({ depends, parent }) => {
12-
const { organizations, plansInfo } = await parent();
13+
function isEmailVerificationEnabledFromBackend(flag: string | undefined): boolean {
14+
if (!flag) return false;
15+
const normalized = flag.toLowerCase();
16+
return normalized === 'enabled' || normalized === 'true' || normalized === '1';
17+
}
18+
19+
export const load: LayoutLoad = async ({ depends, parent, url }) => {
20+
const { organizations, plansInfo, account } = await parent();
1321

1422
depends(Dependencies.RUNTIMES);
1523
depends(Dependencies.CONSOLE_VARIABLES);
@@ -42,6 +50,18 @@ export const load: LayoutLoad = async ({ depends, parent }) => {
4250

4351
const consoleVariables = normalizeConsoleVariables(rawConsoleVariables);
4452

53+
const emailVerificationEnabled = isEmailVerificationEnabledFromBackend(
54+
consoleVariables._APP_CONSOLE_EMAIL_VERIFICATION
55+
);
56+
57+
if (isCloud && account && !account.emailVerification && emailVerificationEnabled) {
58+
const isVerifyEmailPage = url.pathname === resolve('/verify-email');
59+
60+
if (!isVerifyEmailPage) {
61+
redirect(303, resolve('/verify-email'));
62+
}
63+
}
64+
4565
let fallbackPlansInfoArray = plansInfo;
4666
if (!fallbackPlansInfoArray) {
4767
fallbackPlansInfoArray = makePlansMap(plansArray);

src/routes/(console)/verify-email/+page.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,24 @@ import type { PageLoad } from './$types';
44
import { Dependencies } from '$lib/constants';
55
import { sdk } from '$lib/stores/sdk';
66
import { addNotification } from '$lib/stores/notifications';
7-
import { VARS } from '$lib/system';
7+
8+
function isEmailVerificationEnabledFromBackend(flag: string | undefined): boolean {
9+
if (!flag) return false;
10+
const normalized = flag.toLowerCase();
11+
return normalized === 'enabled' || normalized === 'true' || normalized === '1';
12+
}
813

914
export const load: PageLoad = async ({ parent, depends, url }) => {
10-
if (!VARS.EMAIL_VERIFICATION) {
15+
const { account, consoleVariables } = await parent();
16+
17+
const emailVerificationEnabled = isEmailVerificationEnabledFromBackend(
18+
consoleVariables?._APP_CONSOLE_EMAIL_VERIFICATION
19+
);
20+
21+
if (!emailVerificationEnabled) {
1122
redirect(303, resolve('/'));
1223
}
1324

14-
const { account } = await parent();
1525
depends(Dependencies.ACCOUNT);
1626

1727
const user = url.searchParams.get('userId') ?? null;

src/routes/+layout.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { redirectTo } from './store';
99
import { resolve } from '$app/paths';
1010
import type { Account } from '$lib/stores/user';
1111
import { type AppwriteException, Platform } from '@appwrite.io/console';
12-
import { isCloud, VARS } from '$lib/system';
12+
import { isCloud } from '$lib/system';
1313
import { checkPricingRefAndRedirect } from '$lib/helpers/pricingRedirect';
1414
import { getTeamOrOrganizationList } from '$lib/stores/organization';
1515
import { makePlansMap } from '$lib/helpers/billing';
@@ -32,15 +32,6 @@ export const load: LayoutLoad = async ({ depends, url, route }) => {
3232
}
3333

3434
if (account) {
35-
if (isCloud && !account.emailVerification && VARS.EMAIL_VERIFICATION) {
36-
const isConsoleRoute = route.id?.startsWith('/(console)');
37-
const isVerifyEmailPage = url.pathname === resolve('/verify-email');
38-
39-
if (isConsoleRoute && !isVerifyEmailPage) {
40-
redirect(303, resolve('/verify-email'));
41-
}
42-
}
43-
4435
const plansInfo = await getPlatformPlans();
4536
plansInfoStore.set(plansInfo);
4637

0 commit comments

Comments
 (0)