diff options
author | Sebastian <sebasjm@gmail.com> | 2023-03-15 09:25:23 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-03-15 09:25:23 -0300 |
commit | 0bf92a44df14f1946df2b1cd58a6b0b92b5befa2 (patch) | |
tree | 6d3094d35556e94f681f588088e0c55cf04e0e21 /packages/demobank-ui/src/hooks/backend.ts | |
parent | 0700bbe9d14c7e0c6c2e998285a40d56e8b1d5cc (diff) | |
download | wallet-core-0bf92a44df14f1946df2b1cd58a6b0b92b5befa2.tar.gz wallet-core-0bf92a44df14f1946df2b1cd58a6b0b92b5befa2.tar.bz2 wallet-core-0bf92a44df14f1946df2b1cd58a6b0b92b5befa2.zip |
test login with an endpoint and cleaner calculation
Diffstat (limited to 'packages/demobank-ui/src/hooks/backend.ts')
-rw-r--r-- | packages/demobank-ui/src/hooks/backend.ts | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/packages/demobank-ui/src/hooks/backend.ts b/packages/demobank-ui/src/hooks/backend.ts index 3eaf1f186..851a3fb5b 100644 --- a/packages/demobank-ui/src/hooks/backend.ts +++ b/packages/demobank-ui/src/hooks/backend.ts @@ -16,6 +16,7 @@ import { canonicalizeBaseUrl } from "@gnu-taler/taler-util"; import { + ErrorType, RequestError, useLocalStorage, } from "@gnu-taler/web-util/lib/index.browser"; @@ -192,6 +193,33 @@ export function usePublicBackend(): useBackendType { }; } +export function useCredentialsChecker() { + const { request } = useApiContext(); + const baseUrl = getInitialBackendBaseURL(); + //check against account details endpoint + //while sandbox backend doesn't have a login endpoint + return async function testLogin( + username: string, + password: string, + ): Promise<{ + valid: boolean; + cause?: ErrorType; + }> { + try { + await request(baseUrl, `access-api/accounts/${username}/`, { + basicAuth: { username, password }, + preventCache: true, + }); + return { valid: true }; + } catch (error) { + if (error instanceof RequestError) { + return { valid: false, cause: error.cause.type }; + } + return { valid: false, cause: ErrorType.UNEXPECTED }; + } + }; +} + export function useAuthenticatedBackend(): useBackendType { const { state } = useBackendContext(); const { request: requestHandler } = useApiContext(); |