main
ts 53 lines 1.86 KB
Raw
1 import type { LoginPayload, RegisterPayload } from "@/types/auth.d"
2 import type { FlaskBaseResponse } from "@/types/flask.d"
3 import jsonToFormData from "@ajoelp/json-to-formdata"
4 import { HttpClient } from "../httpClient"
5
6 export default {
7 login(payload: LoginPayload) {
8 const formData = jsonToFormData(payload)
9 return HttpClient.post<
10 FlaskBaseResponse & { access_token: string; token_type: string; requires_2fa?: boolean }
11 >("/auth/token", formData)
12 },
13 register(payload: RegisterPayload) {
14 return HttpClient.post<FlaskBaseResponse>("/auth/register", payload)
15 },
16 delete(userId: number) {
17 return HttpClient.delete<FlaskBaseResponse>(`/auth/delete/${userId}`)
18 },
19 refresh() {
20 return HttpClient.get<FlaskBaseResponse & { access_token: string; token_type: string }>("/auth/refresh")
21 },
22 /** need admin role */
23 resetPassword(username: string, password: string) {
24 return HttpClient.post<FlaskBaseResponse>("/auth/reset-password", {
25 username,
26 new_password: password
27 })
28 },
29 resetOwnPassword(username: string, password: string) {
30 return HttpClient.post<FlaskBaseResponse>("/auth/reset-password/me", {
31 username,
32 new_password: password
33 })
34 },
35 /** need admin role */
36 assignRole(userId: number, roleName: string) {
37 return HttpClient.put<FlaskBaseResponse>(`/auth/users/${userId}/role/by-name`, {
38 role_name: roleName
39 })
40 },
41 /** need admin role */
42 assignCustomerAccess(userId: number, customerCodes: string[]) {
43 return HttpClient.post<FlaskBaseResponse>(`/auth/users/${userId}/customers`, customerCodes)
44 },
45 /** need admin role */
46 getUserCustomerAccess(userId: number) {
47 return HttpClient.get<FlaskBaseResponse & { customer_codes: string[] }>(`/auth/users/${userId}/customers`)
48 },
49 /** get current user's accessible customers */
50 getMyCustomerAccess() {
51 return HttpClient.get<FlaskBaseResponse & { customer_codes: string[] }>("/auth/me/customers")
52 }
53 }