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
39
40
41
42
43
44
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,
};
}
}
|