From 4135404281ed4628b5502a956b65c50db3c6960f Mon Sep 17 00:00:00 2001 From: Zach Ferland Date: Tue, 7 May 2019 10:21:00 -0400 Subject: [PATCH] fix: permission based on id and new identity providers --- package.json | 2 +- src/ipfs-access-controller.js | 8 ++++---- src/orbitdb-access-controller.js | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 8d5428f..906c759 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "ipfs-repo": "^0.26.1", "ipfsd-ctl": "^0.40.3", "mocha": "^5.2.0", - "orbit-db": "next", + "orbit-db": "0.20.0", "orbit-db-identity-provider": "~0.1.0", "orbit-db-keystore": "~0.2.0", "standard": "^12.0.1", diff --git a/src/ipfs-access-controller.js b/src/ipfs-access-controller.js index 8140625..d6308b5 100644 --- a/src/ipfs-access-controller.js +++ b/src/ipfs-access-controller.js @@ -20,14 +20,14 @@ class IPFSAccessController extends AccessController { async canAppend (entry, identityProvider) { // Allow if access list contain the writer's publicKey or is '*' - const publicKey = entry.v === 0 ? entry.key : entry.identity.publicKey - if (this.write.includes(publicKey) || - this.write.includes('*')) { - return true + const publicKey = entry.v === 0 ? entry.key : entry.identity.id + if (this.write.includes(publicKey) || this.write.includes('*')) { + return entry.v === 1 ? await identityProvider.verifyIdentity(entry.identity) : true } return false } + async load (address) { // Transform '/ipfs/QmPFtHi3cmfZerxtH9ySLdzpg1yFhocYDZgEZywdUXHxFU' // to 'QmPFtHi3cmfZerxtH9ySLdzpg1yFhocYDZgEZywdUXHxFU' diff --git a/src/orbitdb-access-controller.js b/src/orbitdb-access-controller.js index f0f70de..a0b8cd6 100644 --- a/src/orbitdb-access-controller.js +++ b/src/orbitdb-access-controller.js @@ -27,7 +27,7 @@ class OrbitDBAccessController extends AccessController { // Write keys and admins keys are allowed const access = new Set([...this.get('write'), ...this.get('admin')]) // If the ACL contains the writer's public key or it contains '*' - if (access.has(entry.identity.publicKey) || access.has('*')) { + if (access.has(entry.identity.id) || access.has('*')) { const verifiedIdentity = await identityProvider.verifyIdentity(entry.identity) // Allow access if identity verifies return verifiedIdentity @@ -76,7 +76,7 @@ class OrbitDBAccessController extends AccessController { // use ipfs controller as a immutable "root controller" accessController: { type: 'ipfs', - write: this._options.admin || [this._orbitdb.identity.publicKey] + write: this._options.admin || [this._orbitdb.identity.id] }, sync: true })