From 691c9442ffafd20677f0799f43119c6916c2e952 Mon Sep 17 00:00:00 2001 From: Mariano Goldman Date: Fri, 3 Mar 2023 16:28:04 -0300 Subject: [PATCH] feat: show diff between old acl and new one in the linker-dapp (#935) --- package-lock.json | 14 +++++++------- package.json | 2 +- src/commands/world-acl.ts | 29 +++++++++++++++++------------ src/lib/WorldsContentServer.ts | 3 +++ 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6fc767dd..ee04732f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@dcl/crypto": "^3.0.1", "@dcl/ecs-scene-utils": "^1.7.5", - "@dcl/linker-dapp": "^0.7.0", + "@dcl/linker-dapp": "^0.8.0", "@dcl/mini-comms": "1.0.0", "@dcl/protocol": "https://sdk-team-cdn.decentraland.org/@dcl/protocol/branch//dcl-protocol-1.0.0-3130782694.commit-94713ab.tgz", "@dcl/schemas": "^5.14.0", @@ -167,9 +167,9 @@ "peer": true }, "node_modules/@dcl/linker-dapp": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@dcl/linker-dapp/-/linker-dapp-0.7.0.tgz", - "integrity": "sha512-5xbRsG9b69bywEfnFSKkxc79QmEcCWzn9GWo0M2PRrTdmkSzU3exEki5sjzgdXyPlt48rvF4wdEEQFGcx+lM7A==" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@dcl/linker-dapp/-/linker-dapp-0.8.0.tgz", + "integrity": "sha512-QdlEAV7Nd2fsqpSg/cHuHce61/YpFliDbh1kIzuPJVAszcx/UkatvbXVieaWutKYqg/kPIgek/uwMejPPPpjGA==" }, "node_modules/@dcl/mini-comms": { "version": "1.0.0", @@ -7714,9 +7714,9 @@ "peer": true }, "@dcl/linker-dapp": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@dcl/linker-dapp/-/linker-dapp-0.7.0.tgz", - "integrity": "sha512-5xbRsG9b69bywEfnFSKkxc79QmEcCWzn9GWo0M2PRrTdmkSzU3exEki5sjzgdXyPlt48rvF4wdEEQFGcx+lM7A==" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@dcl/linker-dapp/-/linker-dapp-0.8.0.tgz", + "integrity": "sha512-QdlEAV7Nd2fsqpSg/cHuHce61/YpFliDbh1kIzuPJVAszcx/UkatvbXVieaWutKYqg/kPIgek/uwMejPPPpjGA==" }, "@dcl/mini-comms": { "version": "1.0.0", diff --git a/package.json b/package.json index 7279fa03..66ffea46 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "dependencies": { "@dcl/crypto": "^3.0.1", "@dcl/ecs-scene-utils": "^1.7.5", - "@dcl/linker-dapp": "^0.7.0", + "@dcl/linker-dapp": "^0.8.0", "@dcl/mini-comms": "1.0.0", "@dcl/protocol": "https://sdk-team-cdn.decentraland.org/@dcl/protocol/branch//dcl-protocol-1.0.0-3130782694.commit-94713ab.tgz", "@dcl/schemas": "^5.14.0", diff --git a/src/commands/world-acl.ts b/src/commands/world-acl.ts index 32b98957..b9b58a99 100644 --- a/src/commands/world-acl.ts +++ b/src/commands/world-acl.ts @@ -193,23 +193,23 @@ async function grantAcl(args: arg.Result) { const targetContent = args['--target-content']! try { - const data = await fetchAcl(worldName, targetContent) - const newAllowed = [...data.allowed] + const currentData = await fetchAcl(worldName, targetContent) + const newAllowed = [...currentData.allowed] addresses.forEach((address: EthAddress) => { if (!newAllowed.includes(address)) { newAllowed.push(address) } }) - const newAcl = { ...data, allowed: newAllowed } - if (newAcl.allowed.length === data.allowed.length) { + const newAcl = { ...currentData, allowed: newAllowed } + if (newAcl.allowed.length === currentData.allowed.length) { console.log( 'No changes made. All the addresses requested to be granted access already have permission.' ) return } - await signAndStoreAcl(args, newAcl) + await signAndStoreAcl(args, newAcl, currentData.allowed) } catch (error) { process.exit(1) } @@ -221,20 +221,20 @@ async function revokeAcl(args: arg.Result) { const targetContent = args['--target-content']! try { - const data = await fetchAcl(worldName, targetContent) - const newAllowed = [...data.allowed].filter( + const currentData = await fetchAcl(worldName, targetContent) + const newAllowed = [...currentData.allowed].filter( (address: EthAddress) => !addresses.includes(address) ) - const newAcl = { ...data, allowed: newAllowed } - if (newAcl.allowed.length === data.allowed.length) { + const newAcl = { ...currentData, allowed: newAllowed } + if (newAcl.allowed.length === currentData.allowed.length) { console.log( 'No changes made. None of the addresses requested to be revoked accessed had permission.' ) return } - await signAndStoreAcl(args, newAcl) + await signAndStoreAcl(args, newAcl, currentData.allowed) } catch (_) { process.exit(1) } @@ -242,9 +242,13 @@ async function revokeAcl(args: arg.Result) { async function signAndStoreAcl( args: arg.Result, - acl: { resource: string; allowed: EthAddress[] } + acl: { resource: string; allowed: EthAddress[] }, + oldAllowed: EthAddress[] ) { - const payload = JSON.stringify(acl) + const payload = JSON.stringify({ + ...acl, + timestamp: new Date().toISOString() + }) const port = args['--port'] const parsedPort = port ? parseInt(port, 10) : void 0 @@ -254,6 +258,7 @@ async function signAndStoreAcl( const worldsContentServer = new WorldsContentServer({ worldName: acl.resource, allowed: acl.allowed, + oldAllowed: oldAllowed, isHttps: !!args['--https'], targetContent, linkerPort diff --git a/src/lib/WorldsContentServer.ts b/src/lib/WorldsContentServer.ts index 50a81e8f..56fca543 100644 --- a/src/lib/WorldsContentServer.ts +++ b/src/lib/WorldsContentServer.ts @@ -15,6 +15,7 @@ import { EthAddress } from '@dcl/schemas' export type WorldsContentServerArguments = { worldName: string allowed: EthAddress[] + oldAllowed: EthAddress[] targetContent: string linkerPort?: number isHttps?: boolean @@ -41,7 +42,9 @@ export class WorldsContentServer extends EventEmitter { const linker = new WorldsContentServerLinkerAPI({ worldName: this.options.worldName, allowed: this.options.allowed, + oldAllowed: this.options.oldAllowed, targetContent: this.options.targetContent, + expiration: 120, payload }) events(linker, '*', this.pipeEvents.bind(this))