Files
stufflog2/svelte-ui/src/clients/amplify.ts
T
gisle 4443ec9c84
continuous-integration/drone/push Build is passing
add password reset.
2021-01-24 18:56:10 +01:00

55 lines
1.4 KiB
TypeScript

import Amplify from "@aws-amplify/core";
import Auth from "@aws-amplify/auth";
import type {CognitoAccessToken, CognitoUser} from "amazon-cognito-identity-js";
Amplify.configure({
Auth: {
region: process.env.AWS_AMPLIFY_REGION,
userPoolId: process.env.AWS_AMPLIFY_USER_POOL_ID,
userPoolWebClientId: process.env.AWS_AMPLIFY_USER_POOL_WEB_CLIENT_ID,
},
});
export async function signIn(username: string, password: string): Promise<CognitoUser | null> {
const u = await Auth.signIn(username, password);
return u || null;
}
export async function signOut(): Promise<void> {
await Auth.signOut();
}
export async function forgotPassword(username: string): Promise<void> {
const res = await Auth.forgotPassword(username);
}
export async function forgotPasswordSubmit(username: string, code: string, password: string): Promise<void> {
await Auth.forgotPasswordSubmit(username, code, password);
}
async function getAccessToken(): Promise<CognitoAccessToken | null> {
try {
const u = await Auth.currentSession();
if (!u || !u.isValid()) {
return null;
}
return u.getIdToken();
} catch (e) {
return null;
}
}
export async function getJwt(): Promise<string> {
const token = await getAccessToken();
if (!token) {
throw new Error("unauthorized");
}
return token.getJwtToken();
}
export async function checkSession(): Promise<boolean> {
return !!(await getAccessToken());
}