summaryrefslogtreecommitdiff
path: root/packages/anastasis-webui/src/pages/home/AddingProviderScreen/state.ts
diff options
context:
space:
mode:
authorNullptrderef <nullptrderef@proton.me>2024-04-21 10:18:31 +0200
committerNullptrderef <nullptrderef@proton.me>2024-04-21 10:18:31 +0200
commit019c2266955b5312cbf35946d6874e69fb6c63a7 (patch)
tree3c82af93529068e0f08dc8a5e4f96fee30e11edc /packages/anastasis-webui/src/pages/home/AddingProviderScreen/state.ts
parent6b61e565b5372d241e52d6fa6b6e2ff35cc707a4 (diff)
downloadwallet-core-019c2266955b5312cbf35946d6874e69fb6c63a7.tar.gz
wallet-core-019c2266955b5312cbf35946d6874e69fb6c63a7.tar.bz2
wallet-core-019c2266955b5312cbf35946d6874e69fb6c63a7.zip
input validation :)
Diffstat (limited to 'packages/anastasis-webui/src/pages/home/AddingProviderScreen/state.ts')
-rw-r--r--packages/anastasis-webui/src/pages/home/AddingProviderScreen/state.ts24
1 files changed, 17 insertions, 7 deletions
diff --git a/packages/anastasis-webui/src/pages/home/AddingProviderScreen/state.ts b/packages/anastasis-webui/src/pages/home/AddingProviderScreen/state.ts
index f80f1c464..30e4d750d 100644
--- a/packages/anastasis-webui/src/pages/home/AddingProviderScreen/state.ts
+++ b/packages/anastasis-webui/src/pages/home/AddingProviderScreen/state.ts
@@ -76,14 +76,23 @@ export default function useComponentState({
useEffect(() => {
if (timeout.current) clearTimeout(timeout.current);
timeout.current = setTimeout(async () => {
- const url = providerURL.endsWith("/") ? providerURL : providerURL + "/";
- if (!providerURL || authProviders.includes(url)) return;
+ let url = providerURL;
+ if (!url || authProviders.includes(url)) return;
+ if (url && !url.match(/^(https?:)\/\/.+\/(?:config)?$/iu))
+ return setError(
+ "Malformed URL: Must be an HTTP(S) URL ending with a /",
+ );
+ if (url.endsWith("/config")) url = url.substring(0, url.length - 6);
try {
setTesting(true);
await testProvider(url, providerType);
setError("");
} catch (e) {
if (e instanceof Error) setError(e.message);
+ else
+ throw new Error(
+ `Unexpected Error Type: ${typeof e} - Cannot handle. Error: ${e}`,
+ );
}
setTesting(false);
}, 200);
@@ -114,11 +123,12 @@ export default function useComponentState({
let errors = !providerURL ? "Add provider URL" : undefined;
let url: string | undefined;
- try {
- url = new URL("", providerURL).href;
- } catch {
- errors = "Check the URL";
- }
+ // We'll validate it in testProvider & via a regex above - there's no need in this :)
+ // try {
+ // url = new URL("", providerURL).href;
+ // } catch {
+ // errors = "Check the URL";
+ // }
const _url = url;
if (!!error && !errors) {