@makolabs/ripple 1.5.0 → 1.6.1
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.
|
@@ -273,7 +273,9 @@ async function fetchUserPermissions(userId) {
|
|
|
273
273
|
userData.data.data = userData.data.data.filter((key) => key.status === 'active');
|
|
274
274
|
}
|
|
275
275
|
if (userData?.data?.data && Array.isArray(userData.data.data)) {
|
|
276
|
-
|
|
276
|
+
// Deduplicate permissions by using a Set
|
|
277
|
+
const allPermissions = userData.data.data.flatMap((key) => key.scopes || []);
|
|
278
|
+
return Array.from(new Set(allPermissions));
|
|
277
279
|
}
|
|
278
280
|
else if (userData?.scopes) {
|
|
279
281
|
return Array.isArray(userData.scopes) ? userData.scopes : [userData.scopes];
|
|
@@ -343,39 +345,21 @@ async function refreshTokenIfSelfUpdate(userId) {
|
|
|
343
345
|
export const updateUserPermissions = command('unchecked', async (options) => {
|
|
344
346
|
const { userId, permissions } = options;
|
|
345
347
|
try {
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
await
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
const allKeysData = await makeAdminRequest('/admin/keys');
|
|
358
|
-
const userKey = allKeysData.data.data.find((key) => key.sub === userId && key.client_id === CLIENT_ID && key.status === 'active');
|
|
359
|
-
if (userKey) {
|
|
360
|
-
adminKeyId = userKey.id;
|
|
361
|
-
await makeAdminRequest(`/admin/keys/${adminKeyId}`, {
|
|
362
|
-
method: 'PUT',
|
|
363
|
-
body: JSON.stringify({ scopes: permissions })
|
|
364
|
-
});
|
|
365
|
-
await refreshTokenIfSelfUpdate(userId);
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
else {
|
|
369
|
-
await createUserPermissions(userId, permissions);
|
|
370
|
-
await refreshTokenIfSelfUpdate(userId);
|
|
371
|
-
return;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
catch (searchError) {
|
|
375
|
-
console.error('[updateUserPermissions] Error during permission update:', searchError);
|
|
376
|
-
throw new Error('Failed to update permissions');
|
|
377
|
-
}
|
|
348
|
+
// Fetch all keys to find user's active keys
|
|
349
|
+
const allKeysData = await makeAdminRequest('/admin/keys');
|
|
350
|
+
// Find ALL active keys for this user (not just one)
|
|
351
|
+
const userKeys = allKeysData.data.data.filter((key) => key.sub === userId && key.client_id === CLIENT_ID && key.status === 'active');
|
|
352
|
+
// Delete all old active keys to ensure clean state
|
|
353
|
+
if (userKeys.length > 0) {
|
|
354
|
+
await Promise.all(userKeys.map((key) => makeAdminRequest(`/admin/keys/${key.id}`, {
|
|
355
|
+
method: 'DELETE'
|
|
356
|
+
}).catch((err) => {
|
|
357
|
+
console.warn(`[updateUserPermissions] Failed to delete key ${key.id}:`, err);
|
|
358
|
+
})));
|
|
378
359
|
}
|
|
360
|
+
// Create one new key with updated permissions
|
|
361
|
+
await createUserPermissions(userId, permissions);
|
|
362
|
+
await refreshTokenIfSelfUpdate(userId);
|
|
379
363
|
}
|
|
380
364
|
catch (error) {
|
|
381
365
|
console.error('[updateUserPermissions] Error:', error);
|
|
@@ -409,7 +409,7 @@
|
|
|
409
409
|
Select User Role {#if mode === 'create'}<span class="text-danger-500">*</span>{/if}
|
|
410
410
|
</span>
|
|
411
411
|
<div class="grid grid-cols-1 gap-2">
|
|
412
|
-
{#each roles as role (role.value)}
|
|
412
|
+
{#each roles as role, index (`${role.value}-${index}`)}
|
|
413
413
|
{@const isSelected = formData.role === role.value}
|
|
414
414
|
{@const isAdministrator = role.value.toLowerCase() === 'admin'}
|
|
415
415
|
{@const isPreselected = initialRole === role.value && isSelected}
|
|
@@ -453,7 +453,7 @@
|
|
|
453
453
|
</h4>
|
|
454
454
|
<div class="bg-default-50 max-h-60 overflow-y-auto rounded-lg p-3">
|
|
455
455
|
<div class="space-y-2">
|
|
456
|
-
{#each formData.permissions as permission (permission)}
|
|
456
|
+
{#each formData.permissions as permission, index (`${permission}-${index}`)}
|
|
457
457
|
<div class="flex items-start gap-2 text-xs">
|
|
458
458
|
<div class="mt-1 h-1 w-1 shrink-0 rounded-full bg-blue-500"></div>
|
|
459
459
|
<div class="text-default-700 font-mono">{permission}</div>
|
|
@@ -248,7 +248,7 @@
|
|
|
248
248
|
</h4>
|
|
249
249
|
<div class="bg-default-50 max-h-60 overflow-y-auto rounded-lg p-3">
|
|
250
250
|
<div class="space-y-2">
|
|
251
|
-
{#each user.permissions as permission (permission)}
|
|
251
|
+
{#each user.permissions as permission, index (`${permission}-${index}`)}
|
|
252
252
|
<div class="flex items-start gap-2 text-xs">
|
|
253
253
|
<div class="mt-1 h-1 w-1 shrink-0 rounded-full bg-blue-500"></div>
|
|
254
254
|
<div class="text-default-700 font-mono">{permission}</div>
|