mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-10 07:12:59 +03:00
39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import type { Passkey } from '$lib/types/passkey.type';
|
|
import type { User } from '$lib/types/user.type';
|
|
import APIService from './api-service';
|
|
import userStore from '$lib/stores/user-store';
|
|
import type { AuthenticationResponseJSON, RegistrationResponseJSON } from '@simplewebauthn/browser';
|
|
class WebAuthnService extends APIService {
|
|
getRegistrationOptions = async () => (await this.api.get(`/webauthn/register/start`)).data;
|
|
|
|
finishRegistration = async (body: RegistrationResponseJSON) =>
|
|
(await this.api.post(`/webauthn/register/finish`, body)).data as Passkey;
|
|
|
|
getLoginOptions = async () => (await this.api.get(`/webauthn/login/start`)).data;
|
|
|
|
finishLogin = async (body: AuthenticationResponseJSON) =>
|
|
(await this.api.post(`/webauthn/login/finish`, body)).data as User;
|
|
|
|
logout = async () => {
|
|
await this.api.post(`/webauthn/logout`);
|
|
userStore.clearUser();
|
|
};
|
|
|
|
listCredentials = async () => (await this.api.get(`/webauthn/credentials`)).data as Passkey[];
|
|
|
|
removeCredential = async (id: string) => {
|
|
await this.api.delete(`/webauthn/credentials/${id}`);
|
|
};
|
|
|
|
updateCredentialName = async (id: string, name: string) => {
|
|
await this.api.patch(`/webauthn/credentials/${id}`, { name });
|
|
};
|
|
|
|
reauthenticate = async (body?: AuthenticationResponseJSON) => {
|
|
const res = await this.api.post('/webauthn/reauthenticate', body);
|
|
return res.data.reauthenticationToken as string;
|
|
};
|
|
}
|
|
|
|
export default WebAuthnService;
|