From 4dbef3fcd7a14437d55c555cf10d50de8e50d7d1 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Fri, 9 Dec 2022 11:57:12 +0900 Subject: feat: Move everything out of $lib --- code/app/src/services/password-reset-service.ts | 45 +++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 code/app/src/services/password-reset-service.ts (limited to 'code/app/src/services/password-reset-service.ts') diff --git a/code/app/src/services/password-reset-service.ts b/code/app/src/services/password-reset-service.ts new file mode 100644 index 0000000..ab3a953 --- /dev/null +++ b/code/app/src/services/password-reset-service.ts @@ -0,0 +1,45 @@ +import {http_get_async, http_post_async} from "$api/_fetch"; +import {api_base} from "$configuration"; +import {is_known_problem} from "$models/internal/KnownProblem"; +import type { + CreateRequestResponse, + FulfillRequestResponse, + IPasswordResetService, + RequestIsValidResponse, +} from "./abstractions/IPasswordResetService"; + +export class PasswordResetService implements IPasswordResetService { + async create_request_async(email: string): Promise { + const response = await http_post_async(api_base("_/password-reset-request/create"), {email}); + if (response.ok) return {isCreated: true}; + if (is_known_problem(response)) return { + isCreated: false, + knownProblem: await response.json(), + }; + + return { + isCreated: false, + }; + } + + async fulfill_request_async(id: string, newPassword: string): Promise { + const response = await http_post_async(api_base("_/password-reset-request/fulfill"), {id: id, newPassword}); + if (response.ok) return {isFulfilled: true}; + if (is_known_problem(response)) return { + isFulfilled: false, + knownProblem: await response.json(), + }; + + return { + isFulfilled: false, + }; + } + + async request_is_valid_async(id: string): Promise { + const response = await http_get_async(api_base("_/password-reset-request/is-valid?id=" + id)); + const responseBody = await response.json() as { isValid: boolean }; + return { + isValid: responseBody.isValid, + }; + } +} \ No newline at end of file -- cgit v1.3