@makolabs/ripple 1.6.2 → 1.6.3
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.
|
@@ -275,19 +275,22 @@ async function fetchUserPermissions(userId) {
|
|
|
275
275
|
if (userData?.data?.data && Array.isArray(userData.data.data)) {
|
|
276
276
|
// Deduplicate permissions by using a Set
|
|
277
277
|
const allPermissions = userData.data.data.flatMap((key) => key.scopes || []);
|
|
278
|
-
|
|
278
|
+
const dedupedPermissions = Array.from(new Set(allPermissions));
|
|
279
|
+
return dedupedPermissions;
|
|
279
280
|
}
|
|
280
281
|
else if (userData?.scopes) {
|
|
281
|
-
|
|
282
|
+
const permissions = Array.isArray(userData.scopes) ? userData.scopes : [userData.scopes];
|
|
283
|
+
return permissions;
|
|
282
284
|
}
|
|
283
285
|
return [];
|
|
284
286
|
}
|
|
285
|
-
catch {
|
|
287
|
+
catch (error) {
|
|
286
288
|
try {
|
|
287
289
|
const allKeysData = await makeAdminRequest('/admin/keys');
|
|
288
290
|
const userKey = allKeysData.data.data.find((key) => key.sub === userId && key.client_id === CLIENT_ID && key.status === 'active');
|
|
289
291
|
if (userKey) {
|
|
290
|
-
|
|
292
|
+
const permissions = Array.isArray(userKey.scopes) ? userKey.scopes : [userKey.scopes];
|
|
293
|
+
return permissions;
|
|
291
294
|
}
|
|
292
295
|
return [];
|
|
293
296
|
}
|
|
@@ -345,10 +348,10 @@ async function refreshTokenIfSelfUpdate(userId) {
|
|
|
345
348
|
export const updateUserPermissions = command('unchecked', async (options) => {
|
|
346
349
|
const { userId, permissions } = options;
|
|
347
350
|
try {
|
|
348
|
-
// Fetch all keys
|
|
349
|
-
const allKeysData = await makeAdminRequest(
|
|
351
|
+
// Fetch all keys for this specific user (not paginated, gets all keys)
|
|
352
|
+
const allKeysData = await makeAdminRequest(`/admin/keys?client_id=${CLIENT_ID}&sub=${userId}`);
|
|
350
353
|
// Find ALL active keys for this user (not just one)
|
|
351
|
-
const userKeys = allKeysData
|
|
354
|
+
const userKeys = (allKeysData?.data?.data || []).filter((key) => key.status === 'active');
|
|
352
355
|
// Delete all old active keys to ensure clean state
|
|
353
356
|
if (userKeys.length > 0) {
|
|
354
357
|
await Promise.all(userKeys.map((key) => makeAdminRequest(`/admin/keys/${key.id}`, {
|
|
@@ -164,10 +164,11 @@
|
|
|
164
164
|
role: formData.role,
|
|
165
165
|
permissions: formData.permissions
|
|
166
166
|
};
|
|
167
|
+
|
|
167
168
|
await onSave(userData, mode);
|
|
168
169
|
handleClose();
|
|
169
170
|
} catch (error) {
|
|
170
|
-
console.error('Error saving user:', error);
|
|
171
|
+
console.error('[UserModal] Error saving user:', error);
|
|
171
172
|
formErrors.submit = error instanceof Error ? error.message : 'Failed to save user';
|
|
172
173
|
} finally {
|
|
173
174
|
saving = false;
|
|
@@ -176,7 +177,8 @@
|
|
|
176
177
|
|
|
177
178
|
function handleRoleChange(roleValue: string) {
|
|
178
179
|
const role = roles?.find((r: Role) => r.value === roleValue);
|
|
179
|
-
|
|
180
|
+
|
|
181
|
+
// Reassign entire formData object to ensure Svelte 5 reactivity
|
|
180
182
|
formData = {
|
|
181
183
|
...formData,
|
|
182
184
|
role: roleValue,
|