aboutsummaryrefslogtreecommitdiffstats
path: root/code/app/src/lib/services/password-reset-service.ts
blob: 650b5f75331e1bf56ded22c4ba48e6ea09228b11 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { http_get_async, http_post_async } from "$lib/api/_fetch";
import { api_base } from "$lib/configuration";
import { is_known_problem } from "$lib/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
        }
    }
}