@makolabs/ripple 1.2.23 → 1.6.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.
|
@@ -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];
|
|
@@ -384,11 +386,12 @@ export const updateUserPermissions = command('unchecked', async (options) => {
|
|
|
384
386
|
});
|
|
385
387
|
export const generateApiKey = command('unchecked', async (options) => {
|
|
386
388
|
try {
|
|
387
|
-
|
|
389
|
+
let filteredPermissions = PERMISSION_PREFIX
|
|
388
390
|
? options.permissions.filter((scope) => scope.startsWith(PERMISSION_PREFIX))
|
|
389
391
|
: options.permissions;
|
|
390
|
-
if (
|
|
391
|
-
|
|
392
|
+
// Default to readonly permission if none provided (first-time key generation)
|
|
393
|
+
if (filteredPermissions.length === 0 && PERMISSION_PREFIX) {
|
|
394
|
+
filteredPermissions = [`${PERMISSION_PREFIX}readonly`];
|
|
392
395
|
}
|
|
393
396
|
let oldKeyId = null;
|
|
394
397
|
if (options.revokeOld) {
|
|
@@ -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>
|