@greatapps/common 1.1.43 → 1.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/accounts/actions/account-management.action.mjs +80 -29
- package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
- package/dist/modules/accounts/hooks/useAccountManagement.mjs +4 -0
- package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
- package/package.json +1 -1
- package/src/modules/accounts/actions/account-management.action.ts +112 -48
- package/src/modules/accounts/hooks/useAccountManagement.ts +4 -0
- package/src/modules/accounts/types.ts +1 -0
|
@@ -7,8 +7,12 @@ async function listAccountUsersAction(params) {
|
|
|
7
7
|
const { users, total } = await accountService.listAccountUsers(params);
|
|
8
8
|
return { success: true, data: users, total };
|
|
9
9
|
} catch (error) {
|
|
10
|
-
if (error instanceof ApiError)
|
|
11
|
-
|
|
10
|
+
if (error instanceof ApiError)
|
|
11
|
+
return { success: false, error: error.message };
|
|
12
|
+
return {
|
|
13
|
+
success: false,
|
|
14
|
+
error: "Erro ao listar usu\xE1rios. Tente novamente."
|
|
15
|
+
};
|
|
12
16
|
}
|
|
13
17
|
}
|
|
14
18
|
async function updateUserAction(user) {
|
|
@@ -16,8 +20,12 @@ async function updateUserAction(user) {
|
|
|
16
20
|
const result = await accountService.updateAccountUser(user);
|
|
17
21
|
return { success: true, data: result };
|
|
18
22
|
} catch (error) {
|
|
19
|
-
if (error instanceof ApiError)
|
|
20
|
-
|
|
23
|
+
if (error instanceof ApiError)
|
|
24
|
+
return { success: false, error: error.message };
|
|
25
|
+
return {
|
|
26
|
+
success: false,
|
|
27
|
+
error: "Erro ao atualizar usu\xE1rio. Tente novamente."
|
|
28
|
+
};
|
|
21
29
|
}
|
|
22
30
|
}
|
|
23
31
|
async function updateAccountUserByIdAction(userId, user) {
|
|
@@ -25,8 +33,12 @@ async function updateAccountUserByIdAction(userId, user) {
|
|
|
25
33
|
const result = await accountService.updateAccountUserById(userId, user);
|
|
26
34
|
return { success: true, data: result };
|
|
27
35
|
} catch (error) {
|
|
28
|
-
if (error instanceof ApiError)
|
|
29
|
-
|
|
36
|
+
if (error instanceof ApiError)
|
|
37
|
+
return { success: false, error: error.message };
|
|
38
|
+
return {
|
|
39
|
+
success: false,
|
|
40
|
+
error: "Erro ao atualizar usu\xE1rio. Tente novamente."
|
|
41
|
+
};
|
|
30
42
|
}
|
|
31
43
|
}
|
|
32
44
|
async function updateAccountAction(data) {
|
|
@@ -34,8 +46,12 @@ async function updateAccountAction(data) {
|
|
|
34
46
|
await accountService.updateAccount(data);
|
|
35
47
|
return { success: true };
|
|
36
48
|
} catch (error) {
|
|
37
|
-
if (error instanceof ApiError)
|
|
38
|
-
|
|
49
|
+
if (error instanceof ApiError)
|
|
50
|
+
return { success: false, error: error.message };
|
|
51
|
+
return {
|
|
52
|
+
success: false,
|
|
53
|
+
error: "Erro ao atualizar conta. Tente novamente."
|
|
54
|
+
};
|
|
39
55
|
}
|
|
40
56
|
}
|
|
41
57
|
async function deleteAccountUserAction(userId) {
|
|
@@ -43,8 +59,12 @@ async function deleteAccountUserAction(userId) {
|
|
|
43
59
|
await accountService.deleteAccountUser(userId);
|
|
44
60
|
return { success: true };
|
|
45
61
|
} catch (error) {
|
|
46
|
-
if (error instanceof ApiError)
|
|
47
|
-
|
|
62
|
+
if (error instanceof ApiError)
|
|
63
|
+
return { success: false, error: error.message };
|
|
64
|
+
return {
|
|
65
|
+
success: false,
|
|
66
|
+
error: "Erro ao remover usu\xE1rio. Tente novamente."
|
|
67
|
+
};
|
|
48
68
|
}
|
|
49
69
|
}
|
|
50
70
|
async function deleteAccountAction() {
|
|
@@ -52,7 +72,8 @@ async function deleteAccountAction() {
|
|
|
52
72
|
await accountService.deleteAccount();
|
|
53
73
|
return { success: true };
|
|
54
74
|
} catch (error) {
|
|
55
|
-
if (error instanceof ApiError)
|
|
75
|
+
if (error instanceof ApiError)
|
|
76
|
+
return { success: false, error: error.message };
|
|
56
77
|
return { success: false, error: "Erro ao excluir conta. Tente novamente." };
|
|
57
78
|
}
|
|
58
79
|
}
|
|
@@ -61,7 +82,8 @@ async function createAccountUserAction(user) {
|
|
|
61
82
|
const result = await accountService.createAccountUser(user);
|
|
62
83
|
return { success: true, data: result.data };
|
|
63
84
|
} catch (error) {
|
|
64
|
-
if (error instanceof ApiError)
|
|
85
|
+
if (error instanceof ApiError)
|
|
86
|
+
return { success: false, error: error.message };
|
|
65
87
|
return { success: false, error: "Erro ao criar usu\xE1rio. Tente novamente." };
|
|
66
88
|
}
|
|
67
89
|
}
|
|
@@ -70,7 +92,8 @@ async function changePasswordAction(data) {
|
|
|
70
92
|
await accountService.changePassword(data);
|
|
71
93
|
return { success: true };
|
|
72
94
|
} catch (error) {
|
|
73
|
-
if (error instanceof ApiError)
|
|
95
|
+
if (error instanceof ApiError)
|
|
96
|
+
return { success: false, error: error.message };
|
|
74
97
|
return { success: false, error: "Erro ao alterar senha. Tente novamente." };
|
|
75
98
|
}
|
|
76
99
|
}
|
|
@@ -79,8 +102,12 @@ async function requestEmailChangeAction(newEmail) {
|
|
|
79
102
|
await accountService.requestContactReset("email", newEmail);
|
|
80
103
|
return { success: true };
|
|
81
104
|
} catch (error) {
|
|
82
|
-
if (error instanceof ApiError)
|
|
83
|
-
|
|
105
|
+
if (error instanceof ApiError)
|
|
106
|
+
return { success: false, error: error.message };
|
|
107
|
+
return {
|
|
108
|
+
success: false,
|
|
109
|
+
error: "E-mail j\xE1 existente ou ocorreu um erro. Tente novamente mais tarde."
|
|
110
|
+
};
|
|
84
111
|
}
|
|
85
112
|
}
|
|
86
113
|
async function confirmEmailChangeAction(token, newEmail) {
|
|
@@ -88,8 +115,12 @@ async function confirmEmailChangeAction(token, newEmail) {
|
|
|
88
115
|
await accountService.confirmContactReset("email", token, newEmail);
|
|
89
116
|
return { success: true };
|
|
90
117
|
} catch (error) {
|
|
91
|
-
if (error instanceof ApiError)
|
|
92
|
-
|
|
118
|
+
if (error instanceof ApiError)
|
|
119
|
+
return { success: false, error: error.message };
|
|
120
|
+
return {
|
|
121
|
+
success: false,
|
|
122
|
+
error: "C\xF3digo inv\xE1lido ou expirado. Tente novamente."
|
|
123
|
+
};
|
|
93
124
|
}
|
|
94
125
|
}
|
|
95
126
|
async function requestPhoneChangeAction(newPhone) {
|
|
@@ -97,8 +128,12 @@ async function requestPhoneChangeAction(newPhone) {
|
|
|
97
128
|
await accountService.requestContactReset("phone", newPhone);
|
|
98
129
|
return { success: true };
|
|
99
130
|
} catch (error) {
|
|
100
|
-
if (error instanceof ApiError)
|
|
101
|
-
|
|
131
|
+
if (error instanceof ApiError)
|
|
132
|
+
return { success: false, error: error.message };
|
|
133
|
+
return {
|
|
134
|
+
success: false,
|
|
135
|
+
error: "N\xFAmero j\xE1 existente ou ocorreu um erro. Tente novamente mais tarde."
|
|
136
|
+
};
|
|
102
137
|
}
|
|
103
138
|
}
|
|
104
139
|
async function confirmPhoneChangeAction(token, newPhone) {
|
|
@@ -106,41 +141,57 @@ async function confirmPhoneChangeAction(token, newPhone) {
|
|
|
106
141
|
await accountService.confirmContactReset("phone", token, newPhone);
|
|
107
142
|
return { success: true };
|
|
108
143
|
} catch (error) {
|
|
109
|
-
if (error instanceof ApiError)
|
|
110
|
-
|
|
144
|
+
if (error instanceof ApiError)
|
|
145
|
+
return { success: false, error: error.message };
|
|
146
|
+
return {
|
|
147
|
+
success: false,
|
|
148
|
+
error: "C\xF3digo inv\xE1lido ou expirado. Tente novamente."
|
|
149
|
+
};
|
|
111
150
|
}
|
|
112
151
|
}
|
|
113
152
|
async function generateTwoFactorAction() {
|
|
114
153
|
try {
|
|
115
154
|
const result = await twoFactorService.generate();
|
|
116
|
-
return {
|
|
117
|
-
|
|
118
|
-
|
|
155
|
+
return {
|
|
156
|
+
success: true,
|
|
157
|
+
qrcode: result.data.qrcode,
|
|
158
|
+
backupCodes: result.data.backup_codes
|
|
159
|
+
};
|
|
160
|
+
} catch (error) {
|
|
161
|
+
if (error instanceof ApiError)
|
|
162
|
+
return { success: false, error: error.message };
|
|
119
163
|
return { success: false, error: "Erro ao gerar QR Code. Tente novamente." };
|
|
120
164
|
}
|
|
121
165
|
}
|
|
122
166
|
async function confirmTwoFactorAction(code) {
|
|
123
167
|
try {
|
|
124
168
|
await twoFactorService.confirm(code);
|
|
125
|
-
|
|
169
|
+
await accountService.updateAccountUser({ two_factor_authentication: true });
|
|
126
170
|
} catch (error) {
|
|
127
|
-
if (error instanceof ApiError)
|
|
171
|
+
if (error instanceof ApiError)
|
|
172
|
+
return { success: false, error: error.message };
|
|
128
173
|
return { success: false, error: "C\xF3digo inv\xE1lido. Tente novamente." };
|
|
129
174
|
}
|
|
175
|
+
return { success: true };
|
|
130
176
|
}
|
|
131
177
|
async function disableTwoFactorAction(code) {
|
|
132
178
|
try {
|
|
133
179
|
await twoFactorService.verify(code);
|
|
134
180
|
} catch (error) {
|
|
135
|
-
if (error instanceof ApiError)
|
|
181
|
+
if (error instanceof ApiError)
|
|
182
|
+
return { success: false, error: error.message };
|
|
136
183
|
return { success: false, error: "C\xF3digo inv\xE1lido. Tente novamente." };
|
|
137
184
|
}
|
|
138
185
|
try {
|
|
139
186
|
await twoFactorService.disable();
|
|
140
187
|
return { success: true };
|
|
141
188
|
} catch (error) {
|
|
142
|
-
if (error instanceof ApiError)
|
|
143
|
-
|
|
189
|
+
if (error instanceof ApiError)
|
|
190
|
+
return { success: false, error: error.message };
|
|
191
|
+
return {
|
|
192
|
+
success: false,
|
|
193
|
+
error: "Erro ao desabilitar 2FA. Tente novamente."
|
|
194
|
+
};
|
|
144
195
|
}
|
|
145
196
|
}
|
|
146
197
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/accounts/actions/account-management.action.ts"],"sourcesContent":["'use server';\r\n\r\nimport { accountService } from '../services/account.service';\r\nimport { ApiError } from '../../../infra/api/types';\r\nimport type {\r\n AccountUsersPaginationParams,\r\n AccountUsersActionResult,\r\n ChangePasswordActionResult,\r\n ChangePasswordRequest,\r\n ContactResetResult,\r\n CreateAccountUserRequest,\r\n DeleteAccountActionResult,\r\n DeleteUserActionResult,\r\n TwoFactorActionResult,\r\n TwoFactorGenerateResult,\r\n UpdateAccountActionResult,\r\n UpdateAccountRequest,\r\n UpdateAccountUserRequest,\r\n UpdateUserActionResult,\r\n} from '../types';\r\nimport { twoFactorService } from '../services/two-factor.service';\r\n\r\nexport async function listAccountUsersAction(\r\n params?: AccountUsersPaginationParams\r\n): Promise<AccountUsersActionResult> {\r\n try {\r\n const { users, total } = await accountService.listAccountUsers(params);\r\n return { success: true, data: users, total };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao listar usuários. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function updateUserAction(\r\n user: UpdateAccountUserRequest\r\n): Promise<UpdateUserActionResult> {\r\n try {\r\n const result = await accountService.updateAccountUser(user);\r\n return { success: true, data: result };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao atualizar usuário. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function updateAccountUserByIdAction(\r\n userId: number,\r\n user: UpdateAccountUserRequest\r\n): Promise<UpdateUserActionResult> {\r\n try {\r\n const result = await accountService.updateAccountUserById(userId, user);\r\n return { success: true, data: result };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao atualizar usuário. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function updateAccountAction(\r\n data: UpdateAccountRequest\r\n): Promise<UpdateAccountActionResult> {\r\n try {\r\n await accountService.updateAccount(data);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao atualizar conta. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function deleteAccountUserAction(userId: number): Promise<DeleteUserActionResult> {\r\n try {\r\n await accountService.deleteAccountUser(userId);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao remover usuário. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function deleteAccountAction(): Promise<DeleteAccountActionResult> {\r\n try {\r\n await accountService.deleteAccount();\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao excluir conta. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function createAccountUserAction(\r\n user: CreateAccountUserRequest\r\n): Promise<AccountUsersActionResult> {\r\n try {\r\n const result = await accountService.createAccountUser(user);\r\n return { success: true, data: result.data };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao criar usuário. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function changePasswordAction(\r\n data: ChangePasswordRequest\r\n): Promise<ChangePasswordActionResult> {\r\n try {\r\n await accountService.changePassword(data);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao alterar senha. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function requestEmailChangeAction(newEmail: string): Promise<ContactResetResult> {\r\n try {\r\n await accountService.requestContactReset('email', newEmail);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'E-mail já existente ou ocorreu um erro. Tente novamente mais tarde.' };\r\n }\r\n}\r\n\r\nexport async function confirmEmailChangeAction(\r\n token: string,\r\n newEmail: string\r\n): Promise<ContactResetResult> {\r\n try {\r\n await accountService.confirmContactReset('email', token, newEmail);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Código inválido ou expirado. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function requestPhoneChangeAction(newPhone: string): Promise<ContactResetResult> {\r\n try {\r\n await accountService.requestContactReset('phone', newPhone);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Número já existente ou ocorreu um erro. Tente novamente mais tarde.' };\r\n }\r\n}\r\n\r\nexport async function confirmPhoneChangeAction(\r\n token: string,\r\n newPhone: string\r\n): Promise<ContactResetResult> {\r\n try {\r\n await accountService.confirmContactReset('phone', token, newPhone);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Código inválido ou expirado. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function generateTwoFactorAction(): Promise<TwoFactorGenerateResult> {\r\n try {\r\n const result = await twoFactorService.generate();\r\n return { success: true, qrcode: result.data.qrcode, backupCodes: result.data.backup_codes };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao gerar QR Code. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function confirmTwoFactorAction(code: string): Promise<TwoFactorActionResult> {\r\n try {\r\n await twoFactorService.confirm(code);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Código inválido. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function disableTwoFactorAction(code: string): Promise<TwoFactorActionResult> {\r\n try {\r\n await twoFactorService.verify(code);\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Código inválido. Tente novamente.' };\r\n }\r\n\r\n try {\r\n await twoFactorService.disable();\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao desabilitar 2FA. Tente novamente.' };\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/accounts/actions/account-management.action.ts"],"sourcesContent":["\"use server\";\r\n\r\nimport { accountService } from \"../services/account.service\";\r\nimport { ApiError } from \"../../../infra/api/types\";\r\nimport type {\r\n AccountUsersPaginationParams,\r\n AccountUsersActionResult,\r\n ChangePasswordActionResult,\r\n ChangePasswordRequest,\r\n ContactResetResult,\r\n CreateAccountUserRequest,\r\n DeleteAccountActionResult,\r\n DeleteUserActionResult,\r\n TwoFactorActionResult,\r\n TwoFactorGenerateResult,\r\n UpdateAccountActionResult,\r\n UpdateAccountRequest,\r\n UpdateAccountUserRequest,\r\n UpdateUserActionResult,\r\n} from \"../types\";\r\nimport { twoFactorService } from \"../services/two-factor.service\";\r\n\r\nexport async function listAccountUsersAction(\r\n params?: AccountUsersPaginationParams\r\n): Promise<AccountUsersActionResult> {\r\n try {\r\n const { users, total } = await accountService.listAccountUsers(params);\r\n return { success: true, data: users, total };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return {\r\n success: false,\r\n error: \"Erro ao listar usuários. Tente novamente.\",\r\n };\r\n }\r\n}\r\n\r\nexport async function updateUserAction(\r\n user: UpdateAccountUserRequest\r\n): Promise<UpdateUserActionResult> {\r\n try {\r\n const result = await accountService.updateAccountUser(user);\r\n return { success: true, data: result };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return {\r\n success: false,\r\n error: \"Erro ao atualizar usuário. Tente novamente.\",\r\n };\r\n }\r\n}\r\n\r\nexport async function updateAccountUserByIdAction(\r\n userId: number,\r\n user: UpdateAccountUserRequest\r\n): Promise<UpdateUserActionResult> {\r\n try {\r\n const result = await accountService.updateAccountUserById(userId, user);\r\n return { success: true, data: result };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return {\r\n success: false,\r\n error: \"Erro ao atualizar usuário. Tente novamente.\",\r\n };\r\n }\r\n}\r\n\r\nexport async function updateAccountAction(\r\n data: UpdateAccountRequest\r\n): Promise<UpdateAccountActionResult> {\r\n try {\r\n await accountService.updateAccount(data);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return {\r\n success: false,\r\n error: \"Erro ao atualizar conta. Tente novamente.\",\r\n };\r\n }\r\n}\r\n\r\nexport async function deleteAccountUserAction(\r\n userId: number\r\n): Promise<DeleteUserActionResult> {\r\n try {\r\n await accountService.deleteAccountUser(userId);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return {\r\n success: false,\r\n error: \"Erro ao remover usuário. Tente novamente.\",\r\n };\r\n }\r\n}\r\n\r\nexport async function deleteAccountAction(): Promise<DeleteAccountActionResult> {\r\n try {\r\n await accountService.deleteAccount();\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return { success: false, error: \"Erro ao excluir conta. Tente novamente.\" };\r\n }\r\n}\r\n\r\nexport async function createAccountUserAction(\r\n user: CreateAccountUserRequest\r\n): Promise<AccountUsersActionResult> {\r\n try {\r\n const result = await accountService.createAccountUser(user);\r\n return { success: true, data: result.data };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return { success: false, error: \"Erro ao criar usuário. Tente novamente.\" };\r\n }\r\n}\r\n\r\nexport async function changePasswordAction(\r\n data: ChangePasswordRequest\r\n): Promise<ChangePasswordActionResult> {\r\n try {\r\n await accountService.changePassword(data);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return { success: false, error: \"Erro ao alterar senha. Tente novamente.\" };\r\n }\r\n}\r\n\r\nexport async function requestEmailChangeAction(\r\n newEmail: string\r\n): Promise<ContactResetResult> {\r\n try {\r\n await accountService.requestContactReset(\"email\", newEmail);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return {\r\n success: false,\r\n error:\r\n \"E-mail já existente ou ocorreu um erro. Tente novamente mais tarde.\",\r\n };\r\n }\r\n}\r\n\r\nexport async function confirmEmailChangeAction(\r\n token: string,\r\n newEmail: string\r\n): Promise<ContactResetResult> {\r\n try {\r\n await accountService.confirmContactReset(\"email\", token, newEmail);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return {\r\n success: false,\r\n error: \"Código inválido ou expirado. Tente novamente.\",\r\n };\r\n }\r\n}\r\n\r\nexport async function requestPhoneChangeAction(\r\n newPhone: string\r\n): Promise<ContactResetResult> {\r\n try {\r\n await accountService.requestContactReset(\"phone\", newPhone);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return {\r\n success: false,\r\n error:\r\n \"Número já existente ou ocorreu um erro. Tente novamente mais tarde.\",\r\n };\r\n }\r\n}\r\n\r\nexport async function confirmPhoneChangeAction(\r\n token: string,\r\n newPhone: string\r\n): Promise<ContactResetResult> {\r\n try {\r\n await accountService.confirmContactReset(\"phone\", token, newPhone);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return {\r\n success: false,\r\n error: \"Código inválido ou expirado. Tente novamente.\",\r\n };\r\n }\r\n}\r\n\r\nexport async function generateTwoFactorAction(): Promise<TwoFactorGenerateResult> {\r\n try {\r\n const result = await twoFactorService.generate();\r\n return {\r\n success: true,\r\n qrcode: result.data.qrcode,\r\n backupCodes: result.data.backup_codes,\r\n };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return { success: false, error: \"Erro ao gerar QR Code. Tente novamente.\" };\r\n }\r\n}\r\n\r\nexport async function confirmTwoFactorAction(\r\n code: string\r\n): Promise<TwoFactorActionResult> {\r\n try {\r\n await twoFactorService.confirm(code);\r\n await accountService.updateAccountUser({ two_factor_authentication: true });\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return { success: false, error: \"Código inválido. Tente novamente.\" };\r\n }\r\n\r\n return { success: true };\r\n}\r\n\r\nexport async function disableTwoFactorAction(\r\n code: string\r\n): Promise<TwoFactorActionResult> {\r\n try {\r\n await twoFactorService.verify(code);\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return { success: false, error: \"Código inválido. Tente novamente.\" };\r\n }\r\n\r\n try {\r\n await twoFactorService.disable();\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError)\r\n return { success: false, error: error.message };\r\n return {\r\n success: false,\r\n error: \"Erro ao desabilitar 2FA. Tente novamente.\",\r\n };\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
3
3
|
import { USER_QUERY_KEY } from "../../auth/hooks/useUserQuery";
|
|
4
|
+
import { ACCOUNT_QUERY_KEY } from "./current-account.hook";
|
|
4
5
|
import {
|
|
5
6
|
updateUserAction,
|
|
6
7
|
updateAccountAction,
|
|
@@ -15,6 +16,8 @@ function useUpdateAccount() {
|
|
|
15
16
|
mutationFn: (data) => updateAccountAction(data),
|
|
16
17
|
onSuccess: () => {
|
|
17
18
|
queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });
|
|
19
|
+
queryClient.invalidateQueries({ queryKey: ACCOUNT_QUERY_KEY });
|
|
20
|
+
queryClient.invalidateQueries({ queryKey: USER_QUERY_KEY });
|
|
18
21
|
}
|
|
19
22
|
});
|
|
20
23
|
}
|
|
@@ -24,6 +27,7 @@ function useUpdateAccountUser() {
|
|
|
24
27
|
mutationFn: updateUserAction,
|
|
25
28
|
onSuccess: () => {
|
|
26
29
|
queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });
|
|
30
|
+
queryClient.invalidateQueries({ queryKey: ACCOUNT_QUERY_KEY });
|
|
27
31
|
queryClient.invalidateQueries({ queryKey: USER_QUERY_KEY });
|
|
28
32
|
}
|
|
29
33
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/accounts/hooks/useAccountManagement.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport { USER_QUERY_KEY } from '../../auth/hooks/useUserQuery';\r\nimport type {\r\n UpdateAccountRequest,\r\n UpdateAccountUserRequest,\r\n DeleteUserActionResult,\r\n DeleteAccountActionResult,\r\n} from '../types';\r\nimport {\r\n updateUserAction,\r\n updateAccountAction,\r\n updateAccountUserByIdAction,\r\n deleteAccountUserAction,\r\n deleteAccountAction,\r\n} from '../actions/account-management.action';\r\nimport type { UseMutationOptions } from '@tanstack/react-query';\r\n\r\nconst ACCOUNT_USERS_QUERY_KEY = ['account-users'];\r\n\r\nexport function useUpdateAccount() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: (data: UpdateAccountRequest) => updateAccountAction(data),\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateAccountUser() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: updateUserAction,\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n queryClient.invalidateQueries({ queryKey: USER_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateAccountUserById() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: ({ userId, ...user }: UpdateAccountUserRequest & { userId: number }) =>\r\n updateAccountUserByIdAction(userId, user),\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useDeleteAccountUser(\r\n options?: UseMutationOptions<DeleteUserActionResult, Error, number>\r\n) {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: (userId: number) => deleteAccountUserAction(userId),\r\n ...options,\r\n onSuccess: (...params) => {\r\n options?.onSuccess?.(...params);\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useDeleteAccount(\r\n options?: UseMutationOptions<DeleteAccountActionResult, Error, void>\r\n) {\r\n return useMutation({\r\n mutationFn: () => deleteAccountAction(),\r\n ...options,\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,sBAAsB;
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/accounts/hooks/useAccountManagement.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport { USER_QUERY_KEY } from '../../auth/hooks/useUserQuery';\r\nimport { ACCOUNT_QUERY_KEY } from './current-account.hook';\r\nimport type {\r\n UpdateAccountRequest,\r\n UpdateAccountUserRequest,\r\n DeleteUserActionResult,\r\n DeleteAccountActionResult,\r\n} from '../types';\r\nimport {\r\n updateUserAction,\r\n updateAccountAction,\r\n updateAccountUserByIdAction,\r\n deleteAccountUserAction,\r\n deleteAccountAction,\r\n} from '../actions/account-management.action';\r\nimport type { UseMutationOptions } from '@tanstack/react-query';\r\n\r\nconst ACCOUNT_USERS_QUERY_KEY = ['account-users'];\r\n\r\nexport function useUpdateAccount() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: (data: UpdateAccountRequest) => updateAccountAction(data),\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_QUERY_KEY });\r\n queryClient.invalidateQueries({ queryKey: USER_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateAccountUser() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: updateUserAction,\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_QUERY_KEY });\r\n queryClient.invalidateQueries({ queryKey: USER_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateAccountUserById() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: ({ userId, ...user }: UpdateAccountUserRequest & { userId: number }) =>\r\n updateAccountUserByIdAction(userId, user),\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useDeleteAccountUser(\r\n options?: UseMutationOptions<DeleteUserActionResult, Error, number>\r\n) {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: (userId: number) => deleteAccountUserAction(userId),\r\n ...options,\r\n onSuccess: (...params) => {\r\n options?.onSuccess?.(...params);\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useDeleteAccount(\r\n options?: UseMutationOptions<DeleteAccountActionResult, Error, void>\r\n) {\r\n return useMutation({\r\n mutationFn: () => deleteAccountAction(),\r\n ...options,\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;AAOlC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,MAAM,0BAA0B,CAAC,eAAe;AAEzC,SAAS,mBAAmB;AACjC,QAAM,cAAc,eAAe;AAEnC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SAA+B,oBAAoB,IAAI;AAAA,IACpE,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,wBAAwB,CAAC;AACnE,kBAAY,kBAAkB,EAAE,UAAU,kBAAkB,CAAC;AAC7D,kBAAY,kBAAkB,EAAE,UAAU,eAAe,CAAC;AAAA,IAC5D;AAAA,EACF,CAAC;AACH;AAEO,SAAS,uBAAuB;AACrC,QAAM,cAAc,eAAe;AAEnC,SAAO,YAAY;AAAA,IACjB,YAAY;AAAA,IACZ,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,wBAAwB,CAAC;AACnE,kBAAY,kBAAkB,EAAE,UAAU,kBAAkB,CAAC;AAC7D,kBAAY,kBAAkB,EAAE,UAAU,eAAe,CAAC;AAAA,IAC5D;AAAA,EACF,CAAC;AACH;AAEO,SAAS,2BAA2B;AACzC,QAAM,cAAc,eAAe;AAEnC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,EAAE,QAAQ,GAAG,KAAK,MAC7B,4BAA4B,QAAQ,IAAI;AAAA,IAC1C,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,wBAAwB,CAAC;AAAA,IACrE;AAAA,EACF,CAAC;AACH;AAEO,SAAS,qBACd,SACA;AACA,QAAM,cAAc,eAAe;AAEnC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,WAAmB,wBAAwB,MAAM;AAAA,IAC9D,GAAG;AAAA,IACH,WAAW,IAAI,WAAW;AACxB,eAAS,YAAY,GAAG,MAAM;AAC9B,kBAAY,kBAAkB,EAAE,UAAU,wBAAwB,CAAC;AAAA,IACrE;AAAA,EACF,CAAC;AACH;AAEO,SAAS,iBACd,SACA;AACA,SAAO,YAAY;AAAA,IACjB,YAAY,MAAM,oBAAoB;AAAA,IACtC,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use server";
|
|
2
2
|
|
|
3
|
-
import { accountService } from
|
|
4
|
-
import { ApiError } from
|
|
3
|
+
import { accountService } from "../services/account.service";
|
|
4
|
+
import { ApiError } from "../../../infra/api/types";
|
|
5
5
|
import type {
|
|
6
6
|
AccountUsersPaginationParams,
|
|
7
7
|
AccountUsersActionResult,
|
|
@@ -17,8 +17,8 @@ import type {
|
|
|
17
17
|
UpdateAccountRequest,
|
|
18
18
|
UpdateAccountUserRequest,
|
|
19
19
|
UpdateUserActionResult,
|
|
20
|
-
} from
|
|
21
|
-
import { twoFactorService } from
|
|
20
|
+
} from "../types";
|
|
21
|
+
import { twoFactorService } from "../services/two-factor.service";
|
|
22
22
|
|
|
23
23
|
export async function listAccountUsersAction(
|
|
24
24
|
params?: AccountUsersPaginationParams
|
|
@@ -27,8 +27,12 @@ export async function listAccountUsersAction(
|
|
|
27
27
|
const { users, total } = await accountService.listAccountUsers(params);
|
|
28
28
|
return { success: true, data: users, total };
|
|
29
29
|
} catch (error) {
|
|
30
|
-
if (error instanceof ApiError)
|
|
31
|
-
|
|
30
|
+
if (error instanceof ApiError)
|
|
31
|
+
return { success: false, error: error.message };
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
error: "Erro ao listar usuários. Tente novamente.",
|
|
35
|
+
};
|
|
32
36
|
}
|
|
33
37
|
}
|
|
34
38
|
|
|
@@ -39,8 +43,12 @@ export async function updateUserAction(
|
|
|
39
43
|
const result = await accountService.updateAccountUser(user);
|
|
40
44
|
return { success: true, data: result };
|
|
41
45
|
} catch (error) {
|
|
42
|
-
if (error instanceof ApiError)
|
|
43
|
-
|
|
46
|
+
if (error instanceof ApiError)
|
|
47
|
+
return { success: false, error: error.message };
|
|
48
|
+
return {
|
|
49
|
+
success: false,
|
|
50
|
+
error: "Erro ao atualizar usuário. Tente novamente.",
|
|
51
|
+
};
|
|
44
52
|
}
|
|
45
53
|
}
|
|
46
54
|
|
|
@@ -52,8 +60,12 @@ export async function updateAccountUserByIdAction(
|
|
|
52
60
|
const result = await accountService.updateAccountUserById(userId, user);
|
|
53
61
|
return { success: true, data: result };
|
|
54
62
|
} catch (error) {
|
|
55
|
-
if (error instanceof ApiError)
|
|
56
|
-
|
|
63
|
+
if (error instanceof ApiError)
|
|
64
|
+
return { success: false, error: error.message };
|
|
65
|
+
return {
|
|
66
|
+
success: false,
|
|
67
|
+
error: "Erro ao atualizar usuário. Tente novamente.",
|
|
68
|
+
};
|
|
57
69
|
}
|
|
58
70
|
}
|
|
59
71
|
|
|
@@ -64,18 +76,28 @@ export async function updateAccountAction(
|
|
|
64
76
|
await accountService.updateAccount(data);
|
|
65
77
|
return { success: true };
|
|
66
78
|
} catch (error) {
|
|
67
|
-
if (error instanceof ApiError)
|
|
68
|
-
|
|
79
|
+
if (error instanceof ApiError)
|
|
80
|
+
return { success: false, error: error.message };
|
|
81
|
+
return {
|
|
82
|
+
success: false,
|
|
83
|
+
error: "Erro ao atualizar conta. Tente novamente.",
|
|
84
|
+
};
|
|
69
85
|
}
|
|
70
86
|
}
|
|
71
87
|
|
|
72
|
-
export async function deleteAccountUserAction(
|
|
88
|
+
export async function deleteAccountUserAction(
|
|
89
|
+
userId: number
|
|
90
|
+
): Promise<DeleteUserActionResult> {
|
|
73
91
|
try {
|
|
74
92
|
await accountService.deleteAccountUser(userId);
|
|
75
93
|
return { success: true };
|
|
76
94
|
} catch (error) {
|
|
77
|
-
if (error instanceof ApiError)
|
|
78
|
-
|
|
95
|
+
if (error instanceof ApiError)
|
|
96
|
+
return { success: false, error: error.message };
|
|
97
|
+
return {
|
|
98
|
+
success: false,
|
|
99
|
+
error: "Erro ao remover usuário. Tente novamente.",
|
|
100
|
+
};
|
|
79
101
|
}
|
|
80
102
|
}
|
|
81
103
|
|
|
@@ -84,8 +106,9 @@ export async function deleteAccountAction(): Promise<DeleteAccountActionResult>
|
|
|
84
106
|
await accountService.deleteAccount();
|
|
85
107
|
return { success: true };
|
|
86
108
|
} catch (error) {
|
|
87
|
-
if (error instanceof ApiError)
|
|
88
|
-
|
|
109
|
+
if (error instanceof ApiError)
|
|
110
|
+
return { success: false, error: error.message };
|
|
111
|
+
return { success: false, error: "Erro ao excluir conta. Tente novamente." };
|
|
89
112
|
}
|
|
90
113
|
}
|
|
91
114
|
|
|
@@ -96,8 +119,9 @@ export async function createAccountUserAction(
|
|
|
96
119
|
const result = await accountService.createAccountUser(user);
|
|
97
120
|
return { success: true, data: result.data };
|
|
98
121
|
} catch (error) {
|
|
99
|
-
if (error instanceof ApiError)
|
|
100
|
-
|
|
122
|
+
if (error instanceof ApiError)
|
|
123
|
+
return { success: false, error: error.message };
|
|
124
|
+
return { success: false, error: "Erro ao criar usuário. Tente novamente." };
|
|
101
125
|
}
|
|
102
126
|
}
|
|
103
127
|
|
|
@@ -108,18 +132,26 @@ export async function changePasswordAction(
|
|
|
108
132
|
await accountService.changePassword(data);
|
|
109
133
|
return { success: true };
|
|
110
134
|
} catch (error) {
|
|
111
|
-
if (error instanceof ApiError)
|
|
112
|
-
|
|
135
|
+
if (error instanceof ApiError)
|
|
136
|
+
return { success: false, error: error.message };
|
|
137
|
+
return { success: false, error: "Erro ao alterar senha. Tente novamente." };
|
|
113
138
|
}
|
|
114
139
|
}
|
|
115
140
|
|
|
116
|
-
export async function requestEmailChangeAction(
|
|
141
|
+
export async function requestEmailChangeAction(
|
|
142
|
+
newEmail: string
|
|
143
|
+
): Promise<ContactResetResult> {
|
|
117
144
|
try {
|
|
118
|
-
await accountService.requestContactReset(
|
|
145
|
+
await accountService.requestContactReset("email", newEmail);
|
|
119
146
|
return { success: true };
|
|
120
147
|
} catch (error) {
|
|
121
|
-
if (error instanceof ApiError)
|
|
122
|
-
|
|
148
|
+
if (error instanceof ApiError)
|
|
149
|
+
return { success: false, error: error.message };
|
|
150
|
+
return {
|
|
151
|
+
success: false,
|
|
152
|
+
error:
|
|
153
|
+
"E-mail já existente ou ocorreu um erro. Tente novamente mais tarde.",
|
|
154
|
+
};
|
|
123
155
|
}
|
|
124
156
|
}
|
|
125
157
|
|
|
@@ -128,21 +160,32 @@ export async function confirmEmailChangeAction(
|
|
|
128
160
|
newEmail: string
|
|
129
161
|
): Promise<ContactResetResult> {
|
|
130
162
|
try {
|
|
131
|
-
await accountService.confirmContactReset(
|
|
163
|
+
await accountService.confirmContactReset("email", token, newEmail);
|
|
132
164
|
return { success: true };
|
|
133
165
|
} catch (error) {
|
|
134
|
-
if (error instanceof ApiError)
|
|
135
|
-
|
|
166
|
+
if (error instanceof ApiError)
|
|
167
|
+
return { success: false, error: error.message };
|
|
168
|
+
return {
|
|
169
|
+
success: false,
|
|
170
|
+
error: "Código inválido ou expirado. Tente novamente.",
|
|
171
|
+
};
|
|
136
172
|
}
|
|
137
173
|
}
|
|
138
174
|
|
|
139
|
-
export async function requestPhoneChangeAction(
|
|
175
|
+
export async function requestPhoneChangeAction(
|
|
176
|
+
newPhone: string
|
|
177
|
+
): Promise<ContactResetResult> {
|
|
140
178
|
try {
|
|
141
|
-
await accountService.requestContactReset(
|
|
179
|
+
await accountService.requestContactReset("phone", newPhone);
|
|
142
180
|
return { success: true };
|
|
143
181
|
} catch (error) {
|
|
144
|
-
if (error instanceof ApiError)
|
|
145
|
-
|
|
182
|
+
if (error instanceof ApiError)
|
|
183
|
+
return { success: false, error: error.message };
|
|
184
|
+
return {
|
|
185
|
+
success: false,
|
|
186
|
+
error:
|
|
187
|
+
"Número já existente ou ocorreu um erro. Tente novamente mais tarde.",
|
|
188
|
+
};
|
|
146
189
|
}
|
|
147
190
|
}
|
|
148
191
|
|
|
@@ -151,47 +194,68 @@ export async function confirmPhoneChangeAction(
|
|
|
151
194
|
newPhone: string
|
|
152
195
|
): Promise<ContactResetResult> {
|
|
153
196
|
try {
|
|
154
|
-
await accountService.confirmContactReset(
|
|
197
|
+
await accountService.confirmContactReset("phone", token, newPhone);
|
|
155
198
|
return { success: true };
|
|
156
199
|
} catch (error) {
|
|
157
|
-
if (error instanceof ApiError)
|
|
158
|
-
|
|
200
|
+
if (error instanceof ApiError)
|
|
201
|
+
return { success: false, error: error.message };
|
|
202
|
+
return {
|
|
203
|
+
success: false,
|
|
204
|
+
error: "Código inválido ou expirado. Tente novamente.",
|
|
205
|
+
};
|
|
159
206
|
}
|
|
160
207
|
}
|
|
161
208
|
|
|
162
209
|
export async function generateTwoFactorAction(): Promise<TwoFactorGenerateResult> {
|
|
163
210
|
try {
|
|
164
211
|
const result = await twoFactorService.generate();
|
|
165
|
-
return {
|
|
212
|
+
return {
|
|
213
|
+
success: true,
|
|
214
|
+
qrcode: result.data.qrcode,
|
|
215
|
+
backupCodes: result.data.backup_codes,
|
|
216
|
+
};
|
|
166
217
|
} catch (error) {
|
|
167
|
-
if (error instanceof ApiError)
|
|
168
|
-
|
|
218
|
+
if (error instanceof ApiError)
|
|
219
|
+
return { success: false, error: error.message };
|
|
220
|
+
return { success: false, error: "Erro ao gerar QR Code. Tente novamente." };
|
|
169
221
|
}
|
|
170
222
|
}
|
|
171
223
|
|
|
172
|
-
export async function confirmTwoFactorAction(
|
|
224
|
+
export async function confirmTwoFactorAction(
|
|
225
|
+
code: string
|
|
226
|
+
): Promise<TwoFactorActionResult> {
|
|
173
227
|
try {
|
|
174
228
|
await twoFactorService.confirm(code);
|
|
175
|
-
|
|
229
|
+
await accountService.updateAccountUser({ two_factor_authentication: true });
|
|
176
230
|
} catch (error) {
|
|
177
|
-
if (error instanceof ApiError)
|
|
178
|
-
|
|
231
|
+
if (error instanceof ApiError)
|
|
232
|
+
return { success: false, error: error.message };
|
|
233
|
+
return { success: false, error: "Código inválido. Tente novamente." };
|
|
179
234
|
}
|
|
235
|
+
|
|
236
|
+
return { success: true };
|
|
180
237
|
}
|
|
181
238
|
|
|
182
|
-
export async function disableTwoFactorAction(
|
|
239
|
+
export async function disableTwoFactorAction(
|
|
240
|
+
code: string
|
|
241
|
+
): Promise<TwoFactorActionResult> {
|
|
183
242
|
try {
|
|
184
243
|
await twoFactorService.verify(code);
|
|
185
244
|
} catch (error) {
|
|
186
|
-
if (error instanceof ApiError)
|
|
187
|
-
|
|
245
|
+
if (error instanceof ApiError)
|
|
246
|
+
return { success: false, error: error.message };
|
|
247
|
+
return { success: false, error: "Código inválido. Tente novamente." };
|
|
188
248
|
}
|
|
189
249
|
|
|
190
250
|
try {
|
|
191
251
|
await twoFactorService.disable();
|
|
192
252
|
return { success: true };
|
|
193
253
|
} catch (error) {
|
|
194
|
-
if (error instanceof ApiError)
|
|
195
|
-
|
|
254
|
+
if (error instanceof ApiError)
|
|
255
|
+
return { success: false, error: error.message };
|
|
256
|
+
return {
|
|
257
|
+
success: false,
|
|
258
|
+
error: "Erro ao desabilitar 2FA. Tente novamente.",
|
|
259
|
+
};
|
|
196
260
|
}
|
|
197
261
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
4
4
|
import { USER_QUERY_KEY } from '../../auth/hooks/useUserQuery';
|
|
5
|
+
import { ACCOUNT_QUERY_KEY } from './current-account.hook';
|
|
5
6
|
import type {
|
|
6
7
|
UpdateAccountRequest,
|
|
7
8
|
UpdateAccountUserRequest,
|
|
@@ -26,6 +27,8 @@ export function useUpdateAccount() {
|
|
|
26
27
|
mutationFn: (data: UpdateAccountRequest) => updateAccountAction(data),
|
|
27
28
|
onSuccess: () => {
|
|
28
29
|
queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });
|
|
30
|
+
queryClient.invalidateQueries({ queryKey: ACCOUNT_QUERY_KEY });
|
|
31
|
+
queryClient.invalidateQueries({ queryKey: USER_QUERY_KEY });
|
|
29
32
|
},
|
|
30
33
|
});
|
|
31
34
|
}
|
|
@@ -37,6 +40,7 @@ export function useUpdateAccountUser() {
|
|
|
37
40
|
mutationFn: updateUserAction,
|
|
38
41
|
onSuccess: () => {
|
|
39
42
|
queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });
|
|
43
|
+
queryClient.invalidateQueries({ queryKey: ACCOUNT_QUERY_KEY });
|
|
40
44
|
queryClient.invalidateQueries({ queryKey: USER_QUERY_KEY });
|
|
41
45
|
},
|
|
42
46
|
});
|