diff --git a/bun.lock b/bun.lock index 664450fbeb..ef28594b87 100644 --- a/bun.lock +++ b/bun.lock @@ -90,7 +90,7 @@ }, }, "overrides": { - "brace-expansion": ">=5.0.7", + "brace-expansion": ">=5.0.8", "cookie": "^0.7.0", "devalue": "^5.8.1", "flatted": "^3.4.2", @@ -98,6 +98,7 @@ "js-yaml": "^4.3.0", "minimatch": "10.2.3", "picomatch": "^4.0.4", + "postcss": "^8.5.18", "vite": "npm:rolldown-vite@latest", "ws": "^8.21.0", "yaml": "^1.10.3", @@ -649,7 +650,7 @@ "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], - "brace-expansion": ["brace-expansion@5.0.7", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA=="], + "brace-expansion": ["brace-expansion@5.0.8", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], @@ -1193,7 +1194,7 @@ "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="], + "postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], "postcss-load-config": ["postcss-load-config@3.1.4", "", { "dependencies": { "lilconfig": "^2.0.5", "yaml": "^1.10.2" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg=="], @@ -1573,7 +1574,7 @@ "popmotion/tslib": ["tslib@2.4.0", "", {}, "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="], - "postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "postcss/nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], "style-value-types/tslib": ["tslib@2.4.0", "", {}, "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="], diff --git a/package.json b/package.json index 38942e9616..72c88a0eb2 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "overrides": { "vite": "npm:rolldown-vite@latest", "minimatch": "10.2.3", - "brace-expansion": ">=5.0.7", + "brace-expansion": ">=5.0.8", "js-yaml": "^4.3.0", "immutable": "^5.1.8", "flatted": "^3.4.2", @@ -112,6 +112,7 @@ "yaml": "^1.10.3", "picomatch": "^4.0.4", "cookie": "^0.7.0", - "ws": "^8.21.0" + "ws": "^8.21.0", + "postcss": "^8.5.18" } } diff --git a/src/routes/(public)/auth/oauth2/failure/+page.svelte b/src/routes/(public)/auth/oauth2/failure/+page.svelte index df84e3a468..5ab80ecaf4 100644 --- a/src/routes/(public)/auth/oauth2/failure/+page.svelte +++ b/src/routes/(public)/auth/oauth2/failure/+page.svelte @@ -3,11 +3,27 @@ import { Typography } from '@appwrite.io/pink-svelte'; const project = page.url.searchParams.get('project'); + const errorParam = page.url.searchParams.get('error'); const link = `appwrite-callback-${project}://${page.url.search}`; + type OAuthError = { + message?: string; + type?: string; + code?: number; + }; + + let oauthError: OAuthError | null = null; + if (errorParam) { + try { + oauthError = JSON.parse(errorParam) as OAuthError; + } catch { + oauthError = { message: errorParam }; + } + } + const redirect = new Promise((_resolve, reject) => { if (!project) { - reject('no-project'); + reject(oauthError ? 'oauth-error' : 'no-project'); } window.location.href = link; }); @@ -27,15 +43,25 @@ {:catch}
- Missing redirect URL -

- Your OAuth login flow is missing a proper redirect URL. Please check the - OAuth docs - and send request for new session with a valid callback URL. -

+ {#if oauthError} + Login failed +

+ {oauthError.message ?? 'An error occurred during the OAuth login flow.'} +

+ {#if oauthError.type} +

Error type: {oauthError.type}

+ {/if} + {:else} + Missing redirect URL +

+ Your OAuth login flow is missing a proper redirect URL. Please check the + OAuth docs + and send request for new session with a valid callback URL. +

+ {/if}
{/await}