th-app-auth.ts
2.54 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
export interface ThAppBoundLocationDto {
id: string;
locationCode: string;
locationName: string;
fullAddress: string;
state: boolean;
}
export interface ThAppLoginInput {
tenantId: string;
email: string;
password: string;
uuid?: string;
code?: string;
}
export interface ThAppLoginOutputDto {
token: string;
refreshToken: string;
tenantId: string;
tenantName: string;
locations: ThAppBoundLocationDto[];
}
function normalizeLocation(raw: Record<string, unknown>): ThAppBoundLocationDto {
return {
id: String(raw.id ?? raw.Id ?? ''),
locationCode: String(raw.locationCode ?? raw.LocationCode ?? ''),
locationName: String(raw.locationName ?? raw.LocationName ?? ''),
fullAddress: String(raw.fullAddress ?? raw.FullAddress ?? ''),
state: raw.state !== false && raw.State !== false,
};
}
function normalizeAppLoginOutput(raw: unknown): ThAppLoginOutputDto {
const o =
raw && typeof raw === 'object' ? (raw as Record<string, unknown>) : {};
const locs = o.locations ?? o.Locations;
const arr = Array.isArray(locs) ? locs : [];
return {
token: String(o.token ?? o.Token ?? ''),
refreshToken: String(o.refreshToken ?? o.RefreshToken ?? ''),
tenantId: String(o.tenantId ?? o.TenantId ?? ''),
tenantName: String(o.tenantName ?? o.TenantName ?? ''),
locations: arr.map((x) => normalizeLocation(x as Record<string, unknown>)),
};
}
function normalizeLocationList(raw: unknown): ThAppBoundLocationDto[] {
const arr = Array.isArray(raw) ? raw : [];
return arr.map((x) => normalizeLocation(x as Record<string, unknown>));
}
/** POST /api/app/th-app-auth/login */
export async function thAppLogin(
input: ThAppLoginInput,
): Promise<ThAppLoginOutputDto> {
const { requestClient } = await import('#/api/request');
const raw = await requestClient.post<unknown>(
'th-app-auth/login',
{
tenantId: input.tenantId,
email: input.email.trim(),
password: input.password,
...(input.uuid ? { uuid: input.uuid } : {}),
...(input.code != null && input.code !== '' ? { code: input.code } : {}),
},
{
errorMessageMode: 'none',
headers: {
__tenant: input.tenantId,
},
successMessageMode: 'none',
},
);
return normalizeAppLoginOutput(raw);
}
/** GET /api/app/th-app-auth/my-locations */
export async function thAppMyLocations(): Promise<ThAppBoundLocationDto[]> {
const { requestClient } = await import('#/api/request');
const raw = await requestClient.get<unknown>('th-app-auth/my-locations');
return normalizeLocationList(raw);
}