aboutsummaryrefslogtreecommitdiff
path: root/packages/demobank-ui/src/hooks/backend.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-03-15 09:25:23 -0300
committerSebastian <sebasjm@gmail.com>2023-03-15 09:25:23 -0300
commit0bf92a44df14f1946df2b1cd58a6b0b92b5befa2 (patch)
tree6d3094d35556e94f681f588088e0c55cf04e0e21 /packages/demobank-ui/src/hooks/backend.ts
parent0700bbe9d14c7e0c6c2e998285a40d56e8b1d5cc (diff)
downloadwallet-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.ts28
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();