@n8n/stores 2.32.2 → 2.34.0
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/cloudPlan.store.cjs +7 -0
- package/dist/cloudPlan.store.d.cts +534 -0
- package/dist/cloudPlan.store.d.mts +534 -0
- package/dist/cloudPlan.store.mjs +7 -0
- package/dist/cloudPlan2.store.cjs +247 -0
- package/dist/cloudPlan2.store.cjs.map +1 -0
- package/dist/cloudPlan2.store.mjs +242 -0
- package/dist/cloudPlan2.store.mjs.map +1 -0
- package/dist/composables/useBasePageRedirectionHelper.cjs +87 -0
- package/dist/composables/useBasePageRedirectionHelper.cjs.map +1 -0
- package/dist/composables/useBasePageRedirectionHelper.d.cts +16 -0
- package/dist/composables/useBasePageRedirectionHelper.d.mts +16 -0
- package/dist/composables/useBasePageRedirectionHelper.mjs +87 -0
- package/dist/composables/useBasePageRedirectionHelper.mjs.map +1 -0
- package/dist/constants2.cjs +2 -0
- package/dist/constants2.cjs.map +1 -1
- package/dist/constants2.d.cts +2 -0
- package/dist/constants2.d.mts +2 -0
- package/dist/constants2.mjs +2 -0
- package/dist/constants2.mjs.map +1 -1
- package/dist/invitation.api.cjs +4 -0
- package/dist/invitation.api.d.cts +2 -0
- package/dist/invitation.api.d.mts +2 -0
- package/dist/invitation.api.mjs +3 -0
- package/dist/invitation2.api.cjs +26 -0
- package/dist/invitation2.api.cjs.map +1 -0
- package/dist/invitation2.api.d.cts +30 -0
- package/dist/invitation2.api.d.mts +30 -0
- package/dist/invitation2.api.mjs +14 -0
- package/dist/invitation2.api.mjs.map +1 -0
- package/dist/modalOpeners.cjs +0 -0
- package/dist/modalOpeners.d.cts +2 -0
- package/dist/modalOpeners.d.mts +2 -0
- package/dist/modalOpeners.mjs +1 -0
- package/dist/modalOpeners2.d.cts +11 -0
- package/dist/modalOpeners2.d.mts +11 -0
- package/dist/notifications.store.cjs +27 -0
- package/dist/notifications.store.cjs.map +1 -0
- package/dist/notifications.store.d.cts +15 -0
- package/dist/notifications.store.d.mts +15 -0
- package/dist/notifications.store.mjs +26 -0
- package/dist/notifications.store.mjs.map +1 -0
- package/dist/onboarding.api.cjs +3 -0
- package/dist/onboarding.api.d.cts +7 -0
- package/dist/onboarding.api.d.mts +7 -0
- package/dist/onboarding.api.mjs +3 -0
- package/dist/onboarding2.api.cjs +24 -0
- package/dist/onboarding2.api.cjs.map +1 -0
- package/dist/onboarding2.api.mjs +18 -0
- package/dist/onboarding2.api.mjs.map +1 -0
- package/dist/pageRedirection.d.cts +6 -0
- package/dist/pageRedirection.d.mts +6 -0
- package/dist/rbac.store.cjs +2 -1
- package/dist/rbac.store.cjs.map +1 -1
- package/dist/rbac.store.d.cts +123 -123
- package/dist/rbac.store.d.mts +124 -124
- package/dist/rbac.store.mjs +1 -1
- package/dist/roles.store.cjs +88 -0
- package/dist/roles.store.cjs.map +1 -0
- package/dist/roles.store.d.cts +637 -0
- package/dist/roles.store.d.mts +637 -0
- package/dist/roles.store.mjs +87 -0
- package/dist/roles.store.mjs.map +1 -0
- package/dist/settings.store.cjs +6 -0
- package/dist/settings.store.d.cts +3801 -0
- package/dist/settings.store.d.mts +3801 -0
- package/dist/settings.store.mjs +6 -0
- package/dist/settings2.store.cjs +387 -0
- package/dist/settings2.store.cjs.map +1 -0
- package/dist/settings2.store.mjs +348 -0
- package/dist/settings2.store.mjs.map +1 -0
- package/dist/types/pageRedirection.cjs +0 -0
- package/dist/types/pageRedirection.d.cts +2 -0
- package/dist/types/pageRedirection.d.mts +2 -0
- package/dist/types/pageRedirection.mjs +1 -0
- package/dist/useAgentRequestStore.cjs +1 -0
- package/dist/useAgentRequestStore.cjs.map +1 -1
- package/dist/useAgentRequestStore.d.cts +1 -1
- package/dist/useAgentRequestStore.d.mts +6 -6
- package/dist/useRootStore.cjs +4 -182
- package/dist/useRootStore.d.cts +73 -73
- package/dist/useRootStore.d.mts +73 -73
- package/dist/useRootStore.mjs +4 -182
- package/dist/useRootStore2.cjs +189 -0
- package/dist/useRootStore2.cjs.map +1 -0
- package/dist/useRootStore2.mjs +183 -0
- package/dist/useRootStore2.mjs.map +1 -0
- package/dist/users.store.cjs +9 -0
- package/dist/users.store.d.cts +552 -0
- package/dist/users.store.d.mts +552 -0
- package/dist/users.store.mjs +9 -0
- package/dist/users2.store.cjs +362 -0
- package/dist/users2.store.cjs.map +1 -0
- package/dist/users2.store.mjs +353 -0
- package/dist/users2.store.mjs.map +1 -0
- package/dist/versions.store.cjs +11 -0
- package/dist/versions.store.d.cts +384 -0
- package/dist/versions.store.d.mts +384 -0
- package/dist/versions.store.mjs +10 -0
- package/dist/versions2.store.cjs +230 -0
- package/dist/versions2.store.cjs.map +1 -0
- package/dist/versions2.store.mjs +218 -0
- package/dist/versions2.store.mjs.map +1 -0
- package/package.json +13 -6
- package/dist/useRootStore.cjs.map +0 -1
- package/dist/useRootStore.mjs.map +0 -1
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
const require_settings_store = require('./settings2.store.cjs');
|
|
2
|
+
const require_constants = require('./constants2.cjs');
|
|
3
|
+
const require_useRootStore = require('./useRootStore2.cjs');
|
|
4
|
+
const require_invitation_api = require('./invitation2.api.cjs');
|
|
5
|
+
const require_onboarding_api = require('./onboarding2.api.cjs');
|
|
6
|
+
let __n8n_rest_api_client_api_cloudPlans = require("@n8n/rest-api-client/api/cloudPlans");
|
|
7
|
+
__n8n_rest_api_client_api_cloudPlans = require_settings_store.__toESM(__n8n_rest_api_client_api_cloudPlans);
|
|
8
|
+
let pinia = require("pinia");
|
|
9
|
+
let vue = require("vue");
|
|
10
|
+
let __n8n_api_types = require("@n8n/api-types");
|
|
11
|
+
let __vueuse_core = require("@vueuse/core");
|
|
12
|
+
let __n8n_constants = require("@n8n/constants");
|
|
13
|
+
let __n8n_frontend_constants_users = require("@n8n/frontend-constants/users");
|
|
14
|
+
let __n8n_rest_api_client_api_mfa = require("@n8n/rest-api-client/api/mfa");
|
|
15
|
+
__n8n_rest_api_client_api_mfa = require_settings_store.__toESM(__n8n_rest_api_client_api_mfa);
|
|
16
|
+
let __n8n_rest_api_client_api_sso = require("@n8n/rest-api-client/api/sso");
|
|
17
|
+
__n8n_rest_api_client_api_sso = require_settings_store.__toESM(__n8n_rest_api_client_api_sso);
|
|
18
|
+
let __n8n_rest_api_client_api_users = require("@n8n/rest-api-client/api/users");
|
|
19
|
+
__n8n_rest_api_client_api_users = require_settings_store.__toESM(__n8n_rest_api_client_api_users);
|
|
20
|
+
|
|
21
|
+
//#region src/users.store.ts
|
|
22
|
+
const _isPendingUser = (user) => !!user?.isPending;
|
|
23
|
+
const _isInstanceOwner = (user) => user?.role === __n8n_api_types.ROLE.Owner;
|
|
24
|
+
const _isDefaultUser = (user) => _isInstanceOwner(user) && _isPendingUser(user);
|
|
25
|
+
const _isAdmin = (user) => user?.role === __n8n_api_types.ROLE.Admin;
|
|
26
|
+
const useUsersStore = (0, pinia.defineStore)(require_constants.STORES.USERS, () => {
|
|
27
|
+
const initialized = (0, vue.ref)(false);
|
|
28
|
+
const currentUserId = (0, vue.ref)(null);
|
|
29
|
+
const usersById = (0, vue.ref)({});
|
|
30
|
+
const userQuota = (0, vue.ref)(-1);
|
|
31
|
+
const loginHooks = (0, vue.ref)([]);
|
|
32
|
+
const logoutHooks = (0, vue.ref)([]);
|
|
33
|
+
const warnModalOpenerMissing = (action) => {
|
|
34
|
+
if ({}.env.DEV) console.warn(`[users.store] ${action} called before modal openers were registered; ignoring. Call registerModalOpeners() at app bootstrap.`);
|
|
35
|
+
};
|
|
36
|
+
const modalOpeners = (0, vue.ref)({
|
|
37
|
+
openModal: (name) => warnModalOpenerMissing(`openModal(${String(name)})`),
|
|
38
|
+
openModalWithData: (payload) => warnModalOpenerMissing(`openModalWithData(${String(payload.name)})`)
|
|
39
|
+
});
|
|
40
|
+
const registerModalOpeners = (openers) => {
|
|
41
|
+
modalOpeners.value = openers;
|
|
42
|
+
};
|
|
43
|
+
const canListUsers = (0, vue.ref)(() => false);
|
|
44
|
+
const setPermissionsResolvers = (resolvers) => {
|
|
45
|
+
canListUsers.value = resolvers.listUsers;
|
|
46
|
+
};
|
|
47
|
+
const rootStore = require_useRootStore.useRootStore();
|
|
48
|
+
const settingsStore = require_settings_store.useSettingsStore();
|
|
49
|
+
const allUsers = (0, vue.computed)(() => Object.values(usersById.value));
|
|
50
|
+
const currentUser = (0, vue.computed)(() => currentUserId.value ? usersById.value[currentUserId.value] : null);
|
|
51
|
+
const userActivated = (0, vue.computed)(() => Boolean(currentUser.value?.settings?.userActivated));
|
|
52
|
+
const isDefaultUser = (0, vue.computed)(() => _isDefaultUser(currentUser.value));
|
|
53
|
+
const isInstanceOwner = (0, vue.computed)(() => _isInstanceOwner(currentUser.value));
|
|
54
|
+
const isAdmin = (0, vue.computed)(() => _isAdmin(currentUser.value));
|
|
55
|
+
const isAdminOrOwner = (0, vue.computed)(() => isInstanceOwner.value || isAdmin.value);
|
|
56
|
+
const mfaEnabled = (0, vue.computed)(() => currentUser.value?.mfaEnabled ?? false);
|
|
57
|
+
const globalRoleName = (0, vue.computed)(() => currentUser.value?.role ?? "default");
|
|
58
|
+
const userClaimedAiCredits = (0, vue.computed)(() => currentUser.value?.settings?.userClaimedAiCredits);
|
|
59
|
+
const isEasyAIWorkflowOnboardingDone = (0, vue.computed)(() => Boolean(currentUser.value?.settings?.easyAIWorkflowOnboarded));
|
|
60
|
+
const canUserUpdateVersion = (0, vue.computed)(() => {
|
|
61
|
+
return isInstanceOwner.value;
|
|
62
|
+
});
|
|
63
|
+
const setEasyAIWorkflowOnboardingDone = () => {
|
|
64
|
+
if (currentUser.value?.settings) currentUser.value.settings.easyAIWorkflowOnboarded = true;
|
|
65
|
+
};
|
|
66
|
+
const isCalloutDismissed = (callout) => Boolean(currentUser.value?.settings?.dismissedCallouts?.[callout]);
|
|
67
|
+
const setCalloutDismissed = (callout) => {
|
|
68
|
+
if (currentUser.value?.settings) {
|
|
69
|
+
currentUser.value.settings.dismissedCallouts ??= {};
|
|
70
|
+
currentUser.value.settings.dismissedCallouts[callout] = true;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const usersLimitNotReached = (0, vue.computed)(() => userQuota.value === -1 || userQuota.value > allUsers.value.length);
|
|
74
|
+
const addUsers = (newUsers) => {
|
|
75
|
+
newUsers.forEach((userResponse) => {
|
|
76
|
+
const updatedUser = {
|
|
77
|
+
...usersById.value[userResponse.id] || {},
|
|
78
|
+
...userResponse
|
|
79
|
+
};
|
|
80
|
+
const user = {
|
|
81
|
+
...updatedUser,
|
|
82
|
+
fullName: userResponse.firstName ? `${updatedUser.firstName} ${updatedUser.lastName ?? ""}` : void 0,
|
|
83
|
+
isDefaultUser: _isDefaultUser(updatedUser),
|
|
84
|
+
isPendingUser: _isPendingUser(updatedUser)
|
|
85
|
+
};
|
|
86
|
+
usersById.value = {
|
|
87
|
+
...usersById.value,
|
|
88
|
+
[user.id]: user
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
const setCurrentUser = async (user) => {
|
|
93
|
+
addUsers([user]);
|
|
94
|
+
currentUserId.value = user.id;
|
|
95
|
+
for (const hook of loginHooks.value) try {
|
|
96
|
+
await hook(user);
|
|
97
|
+
} catch (error) {
|
|
98
|
+
console.error("Error executing login hook:", error);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const loginWithCookie = async () => {
|
|
102
|
+
const user = await __n8n_rest_api_client_api_users.loginCurrentUser(rootStore.restApiContext);
|
|
103
|
+
if (!user) return;
|
|
104
|
+
await setCurrentUser(user);
|
|
105
|
+
};
|
|
106
|
+
const initialize = async () => {
|
|
107
|
+
if (initialized.value) return;
|
|
108
|
+
try {
|
|
109
|
+
await loginWithCookie();
|
|
110
|
+
initialized.value = true;
|
|
111
|
+
} catch {}
|
|
112
|
+
};
|
|
113
|
+
const unsetCurrentUser = () => {
|
|
114
|
+
currentUserId.value = null;
|
|
115
|
+
};
|
|
116
|
+
const deleteUserById = (userId) => {
|
|
117
|
+
const { [userId]: _, ...rest } = usersById.value;
|
|
118
|
+
usersById.value = rest;
|
|
119
|
+
};
|
|
120
|
+
const setPersonalizationAnswers = (answers) => {
|
|
121
|
+
if (!currentUser.value) return;
|
|
122
|
+
usersById.value = {
|
|
123
|
+
...usersById.value,
|
|
124
|
+
[currentUser.value.id]: {
|
|
125
|
+
...currentUser.value,
|
|
126
|
+
personalizationAnswers: answers
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
const loginWithCreds = async (params) => {
|
|
131
|
+
const user = await __n8n_rest_api_client_api_users.login(rootStore.restApiContext, params);
|
|
132
|
+
if (!user) return;
|
|
133
|
+
await setCurrentUser(user);
|
|
134
|
+
};
|
|
135
|
+
const registerLoginHook = (hook) => {
|
|
136
|
+
loginHooks.value.push(hook);
|
|
137
|
+
};
|
|
138
|
+
const registerLogoutHook = (hook) => {
|
|
139
|
+
logoutHooks.value.push(hook);
|
|
140
|
+
};
|
|
141
|
+
const logout = async (options) => {
|
|
142
|
+
let redirectUrl = null;
|
|
143
|
+
if (options?.viaOidc) try {
|
|
144
|
+
({redirectUrl} = await __n8n_rest_api_client_api_sso.oidcLogout(rootStore.restApiContext));
|
|
145
|
+
} catch {
|
|
146
|
+
await __n8n_rest_api_client_api_users.logout(rootStore.restApiContext);
|
|
147
|
+
}
|
|
148
|
+
else await __n8n_rest_api_client_api_users.logout(rootStore.restApiContext);
|
|
149
|
+
unsetCurrentUser();
|
|
150
|
+
for (const hook of logoutHooks.value) try {
|
|
151
|
+
await hook();
|
|
152
|
+
} catch (error) {
|
|
153
|
+
console.error("Error executing logout hook:", error);
|
|
154
|
+
}
|
|
155
|
+
localStorage.removeItem(__n8n_constants.BROWSER_ID_STORAGE_KEY);
|
|
156
|
+
return { redirectUrl };
|
|
157
|
+
};
|
|
158
|
+
const createOwner = async (params) => {
|
|
159
|
+
const user = await __n8n_rest_api_client_api_users.setupOwner(rootStore.restApiContext, params);
|
|
160
|
+
if (user) {
|
|
161
|
+
await setCurrentUser(user);
|
|
162
|
+
settingsStore.stopShowingSetupPage();
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
const validateSignupToken = async (params) => {
|
|
166
|
+
return await __n8n_rest_api_client_api_users.validateSignupToken(rootStore.restApiContext, params);
|
|
167
|
+
};
|
|
168
|
+
const acceptInvitation$1 = async (params) => {
|
|
169
|
+
const user = await require_invitation_api.acceptInvitation(rootStore.restApiContext, params);
|
|
170
|
+
if (user) await setCurrentUser(user);
|
|
171
|
+
};
|
|
172
|
+
const sendForgotPasswordEmail = async (params) => {
|
|
173
|
+
await __n8n_rest_api_client_api_users.sendForgotPasswordEmail(rootStore.restApiContext, params);
|
|
174
|
+
};
|
|
175
|
+
const validatePasswordToken = async (params) => {
|
|
176
|
+
await __n8n_rest_api_client_api_users.validatePasswordToken(rootStore.restApiContext, params);
|
|
177
|
+
};
|
|
178
|
+
const changePassword = async (params) => {
|
|
179
|
+
await __n8n_rest_api_client_api_users.changePassword(rootStore.restApiContext, params);
|
|
180
|
+
};
|
|
181
|
+
const updateUser = async (params) => {
|
|
182
|
+
const user = await __n8n_rest_api_client_api_users.updateCurrentUser(rootStore.restApiContext, params);
|
|
183
|
+
addUsers([user]);
|
|
184
|
+
return user;
|
|
185
|
+
};
|
|
186
|
+
const updateUserName = async (params) => {
|
|
187
|
+
if (!currentUser.value) return;
|
|
188
|
+
return await updateUser({
|
|
189
|
+
email: currentUser.value.email,
|
|
190
|
+
...params
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
const updateUserSettings = async (settings) => {
|
|
194
|
+
const updatedSettings = await __n8n_rest_api_client_api_users.updateCurrentUserSettings(rootStore.restApiContext, settings);
|
|
195
|
+
if (currentUser.value) {
|
|
196
|
+
currentUser.value.settings = updatedSettings;
|
|
197
|
+
addUsers([currentUser.value]);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
const updateOtherUserSettings = async (userId, settings) => {
|
|
201
|
+
await __n8n_rest_api_client_api_users.updateOtherUserSettings(rootStore.restApiContext, userId, settings);
|
|
202
|
+
};
|
|
203
|
+
const updateCurrentUserPassword = async (params) => {
|
|
204
|
+
await __n8n_rest_api_client_api_users.updateCurrentUserPassword(rootStore.restApiContext, params);
|
|
205
|
+
};
|
|
206
|
+
const deleteUser = async (params) => {
|
|
207
|
+
await __n8n_rest_api_client_api_users.deleteUser(rootStore.restApiContext, params);
|
|
208
|
+
deleteUserById(params.id);
|
|
209
|
+
};
|
|
210
|
+
const fetchUsers = async ({ take, skip, filter } = {}) => {
|
|
211
|
+
if (!canListUsers.value()) return;
|
|
212
|
+
const { items } = await __n8n_rest_api_client_api_users.getUsers(rootStore.restApiContext, {
|
|
213
|
+
take: take ?? 50,
|
|
214
|
+
skip: skip ?? 0,
|
|
215
|
+
filter
|
|
216
|
+
});
|
|
217
|
+
addUsers(items);
|
|
218
|
+
};
|
|
219
|
+
const inviteUsers$1 = async (params) => {
|
|
220
|
+
const invitedUsers = await require_invitation_api.inviteUsers(rootStore.restApiContext, params);
|
|
221
|
+
addUsers(invitedUsers.map(({ user }) => ({
|
|
222
|
+
isPending: true,
|
|
223
|
+
...user
|
|
224
|
+
})));
|
|
225
|
+
return invitedUsers;
|
|
226
|
+
};
|
|
227
|
+
const reinviteUser = async ({ email, role }) => {
|
|
228
|
+
const invitationResponse = await require_invitation_api.inviteUsers(rootStore.restApiContext, [{
|
|
229
|
+
email,
|
|
230
|
+
role
|
|
231
|
+
}]);
|
|
232
|
+
if (!invitationResponse[0].user.emailSent) throw Error(invitationResponse[0].error);
|
|
233
|
+
};
|
|
234
|
+
const getUserPasswordResetLink = async (params) => {
|
|
235
|
+
return await __n8n_rest_api_client_api_users.getPasswordResetLink(rootStore.restApiContext, params);
|
|
236
|
+
};
|
|
237
|
+
const generateInviteLink = async (params) => {
|
|
238
|
+
return await __n8n_rest_api_client_api_users.generateInviteLink(rootStore.restApiContext, params);
|
|
239
|
+
};
|
|
240
|
+
const submitPersonalizationSurvey = async (results) => {
|
|
241
|
+
await __n8n_rest_api_client_api_users.submitPersonalizationSurvey(rootStore.restApiContext, results);
|
|
242
|
+
setPersonalizationAnswers(results);
|
|
243
|
+
};
|
|
244
|
+
const showPersonalizationSurvey = () => {
|
|
245
|
+
if (settingsStore.isPersonalizationSurveyEnabled && currentUser.value && !currentUser.value.personalizationAnswers) modalOpeners.value.openModal(__n8n_frontend_constants_users.PERSONALIZATION_MODAL_KEY);
|
|
246
|
+
};
|
|
247
|
+
const fetchMfaQR = async () => {
|
|
248
|
+
return await __n8n_rest_api_client_api_mfa.getMfaQR(rootStore.restApiContext);
|
|
249
|
+
};
|
|
250
|
+
const verifyMfaCode = async (data) => {
|
|
251
|
+
return await __n8n_rest_api_client_api_mfa.verifyMfaCode(rootStore.restApiContext, data);
|
|
252
|
+
};
|
|
253
|
+
const canEnableMFA = async () => {
|
|
254
|
+
return await __n8n_rest_api_client_api_mfa.canEnableMFA(rootStore.restApiContext);
|
|
255
|
+
};
|
|
256
|
+
const enableMfa = async (data) => {
|
|
257
|
+
await __n8n_rest_api_client_api_mfa.enableMfa(rootStore.restApiContext, data);
|
|
258
|
+
if (currentUser.value) currentUser.value.mfaEnabled = true;
|
|
259
|
+
};
|
|
260
|
+
const disableMfa = async (data) => {
|
|
261
|
+
await __n8n_rest_api_client_api_mfa.disableMfa(rootStore.restApiContext, data);
|
|
262
|
+
if (currentUser.value) currentUser.value.mfaEnabled = false;
|
|
263
|
+
};
|
|
264
|
+
const updateEnforceMfa = async (enforce) => {
|
|
265
|
+
await __n8n_rest_api_client_api_mfa.updateEnforceMfa(rootStore.restApiContext, enforce);
|
|
266
|
+
settingsStore.isMFAEnforced = enforce;
|
|
267
|
+
};
|
|
268
|
+
const sendConfirmationEmail = async () => {
|
|
269
|
+
await __n8n_rest_api_client_api_cloudPlans.sendConfirmationEmail(rootStore.restApiContext);
|
|
270
|
+
};
|
|
271
|
+
const updateGlobalRole = async ({ id, newRoleName }) => {
|
|
272
|
+
await __n8n_rest_api_client_api_users.updateGlobalRole(rootStore.restApiContext, {
|
|
273
|
+
id,
|
|
274
|
+
newRoleName
|
|
275
|
+
});
|
|
276
|
+
await fetchUsers({ filter: { ids: [id] } });
|
|
277
|
+
};
|
|
278
|
+
const submitContactEmail = async (email, agree) => {
|
|
279
|
+
if (currentUser.value) return await require_onboarding_api.submitEmailOnSignup(rootStore.instanceId, currentUser.value, email ?? currentUser.value.email, agree);
|
|
280
|
+
return null;
|
|
281
|
+
};
|
|
282
|
+
const usersList = (0, __vueuse_core.useAsyncState)(async (filter) => await __n8n_rest_api_client_api_users.getUsers(rootStore.restApiContext, filter), {
|
|
283
|
+
count: 0,
|
|
284
|
+
items: []
|
|
285
|
+
}, {
|
|
286
|
+
immediate: false,
|
|
287
|
+
resetOnExecute: false
|
|
288
|
+
});
|
|
289
|
+
const setUserQuota = (quota) => {
|
|
290
|
+
if (typeof quota !== "undefined") userQuota.value = quota;
|
|
291
|
+
};
|
|
292
|
+
return {
|
|
293
|
+
initialized,
|
|
294
|
+
currentUserId,
|
|
295
|
+
usersById,
|
|
296
|
+
allUsers,
|
|
297
|
+
currentUser,
|
|
298
|
+
userActivated,
|
|
299
|
+
isDefaultUser,
|
|
300
|
+
isInstanceOwner,
|
|
301
|
+
isAdmin,
|
|
302
|
+
isAdminOrOwner,
|
|
303
|
+
mfaEnabled,
|
|
304
|
+
globalRoleName,
|
|
305
|
+
userClaimedAiCredits,
|
|
306
|
+
isEasyAIWorkflowOnboardingDone,
|
|
307
|
+
canUserUpdateVersion,
|
|
308
|
+
usersLimitNotReached,
|
|
309
|
+
addUsers,
|
|
310
|
+
loginWithCookie,
|
|
311
|
+
initialize,
|
|
312
|
+
setPersonalizationAnswers,
|
|
313
|
+
loginWithCreds,
|
|
314
|
+
logout,
|
|
315
|
+
registerLoginHook,
|
|
316
|
+
registerLogoutHook,
|
|
317
|
+
registerModalOpeners,
|
|
318
|
+
setPermissionsResolvers,
|
|
319
|
+
createOwner,
|
|
320
|
+
validateSignupToken,
|
|
321
|
+
acceptInvitation: acceptInvitation$1,
|
|
322
|
+
sendForgotPasswordEmail,
|
|
323
|
+
validatePasswordToken,
|
|
324
|
+
changePassword,
|
|
325
|
+
updateUser,
|
|
326
|
+
updateUserName,
|
|
327
|
+
updateUserSettings,
|
|
328
|
+
updateOtherUserSettings,
|
|
329
|
+
updateCurrentUserPassword,
|
|
330
|
+
deleteUser,
|
|
331
|
+
fetchUsers,
|
|
332
|
+
inviteUsers: inviteUsers$1,
|
|
333
|
+
reinviteUser,
|
|
334
|
+
getUserPasswordResetLink,
|
|
335
|
+
generateInviteLink,
|
|
336
|
+
submitPersonalizationSurvey,
|
|
337
|
+
showPersonalizationSurvey,
|
|
338
|
+
fetchMfaQR,
|
|
339
|
+
verifyMfaCode,
|
|
340
|
+
enableMfa,
|
|
341
|
+
disableMfa,
|
|
342
|
+
updateEnforceMfa,
|
|
343
|
+
canEnableMFA,
|
|
344
|
+
sendConfirmationEmail,
|
|
345
|
+
updateGlobalRole,
|
|
346
|
+
setEasyAIWorkflowOnboardingDone,
|
|
347
|
+
isCalloutDismissed,
|
|
348
|
+
setCalloutDismissed,
|
|
349
|
+
submitContactEmail,
|
|
350
|
+
setUserQuota,
|
|
351
|
+
usersList
|
|
352
|
+
};
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
//#endregion
|
|
356
|
+
Object.defineProperty(exports, 'useUsersStore', {
|
|
357
|
+
enumerable: true,
|
|
358
|
+
get: function () {
|
|
359
|
+
return useUsersStore;
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
//# sourceMappingURL=users2.store.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users2.store.cjs","names":["ROLE","STORES","useRootStore","useSettingsStore","user: IUser","usersApi","redirectUrl: string | null","ssoApi","BROWSER_ID_STORAGE_KEY","acceptInvitation","inviteUsers","PERSONALIZATION_MODAL_KEY","mfaApi","cloudApi"],"sources":["../src/users.store.ts"],"sourcesContent":["import {\n\ttype LoginRequestDto,\n\ttype PasswordUpdateRequestDto,\n\ttype SettingsUpdateRequestDto,\n\ttype UserSelfSettingsUpdateRequestDto,\n\ttype UserUpdateRequestDto,\n\ttype User,\n\tROLE,\n\ttype UsersListFilterDto,\n} from '@n8n/api-types';\nimport { BROWSER_ID_STORAGE_KEY } from '@n8n/constants';\nimport { PERSONALIZATION_MODAL_KEY } from '@n8n/frontend-constants/users';\nimport type { AssignableGlobalRole } from '@n8n/permissions';\nimport * as cloudApi from '@n8n/rest-api-client/api/cloudPlans';\nimport * as mfaApi from '@n8n/rest-api-client/api/mfa';\nimport * as ssoApi from '@n8n/rest-api-client/api/sso';\nimport type {\n\tUpdateGlobalRolePayload,\n\tIUserResponse,\n\tIUser,\n\tCurrentUserResponse,\n\tIPersonalizationLatestVersion,\n} from '@n8n/rest-api-client/api/users';\nimport * as usersApi from '@n8n/rest-api-client/api/users';\nimport { useAsyncState } from '@vueuse/core';\nimport { defineStore } from 'pinia';\nimport { computed, ref } from 'vue';\n\nimport { STORES } from './constants';\nimport * as invitationsApi from './invitation.api';\nimport type { ModalOpeners } from './modalOpeners';\nimport * as onboardingApi from './onboarding.api';\nimport { useSettingsStore } from './settings.store';\nimport { useRootStore } from './useRootStore';\n\nconst _isPendingUser = (user: IUserResponse | null) => !!user?.isPending;\nconst _isInstanceOwner = (user: IUserResponse | null) => user?.role === ROLE.Owner;\nconst _isDefaultUser = (user: IUserResponse | null) =>\n\t_isInstanceOwner(user) && _isPendingUser(user);\nconst _isAdmin = (user: IUserResponse | null) => user?.role === ROLE.Admin;\n\nexport type LoginHook = (user: CurrentUserResponse) => void | Promise<void>;\ntype LogoutHook = () => void | Promise<void>;\n\nexport const useUsersStore = defineStore(STORES.USERS, () => {\n\tconst initialized = ref(false);\n\tconst currentUserId = ref<string | null>(null);\n\tconst usersById = ref<Record<string, IUser>>({});\n\tconst userQuota = ref<number>(-1);\n\n\tconst loginHooks = ref<LoginHook[]>([]);\n\tconst logoutHooks = ref<LogoutHook[]>([]);\n\n\t// Modal-open actions, registered at app bootstrap (see app/init.ts). Until then\n\t// they no-op — warning in dev — so the store never reaches into `ui.store`. Shares\n\t// the `ModalOpeners` contract with the other decoupled stores; this store currently\n\t// uses only `openModal`.\n\tconst warnModalOpenerMissing = (action: string) => {\n\t\tif (import.meta.env.DEV) {\n\t\t\tconsole.warn(\n\t\t\t\t`[users.store] ${action} called before modal openers were registered; ignoring. Call registerModalOpeners() at app bootstrap.`,\n\t\t\t);\n\t\t}\n\t};\n\tconst modalOpeners = ref<ModalOpeners>({\n\t\topenModal: (name) => warnModalOpenerMissing(`openModal(${String(name)})`),\n\t\topenModalWithData: (payload) =>\n\t\t\twarnModalOpenerMissing(`openModalWithData(${String(payload.name)})`),\n\t});\n\tconst registerModalOpeners = (openers: ModalOpeners) => {\n\t\tmodalOpeners.value = openers;\n\t};\n\n\t// App-provided capabilities, registered at bootstrap (see app/init.ts) so the store\n\t// carries no `@/app` dependency. Both fall back to safe no-ops before registration.\n\n\t// Permission checks, keyed by capability (app RBAC checks; extend the object as\n\t// more permissions need resolving). `listUsers` gates the `user:list` scope.\n\tconst canListUsers = ref<() => boolean>(() => false);\n\tconst setPermissionsResolvers = (resolvers: { listUsers: () => boolean }) => {\n\t\tcanListUsers.value = resolvers.listUsers;\n\t};\n\n\t// Stores\n\n\tconst rootStore = useRootStore();\n\tconst settingsStore = useSettingsStore();\n\n\t// Computed\n\n\tconst allUsers = computed(() => Object.values(usersById.value));\n\n\tconst currentUser = computed(() =>\n\t\tcurrentUserId.value ? usersById.value[currentUserId.value] : null,\n\t);\n\n\tconst userActivated = computed(() => Boolean(currentUser.value?.settings?.userActivated));\n\n\tconst isDefaultUser = computed(() => _isDefaultUser(currentUser.value));\n\n\tconst isInstanceOwner = computed(() => _isInstanceOwner(currentUser.value));\n\n\tconst isAdmin = computed(() => _isAdmin(currentUser.value));\n\n\tconst isAdminOrOwner = computed(() => isInstanceOwner.value || isAdmin.value);\n\n\tconst mfaEnabled = computed(() => currentUser.value?.mfaEnabled ?? false);\n\n\tconst globalRoleName = computed(() => currentUser.value?.role ?? 'default');\n\n\tconst userClaimedAiCredits = computed(() => currentUser.value?.settings?.userClaimedAiCredits);\n\n\tconst isEasyAIWorkflowOnboardingDone = computed(() =>\n\t\tBoolean(currentUser.value?.settings?.easyAIWorkflowOnboarded),\n\t);\n\n\tconst canUserUpdateVersion = computed(() => {\n\t\treturn isInstanceOwner.value;\n\t});\n\n\tconst setEasyAIWorkflowOnboardingDone = () => {\n\t\tif (currentUser.value?.settings) {\n\t\t\tcurrentUser.value.settings.easyAIWorkflowOnboarded = true;\n\t\t}\n\t};\n\n\tconst isCalloutDismissed = (callout: string) =>\n\t\tBoolean(currentUser.value?.settings?.dismissedCallouts?.[callout]);\n\n\tconst setCalloutDismissed = (callout: string) => {\n\t\tif (currentUser.value?.settings) {\n\t\t\tcurrentUser.value.settings.dismissedCallouts ??= {};\n\n\t\t\tcurrentUser.value.settings.dismissedCallouts[callout] = true;\n\t\t}\n\t};\n\n\tconst usersLimitNotReached = computed(\n\t\t(): boolean => userQuota.value === -1 || userQuota.value > allUsers.value.length,\n\t);\n\n\t// Methods\n\n\tconst addUsers = (newUsers: User[]) => {\n\t\tnewUsers.forEach((userResponse) => {\n\t\t\tconst prevUser = usersById.value[userResponse.id] || {};\n\t\t\tconst updatedUser = {\n\t\t\t\t...prevUser,\n\t\t\t\t...userResponse,\n\t\t\t};\n\t\t\tconst user: IUser = {\n\t\t\t\t...updatedUser,\n\t\t\t\tfullName: userResponse.firstName\n\t\t\t\t\t? `${updatedUser.firstName} ${updatedUser.lastName ?? ''}`\n\t\t\t\t\t: undefined,\n\t\t\t\tisDefaultUser: _isDefaultUser(updatedUser),\n\t\t\t\tisPendingUser: _isPendingUser(updatedUser),\n\t\t\t};\n\n\t\t\tusersById.value = {\n\t\t\t\t...usersById.value,\n\t\t\t\t[user.id]: user,\n\t\t\t};\n\t\t});\n\t};\n\n\tconst setCurrentUser = async (user: CurrentUserResponse) => {\n\t\taddUsers([user]);\n\t\tcurrentUserId.value = user.id;\n\n\t\tfor (const hook of loginHooks.value) {\n\t\t\ttry {\n\t\t\t\tawait hook(user);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error executing login hook:', error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst loginWithCookie = async () => {\n\t\tconst user = await usersApi.loginCurrentUser(rootStore.restApiContext);\n\t\tif (!user) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait setCurrentUser(user);\n\t};\n\n\tconst initialize = async () => {\n\t\tif (initialized.value) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait loginWithCookie();\n\t\t\tinitialized.value = true;\n\t\t} catch {\n\t\t\t// A missing or expired auth cookie before setup is expected; leave the store\n\t\t\t// uninitialized and let the caller proceed to the login/setup flow.\n\t\t}\n\t};\n\n\tconst unsetCurrentUser = () => {\n\t\tcurrentUserId.value = null;\n\t};\n\n\tconst deleteUserById = (userId: string) => {\n\t\tconst { [userId]: _, ...rest } = usersById.value;\n\t\tusersById.value = rest;\n\t};\n\n\tconst setPersonalizationAnswers = (answers: IPersonalizationLatestVersion) => {\n\t\tif (!currentUser.value) {\n\t\t\treturn;\n\t\t}\n\n\t\tusersById.value = {\n\t\t\t...usersById.value,\n\t\t\t[currentUser.value.id]: {\n\t\t\t\t...currentUser.value,\n\t\t\t\tpersonalizationAnswers: answers,\n\t\t\t},\n\t\t};\n\t};\n\n\tconst loginWithCreds = async (params: LoginRequestDto) => {\n\t\tconst user = await usersApi.login(rootStore.restApiContext, params);\n\t\tif (!user) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait setCurrentUser(user);\n\t};\n\n\tconst registerLoginHook = (hook: LoginHook) => {\n\t\tloginHooks.value.push(hook);\n\t};\n\n\tconst registerLogoutHook = (hook: LogoutHook) => {\n\t\tlogoutHooks.value.push(hook);\n\t};\n\n\tconst logout = async (options?: { viaOidc?: boolean }) => {\n\t\tlet redirectUrl: string | null = null;\n\n\t\tif (options?.viaOidc) {\n\t\t\ttry {\n\t\t\t\t({ redirectUrl } = await ssoApi.oidcLogout(rootStore.restApiContext));\n\t\t\t} catch {\n\t\t\t\t// The OIDC logout endpoint may be unavailable (e.g. the license\n\t\t\t\t// lapsed since login). Fall back to the standard logout so the\n\t\t\t\t// n8n session is terminated in any case.\n\t\t\t\tawait usersApi.logout(rootStore.restApiContext);\n\t\t\t}\n\t\t} else {\n\t\t\tawait usersApi.logout(rootStore.restApiContext);\n\t\t}\n\n\t\tunsetCurrentUser();\n\n\t\tfor (const hook of logoutHooks.value) {\n\t\t\ttry {\n\t\t\t\tawait hook();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error executing logout hook:', error);\n\t\t\t}\n\t\t}\n\n\t\tlocalStorage.removeItem(BROWSER_ID_STORAGE_KEY);\n\n\t\treturn { redirectUrl };\n\t};\n\n\tconst createOwner = async (params: {\n\t\tfirstName: string;\n\t\tlastName: string;\n\t\temail: string;\n\t\tpassword: string;\n\t}) => {\n\t\tconst user = await usersApi.setupOwner(rootStore.restApiContext, params);\n\t\tif (user) {\n\t\t\tawait setCurrentUser(user);\n\t\t\tsettingsStore.stopShowingSetupPage();\n\t\t}\n\t};\n\n\tconst validateSignupToken = async (params: { token: string }) => {\n\t\treturn await usersApi.validateSignupToken(rootStore.restApiContext, params);\n\t};\n\n\tconst acceptInvitation = async (params: {\n\t\ttoken: string;\n\t\tfirstName: string;\n\t\tlastName: string;\n\t\tpassword: string;\n\t}) => {\n\t\tconst user = await invitationsApi.acceptInvitation(rootStore.restApiContext, params);\n\t\tif (user) {\n\t\t\tawait setCurrentUser(user);\n\t\t}\n\t};\n\n\tconst sendForgotPasswordEmail = async (params: { email: string }) => {\n\t\tawait usersApi.sendForgotPasswordEmail(rootStore.restApiContext, params);\n\t};\n\n\tconst validatePasswordToken = async (params: { token: string }) => {\n\t\tawait usersApi.validatePasswordToken(rootStore.restApiContext, params);\n\t};\n\n\tconst changePassword = async (params: { token: string; password: string; mfaCode?: string }) => {\n\t\tawait usersApi.changePassword(rootStore.restApiContext, params);\n\t};\n\n\tconst updateUser = async (params: UserUpdateRequestDto) => {\n\t\tconst user = await usersApi.updateCurrentUser(rootStore.restApiContext, params);\n\t\taddUsers([user]);\n\t\treturn user;\n\t};\n\n\tconst updateUserName = async (params: { firstName: string; lastName: string }) => {\n\t\tif (!currentUser.value) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn await updateUser({\n\t\t\temail: currentUser.value.email as string,\n\t\t\t...params,\n\t\t});\n\t};\n\n\tconst updateUserSettings = async (settings: UserSelfSettingsUpdateRequestDto) => {\n\t\tconst updatedSettings = await usersApi.updateCurrentUserSettings(\n\t\t\trootStore.restApiContext,\n\t\t\tsettings,\n\t\t);\n\t\tif (currentUser.value) {\n\t\t\tcurrentUser.value.settings = updatedSettings;\n\t\t\taddUsers([currentUser.value]);\n\t\t}\n\t};\n\n\tconst updateOtherUserSettings = async (userId: string, settings: SettingsUpdateRequestDto) => {\n\t\tawait usersApi.updateOtherUserSettings(rootStore.restApiContext, userId, settings);\n\t};\n\n\tconst updateCurrentUserPassword = async (params: PasswordUpdateRequestDto) => {\n\t\tawait usersApi.updateCurrentUserPassword(rootStore.restApiContext, params);\n\t};\n\n\tconst deleteUser = async (params: { id: string; transferId?: string }) => {\n\t\tawait usersApi.deleteUser(rootStore.restApiContext, params);\n\t\tdeleteUserById(params.id);\n\t};\n\n\tconst fetchUsers = async ({\n\t\ttake,\n\t\tskip,\n\t\tfilter,\n\t}: { take?: number; skip?: number; filter?: UsersListFilterDto['filter'] } = {}) => {\n\t\tif (!canListUsers.value()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { items } = await usersApi.getUsers(rootStore.restApiContext, {\n\t\t\ttake: take ?? 50,\n\t\t\tskip: skip ?? 0,\n\t\t\tfilter,\n\t\t});\n\t\taddUsers(items);\n\t};\n\n\tconst inviteUsers = async (params: Array<{ email: string; role: AssignableGlobalRole }>) => {\n\t\tconst invitedUsers = await invitationsApi.inviteUsers(rootStore.restApiContext, params);\n\t\taddUsers(\n\t\t\tinvitedUsers.map(({ user }) => ({\n\t\t\t\tisPending: true,\n\t\t\t\t...user,\n\t\t\t})),\n\t\t);\n\t\treturn invitedUsers;\n\t};\n\n\tconst reinviteUser = async ({ email, role }: { email: string; role: AssignableGlobalRole }) => {\n\t\tconst invitationResponse = await invitationsApi.inviteUsers(rootStore.restApiContext, [\n\t\t\t{ email, role },\n\t\t]);\n\t\tif (!invitationResponse[0].user.emailSent) {\n\t\t\tthrow Error(invitationResponse[0].error);\n\t\t}\n\t};\n\n\tconst getUserPasswordResetLink = async (params: { id: string }) => {\n\t\treturn await usersApi.getPasswordResetLink(rootStore.restApiContext, params);\n\t};\n\n\tconst generateInviteLink = async (params: { id: string }) => {\n\t\treturn await usersApi.generateInviteLink(rootStore.restApiContext, params);\n\t};\n\n\tconst submitPersonalizationSurvey = async (results: IPersonalizationLatestVersion) => {\n\t\tawait usersApi.submitPersonalizationSurvey(rootStore.restApiContext, results);\n\t\tsetPersonalizationAnswers(results);\n\t};\n\n\t// Synchronous: after the `ui.store` modal decoupling this only fires the injected\n\t// opener. All call sites invoke it fire-and-forget (`void ...`).\n\tconst showPersonalizationSurvey = () => {\n\t\tconst surveyEnabled = settingsStore.isPersonalizationSurveyEnabled;\n\t\tif (surveyEnabled && currentUser.value && !currentUser.value.personalizationAnswers) {\n\t\t\tmodalOpeners.value.openModal(PERSONALIZATION_MODAL_KEY);\n\t\t}\n\t};\n\n\tconst fetchMfaQR = async () => {\n\t\treturn await mfaApi.getMfaQR(rootStore.restApiContext);\n\t};\n\n\tconst verifyMfaCode = async (data: { mfaCode: string }) => {\n\t\treturn await mfaApi.verifyMfaCode(rootStore.restApiContext, data);\n\t};\n\n\tconst canEnableMFA = async () => {\n\t\treturn await mfaApi.canEnableMFA(rootStore.restApiContext);\n\t};\n\n\tconst enableMfa = async (data: { mfaCode: string }) => {\n\t\tawait mfaApi.enableMfa(rootStore.restApiContext, data);\n\t\tif (currentUser.value) {\n\t\t\tcurrentUser.value.mfaEnabled = true;\n\t\t}\n\t};\n\n\tconst disableMfa = async (data: mfaApi.DisableMfaParams) => {\n\t\tawait mfaApi.disableMfa(rootStore.restApiContext, data);\n\n\t\tif (currentUser.value) {\n\t\t\tcurrentUser.value.mfaEnabled = false;\n\t\t}\n\t};\n\n\tconst updateEnforceMfa = async (enforce: boolean) => {\n\t\tawait mfaApi.updateEnforceMfa(rootStore.restApiContext, enforce);\n\t\tsettingsStore.isMFAEnforced = enforce;\n\t};\n\n\tconst sendConfirmationEmail = async () => {\n\t\tawait cloudApi.sendConfirmationEmail(rootStore.restApiContext);\n\t};\n\n\tconst updateGlobalRole = async ({ id, newRoleName }: UpdateGlobalRolePayload) => {\n\t\tawait usersApi.updateGlobalRole(rootStore.restApiContext, { id, newRoleName });\n\t\tawait fetchUsers({ filter: { ids: [id] } });\n\t};\n\n\tconst submitContactEmail = async (email: string, agree: boolean) => {\n\t\tif (currentUser.value) {\n\t\t\treturn await onboardingApi.submitEmailOnSignup(\n\t\t\t\trootStore.instanceId,\n\t\t\t\tcurrentUser.value,\n\t\t\t\temail ?? currentUser.value.email,\n\t\t\t\tagree,\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t};\n\n\tconst usersList = useAsyncState(\n\t\tasync (filter?: UsersListFilterDto) =>\n\t\t\tawait usersApi.getUsers(rootStore.restApiContext, filter),\n\t\t{\n\t\t\tcount: 0,\n\t\t\titems: [],\n\t\t},\n\t\t{ immediate: false, resetOnExecute: false },\n\t);\n\n\tconst setUserQuota = (quota?: number) => {\n\t\tif (typeof quota !== 'undefined') {\n\t\t\tuserQuota.value = quota;\n\t\t}\n\t};\n\n\treturn {\n\t\tinitialized,\n\t\tcurrentUserId,\n\t\tusersById,\n\t\tallUsers,\n\t\tcurrentUser,\n\t\tuserActivated,\n\t\tisDefaultUser,\n\t\tisInstanceOwner,\n\t\tisAdmin,\n\t\tisAdminOrOwner,\n\t\tmfaEnabled,\n\t\tglobalRoleName,\n\t\tuserClaimedAiCredits,\n\t\tisEasyAIWorkflowOnboardingDone,\n\t\tcanUserUpdateVersion,\n\t\tusersLimitNotReached,\n\t\taddUsers,\n\t\tloginWithCookie,\n\t\tinitialize,\n\t\tsetPersonalizationAnswers,\n\t\tloginWithCreds,\n\t\tlogout,\n\t\tregisterLoginHook,\n\t\tregisterLogoutHook,\n\t\tregisterModalOpeners,\n\t\tsetPermissionsResolvers,\n\t\tcreateOwner,\n\t\tvalidateSignupToken,\n\t\tacceptInvitation,\n\t\tsendForgotPasswordEmail,\n\t\tvalidatePasswordToken,\n\t\tchangePassword,\n\t\tupdateUser,\n\t\tupdateUserName,\n\t\tupdateUserSettings,\n\t\tupdateOtherUserSettings,\n\t\tupdateCurrentUserPassword,\n\t\tdeleteUser,\n\t\tfetchUsers,\n\t\tinviteUsers,\n\t\treinviteUser,\n\t\tgetUserPasswordResetLink,\n\t\tgenerateInviteLink,\n\t\tsubmitPersonalizationSurvey,\n\t\tshowPersonalizationSurvey,\n\t\tfetchMfaQR,\n\t\tverifyMfaCode,\n\t\tenableMfa,\n\t\tdisableMfa,\n\t\tupdateEnforceMfa,\n\t\tcanEnableMFA,\n\t\tsendConfirmationEmail,\n\t\tupdateGlobalRole,\n\t\tsetEasyAIWorkflowOnboardingDone,\n\t\tisCalloutDismissed,\n\t\tsetCalloutDismissed,\n\t\tsubmitContactEmail,\n\t\tsetUserQuota,\n\t\tusersList,\n\t};\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmCA,MAAM,kBAAkB,SAA+B,CAAC,CAAC,MAAM;AAC/D,MAAM,oBAAoB,SAA+B,MAAM,SAASA,qBAAK;AAC7E,MAAM,kBAAkB,SACvB,iBAAiB,KAAK,IAAI,eAAe,KAAK;AAC/C,MAAM,YAAY,SAA+B,MAAM,SAASA,qBAAK;AAKrE,MAAa,uCAA4BC,yBAAO,aAAa;CAC5D,MAAM,2BAAkB,MAAM;CAC9B,MAAM,6BAAmC,KAAK;CAC9C,MAAM,yBAAuC,EAAE,CAAC;CAChD,MAAM,yBAAwB,GAAG;CAEjC,MAAM,0BAA8B,EAAE,CAAC;CACvC,MAAM,2BAAgC,EAAE,CAAC;CAMzC,MAAM,0BAA0B,WAAmB;AAClD,SAAgB,IAAI,IACnB,SAAQ,KACP,iBAAiB,OAAO,uGACxB;;CAGH,MAAM,4BAAiC;EACtC,YAAY,SAAS,uBAAuB,aAAa,OAAO,KAAK,CAAC,GAAG;EACzE,oBAAoB,YACnB,uBAAuB,qBAAqB,OAAO,QAAQ,KAAK,CAAC,GAAG;EACrE,CAAC;CACF,MAAM,wBAAwB,YAA0B;AACvD,eAAa,QAAQ;;CAQtB,MAAM,kCAAwC,MAAM;CACpD,MAAM,2BAA2B,cAA4C;AAC5E,eAAa,QAAQ,UAAU;;CAKhC,MAAM,YAAYC,mCAAc;CAChC,MAAM,gBAAgBC,yCAAkB;CAIxC,MAAM,mCAA0B,OAAO,OAAO,UAAU,MAAM,CAAC;CAE/D,MAAM,sCACL,cAAc,QAAQ,UAAU,MAAM,cAAc,SAAS,KAC7D;CAED,MAAM,wCAA+B,QAAQ,YAAY,OAAO,UAAU,cAAc,CAAC;CAEzF,MAAM,wCAA+B,eAAe,YAAY,MAAM,CAAC;CAEvE,MAAM,0CAAiC,iBAAiB,YAAY,MAAM,CAAC;CAE3E,MAAM,kCAAyB,SAAS,YAAY,MAAM,CAAC;CAE3D,MAAM,yCAAgC,gBAAgB,SAAS,QAAQ,MAAM;CAE7E,MAAM,qCAA4B,YAAY,OAAO,cAAc,MAAM;CAEzE,MAAM,yCAAgC,YAAY,OAAO,QAAQ,UAAU;CAE3E,MAAM,+CAAsC,YAAY,OAAO,UAAU,qBAAqB;CAE9F,MAAM,yDACL,QAAQ,YAAY,OAAO,UAAU,wBAAwB,CAC7D;CAED,MAAM,+CAAsC;AAC3C,SAAO,gBAAgB;GACtB;CAEF,MAAM,wCAAwC;AAC7C,MAAI,YAAY,OAAO,SACtB,aAAY,MAAM,SAAS,0BAA0B;;CAIvD,MAAM,sBAAsB,YAC3B,QAAQ,YAAY,OAAO,UAAU,oBAAoB,SAAS;CAEnE,MAAM,uBAAuB,YAAoB;AAChD,MAAI,YAAY,OAAO,UAAU;AAChC,eAAY,MAAM,SAAS,sBAAsB,EAAE;AAEnD,eAAY,MAAM,SAAS,kBAAkB,WAAW;;;CAI1D,MAAM,+CACU,UAAU,UAAU,MAAM,UAAU,QAAQ,SAAS,MAAM,OAC1E;CAID,MAAM,YAAY,aAAqB;AACtC,WAAS,SAAS,iBAAiB;GAElC,MAAM,cAAc;IACnB,GAFgB,UAAU,MAAM,aAAa,OAAO,EAAE;IAGtD,GAAG;IACH;GACD,MAAMC,OAAc;IACnB,GAAG;IACH,UAAU,aAAa,YACpB,GAAG,YAAY,UAAU,GAAG,YAAY,YAAY,OACpD;IACH,eAAe,eAAe,YAAY;IAC1C,eAAe,eAAe,YAAY;IAC1C;AAED,aAAU,QAAQ;IACjB,GAAG,UAAU;KACZ,KAAK,KAAK;IACX;IACA;;CAGH,MAAM,iBAAiB,OAAO,SAA8B;AAC3D,WAAS,CAAC,KAAK,CAAC;AAChB,gBAAc,QAAQ,KAAK;AAE3B,OAAK,MAAM,QAAQ,WAAW,MAC7B,KAAI;AACH,SAAM,KAAK,KAAK;WACR,OAAO;AACf,WAAQ,MAAM,+BAA+B,MAAM;;;CAKtD,MAAM,kBAAkB,YAAY;EACnC,MAAM,OAAO,MAAMC,gCAAS,iBAAiB,UAAU,eAAe;AACtE,MAAI,CAAC,KACJ;AAGD,QAAM,eAAe,KAAK;;CAG3B,MAAM,aAAa,YAAY;AAC9B,MAAI,YAAY,MACf;AAGD,MAAI;AACH,SAAM,iBAAiB;AACvB,eAAY,QAAQ;UACb;;CAMT,MAAM,yBAAyB;AAC9B,gBAAc,QAAQ;;CAGvB,MAAM,kBAAkB,WAAmB;EAC1C,MAAM,GAAG,SAAS,GAAG,GAAG,SAAS,UAAU;AAC3C,YAAU,QAAQ;;CAGnB,MAAM,6BAA6B,YAA2C;AAC7E,MAAI,CAAC,YAAY,MAChB;AAGD,YAAU,QAAQ;GACjB,GAAG,UAAU;IACZ,YAAY,MAAM,KAAK;IACvB,GAAG,YAAY;IACf,wBAAwB;IACxB;GACD;;CAGF,MAAM,iBAAiB,OAAO,WAA4B;EACzD,MAAM,OAAO,MAAMA,gCAAS,MAAM,UAAU,gBAAgB,OAAO;AACnE,MAAI,CAAC,KACJ;AAGD,QAAM,eAAe,KAAK;;CAG3B,MAAM,qBAAqB,SAAoB;AAC9C,aAAW,MAAM,KAAK,KAAK;;CAG5B,MAAM,sBAAsB,SAAqB;AAChD,cAAY,MAAM,KAAK,KAAK;;CAG7B,MAAM,SAAS,OAAO,YAAoC;EACzD,IAAIC,cAA6B;AAEjC,MAAI,SAAS,QACZ,KAAI;AACH,IAAC,CAAE,eAAgB,MAAMC,8BAAO,WAAW,UAAU,eAAe;UAC7D;AAIP,SAAMF,gCAAS,OAAO,UAAU,eAAe;;MAGhD,OAAMA,gCAAS,OAAO,UAAU,eAAe;AAGhD,oBAAkB;AAElB,OAAK,MAAM,QAAQ,YAAY,MAC9B,KAAI;AACH,SAAM,MAAM;WACJ,OAAO;AACf,WAAQ,MAAM,gCAAgC,MAAM;;AAItD,eAAa,WAAWG,uCAAuB;AAE/C,SAAO,EAAE,aAAa;;CAGvB,MAAM,cAAc,OAAO,WAKrB;EACL,MAAM,OAAO,MAAMH,gCAAS,WAAW,UAAU,gBAAgB,OAAO;AACxE,MAAI,MAAM;AACT,SAAM,eAAe,KAAK;AAC1B,iBAAc,sBAAsB;;;CAItC,MAAM,sBAAsB,OAAO,WAA8B;AAChE,SAAO,MAAMA,gCAAS,oBAAoB,UAAU,gBAAgB,OAAO;;CAG5E,MAAMI,qBAAmB,OAAO,WAK1B;EACL,MAAM,OAAO,8CAAsC,UAAU,gBAAgB,OAAO;AACpF,MAAI,KACH,OAAM,eAAe,KAAK;;CAI5B,MAAM,0BAA0B,OAAO,WAA8B;AACpE,QAAMJ,gCAAS,wBAAwB,UAAU,gBAAgB,OAAO;;CAGzE,MAAM,wBAAwB,OAAO,WAA8B;AAClE,QAAMA,gCAAS,sBAAsB,UAAU,gBAAgB,OAAO;;CAGvE,MAAM,iBAAiB,OAAO,WAAkE;AAC/F,QAAMA,gCAAS,eAAe,UAAU,gBAAgB,OAAO;;CAGhE,MAAM,aAAa,OAAO,WAAiC;EAC1D,MAAM,OAAO,MAAMA,gCAAS,kBAAkB,UAAU,gBAAgB,OAAO;AAC/E,WAAS,CAAC,KAAK,CAAC;AAChB,SAAO;;CAGR,MAAM,iBAAiB,OAAO,WAAoD;AACjF,MAAI,CAAC,YAAY,MAChB;AAGD,SAAO,MAAM,WAAW;GACvB,OAAO,YAAY,MAAM;GACzB,GAAG;GACH,CAAC;;CAGH,MAAM,qBAAqB,OAAO,aAA+C;EAChF,MAAM,kBAAkB,MAAMA,gCAAS,0BACtC,UAAU,gBACV,SACA;AACD,MAAI,YAAY,OAAO;AACtB,eAAY,MAAM,WAAW;AAC7B,YAAS,CAAC,YAAY,MAAM,CAAC;;;CAI/B,MAAM,0BAA0B,OAAO,QAAgB,aAAuC;AAC7F,QAAMA,gCAAS,wBAAwB,UAAU,gBAAgB,QAAQ,SAAS;;CAGnF,MAAM,4BAA4B,OAAO,WAAqC;AAC7E,QAAMA,gCAAS,0BAA0B,UAAU,gBAAgB,OAAO;;CAG3E,MAAM,aAAa,OAAO,WAAgD;AACzE,QAAMA,gCAAS,WAAW,UAAU,gBAAgB,OAAO;AAC3D,iBAAe,OAAO,GAAG;;CAG1B,MAAM,aAAa,OAAO,EACzB,MACA,MACA,WAC4E,EAAE,KAAK;AACnF,MAAI,CAAC,aAAa,OAAO,CACxB;EAGD,MAAM,EAAE,UAAU,MAAMA,gCAAS,SAAS,UAAU,gBAAgB;GACnE,MAAM,QAAQ;GACd,MAAM,QAAQ;GACd;GACA,CAAC;AACF,WAAS,MAAM;;CAGhB,MAAMK,gBAAc,OAAO,WAAiE;EAC3F,MAAM,eAAe,yCAAiC,UAAU,gBAAgB,OAAO;AACvF,WACC,aAAa,KAAK,EAAE,YAAY;GAC/B,WAAW;GACX,GAAG;GACH,EAAE,CACH;AACD,SAAO;;CAGR,MAAM,eAAe,OAAO,EAAE,OAAO,WAA0D;EAC9F,MAAM,qBAAqB,yCAAiC,UAAU,gBAAgB,CACrF;GAAE;GAAO;GAAM,CACf,CAAC;AACF,MAAI,CAAC,mBAAmB,GAAG,KAAK,UAC/B,OAAM,MAAM,mBAAmB,GAAG,MAAM;;CAI1C,MAAM,2BAA2B,OAAO,WAA2B;AAClE,SAAO,MAAML,gCAAS,qBAAqB,UAAU,gBAAgB,OAAO;;CAG7E,MAAM,qBAAqB,OAAO,WAA2B;AAC5D,SAAO,MAAMA,gCAAS,mBAAmB,UAAU,gBAAgB,OAAO;;CAG3E,MAAM,8BAA8B,OAAO,YAA2C;AACrF,QAAMA,gCAAS,4BAA4B,UAAU,gBAAgB,QAAQ;AAC7E,4BAA0B,QAAQ;;CAKnC,MAAM,kCAAkC;AAEvC,MADsB,cAAc,kCACf,YAAY,SAAS,CAAC,YAAY,MAAM,uBAC5D,cAAa,MAAM,UAAUM,yDAA0B;;CAIzD,MAAM,aAAa,YAAY;AAC9B,SAAO,MAAMC,8BAAO,SAAS,UAAU,eAAe;;CAGvD,MAAM,gBAAgB,OAAO,SAA8B;AAC1D,SAAO,MAAMA,8BAAO,cAAc,UAAU,gBAAgB,KAAK;;CAGlE,MAAM,eAAe,YAAY;AAChC,SAAO,MAAMA,8BAAO,aAAa,UAAU,eAAe;;CAG3D,MAAM,YAAY,OAAO,SAA8B;AACtD,QAAMA,8BAAO,UAAU,UAAU,gBAAgB,KAAK;AACtD,MAAI,YAAY,MACf,aAAY,MAAM,aAAa;;CAIjC,MAAM,aAAa,OAAO,SAAkC;AAC3D,QAAMA,8BAAO,WAAW,UAAU,gBAAgB,KAAK;AAEvD,MAAI,YAAY,MACf,aAAY,MAAM,aAAa;;CAIjC,MAAM,mBAAmB,OAAO,YAAqB;AACpD,QAAMA,8BAAO,iBAAiB,UAAU,gBAAgB,QAAQ;AAChE,gBAAc,gBAAgB;;CAG/B,MAAM,wBAAwB,YAAY;AACzC,QAAMC,qCAAS,sBAAsB,UAAU,eAAe;;CAG/D,MAAM,mBAAmB,OAAO,EAAE,IAAI,kBAA2C;AAChF,QAAMR,gCAAS,iBAAiB,UAAU,gBAAgB;GAAE;GAAI;GAAa,CAAC;AAC9E,QAAM,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;;CAG5C,MAAM,qBAAqB,OAAO,OAAe,UAAmB;AACnE,MAAI,YAAY,MACf,QAAO,iDACN,UAAU,YACV,YAAY,OACZ,SAAS,YAAY,MAAM,OAC3B,MACA;AAEF,SAAO;;CAGR,MAAM,6CACL,OAAO,WACN,MAAMA,gCAAS,SAAS,UAAU,gBAAgB,OAAO,EAC1D;EACC,OAAO;EACP,OAAO,EAAE;EACT,EACD;EAAE,WAAW;EAAO,gBAAgB;EAAO,CAC3C;CAED,MAAM,gBAAgB,UAAmB;AACxC,MAAI,OAAO,UAAU,YACpB,WAAU,QAAQ;;AAIpB,QAAO;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA"}
|