aboutsummaryrefslogtreecommitdiffstats
path: root/code/app/src/services/password-reset-service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'code/app/src/services/password-reset-service.ts')
-rw-r--r--code/app/src/services/password-reset-service.ts45
1 files changed, 45 insertions, 0 deletions
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<CreateRequestResponse> {
+ 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<FulfillRequestResponse> {
+ 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<RequestIsValidResponse> {
+ 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