From 71c1e455814cf0fb801ecf86ba6db4769c78c9d7 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Tue, 13 Apr 2021 11:12:10 -0700 Subject: [PATCH 1/4] fix(ipfs-coord): Updating to v3.0.3 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index edaba18..bb6886f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8677,9 +8677,9 @@ } }, "ipfs-coord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ipfs-coord/-/ipfs-coord-3.0.1.tgz", - "integrity": "sha512-p5WqeJIO7CjnaxfbsWcjYZVHi6X5WhKQ9B4u5ZpzVnd0lYZWyxZmFBGDFylUp72q0mXLYtSPGIG29F3Nbb56CA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ipfs-coord/-/ipfs-coord-3.0.3.tgz", + "integrity": "sha512-Ei2SQudMHeqlMWfnjW6QDU+6Tksv9QikEK7Rnw1FvNQ+7/53dfuOOrr+OOfG/MQnz46uDkFk1LK3Kqk/iD4uJg==", "requires": { "bch-encrypt-lib": "^2.0.0", "orbit-db": "^0.26.1" diff --git a/package.json b/package.json index bdcba56..2b0909d 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "bcryptjs": "^2.4.3", "glob": "^7.1.6", "ipfs": "^0.54.4", - "ipfs-coord": "^3.0.1", + "ipfs-coord": "^3.0.3", "jsonrpc-lite": "^2.2.0", "jsonwebtoken": "^8.5.1", "kcors": "^2.2.2", From 6d4d363b600a6a03fd203867851d6f72300ffe72 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Tue, 13 Apr 2021 13:14:37 -0700 Subject: [PATCH 2/4] fix(ipfs-coord): Updating to v3.0.4 --- package-lock.json | 6 +++--- package.json | 2 +- src/lib/ipfs.js | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index bb6886f..95d9097 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8677,9 +8677,9 @@ } }, "ipfs-coord": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ipfs-coord/-/ipfs-coord-3.0.3.tgz", - "integrity": "sha512-Ei2SQudMHeqlMWfnjW6QDU+6Tksv9QikEK7Rnw1FvNQ+7/53dfuOOrr+OOfG/MQnz46uDkFk1LK3Kqk/iD4uJg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ipfs-coord/-/ipfs-coord-3.0.4.tgz", + "integrity": "sha512-z9c1vxR8krDGPnV97A6GrJ7o5NjpMFzoNWoQNmQdud13pO1tJbcXCvM2DVR/9m9CHs+WNht4PuC4zNF/61fXHw==", "requires": { "bch-encrypt-lib": "^2.0.0", "orbit-db": "^0.26.1" diff --git a/package.json b/package.json index 2b0909d..1b0a9be 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "bcryptjs": "^2.4.3", "glob": "^7.1.6", "ipfs": "^0.54.4", - "ipfs-coord": "^3.0.3", + "ipfs-coord": "^3.0.4", "jsonrpc-lite": "^2.2.0", "jsonwebtoken": "^8.5.1", "kcors": "^2.2.2", diff --git a/src/lib/ipfs.js b/src/lib/ipfs.js index 5429d7b..163e0c8 100644 --- a/src/lib/ipfs.js +++ b/src/lib/ipfs.js @@ -82,6 +82,7 @@ class IPFSLib { this.ipfsCoord = new this.IpfsCoord({ ipfs: this.ipfs, type: 'node.js', + // type: 'browser', bchjs: this.bchjs, privateLog: this.rpc.router, isCircuitRelay: this.config.isCircuitRelay From 1e36b40ac0e62adbfdd31e33f56aff9579814cac Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Tue, 13 Apr 2021 22:17:16 +0200 Subject: [PATCH 3/4] Updating package-lock --- package-lock.json | 206 +++++++++++++++++++--------------------------- 1 file changed, 84 insertions(+), 122 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95d9097..777b4af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13529,6 +13529,45 @@ "ms": "2.1.2" } }, + "engine.io": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" + } + }, + "engine.io-client": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.3.tgz", + "integrity": "sha512-C3JYYyvna0FvSKOWGWpo0/EQ6MayO8uEKam1oedLZRpxLego9Fk6K3UH/Phieu1xPHauM7YqAygJ+6SraVc0Qg==", + "requires": { + "base64-arraybuffer": "0.1.4", + "component-emitter": "~1.3.0", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.1", + "has-cors": "1.1.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "requires": { + "base64-arraybuffer": "0.1.4" + } + }, "ipfs-utils": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-6.0.4.tgz", @@ -13584,6 +13623,51 @@ "version": "3.1.22", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.22.tgz", "integrity": "sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==" + }, + "socket.io-adapter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==" + }, + "socket.io-client-next": { + "version": "npm:socket.io-client@3.1.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-3.1.3.tgz", + "integrity": "sha512-4sIGOGOmCg3AOgGi7EEr6ZkTZRkrXwub70bBB/F0JSkMOUFpA77WsL87o34DffQQ31PkbMUIadGOk+3tx1KGbw==", + "requires": { + "@types/component-emitter": "^1.2.10", + "backo2": "~1.0.2", + "component-emitter": "~1.3.0", + "debug": "~4.3.1", + "engine.io-client": "~4.1.0", + "parseuri": "0.0.6", + "socket.io-parser": "~4.0.4" + } + }, + "socket.io-next": { + "version": "npm:socket.io@3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", + "requires": { + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" + } + }, + "socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "requires": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + } } } }, @@ -20003,128 +20087,6 @@ } } }, - "socket.io-client-next": { - "version": "npm:socket.io-client@3.1.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-3.1.3.tgz", - "integrity": "sha512-4sIGOGOmCg3AOgGi7EEr6ZkTZRkrXwub70bBB/F0JSkMOUFpA77WsL87o34DffQQ31PkbMUIadGOk+3tx1KGbw==", - "requires": { - "@types/component-emitter": "^1.2.10", - "backo2": "~1.0.2", - "component-emitter": "~1.3.0", - "debug": "~4.3.1", - "engine.io-client": "~4.1.0", - "parseuri": "0.0.6", - "socket.io-parser": "~4.0.4" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "engine.io-client": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.3.tgz", - "integrity": "sha512-C3JYYyvna0FvSKOWGWpo0/EQ6MayO8uEKam1oedLZRpxLego9Fk6K3UH/Phieu1xPHauM7YqAygJ+6SraVc0Qg==", - "requires": { - "base64-arraybuffer": "0.1.4", - "component-emitter": "~1.3.0", - "debug": "~4.3.1", - "engine.io-parser": "~4.0.1", - "has-cors": "1.1.0", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - } - }, - "engine.io-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", - "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", - "requires": { - "base64-arraybuffer": "0.1.4" - } - }, - "socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - } - } - } - }, - "socket.io-next": { - "version": "npm:socket.io@3.1.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", - "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", - "requires": { - "@types/cookie": "^0.4.0", - "@types/cors": "^2.8.8", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.1", - "engine.io": "~4.1.0", - "socket.io-adapter": "~2.1.0", - "socket.io-parser": "~4.0.3" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "engine.io": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", - "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", - "requires": { - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~4.0.0", - "ws": "~7.4.2" - } - }, - "engine.io-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", - "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", - "requires": { - "base64-arraybuffer": "0.1.4" - } - }, - "socket.io-adapter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", - "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==" - }, - "socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - } - } - } - }, "socket.io-parser": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", From 0abc332a80808f6bbf7b1958dab7445741e2d939 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Wed, 14 Apr 2021 07:36:30 -0700 Subject: [PATCH 4/4] fix(about): Adding about JSON command --- config/about.js | 15 ++++++++++++++ package-lock.json | 12 ++++++----- package.json | 2 +- src/lib/ipfs.js | 3 ++- src/rpc/about/index.js | 45 ++++++++++++++++++++++++++++++++++++++++++ src/rpc/auth/index.js | 10 ++++++++++ src/rpc/index.js | 4 ++++ src/rpc/users/index.js | 40 +++++++++++++++++++++++++++++++++++++ 8 files changed, 124 insertions(+), 7 deletions(-) create mode 100644 config/about.js create mode 100644 src/rpc/about/index.js diff --git a/config/about.js b/config/about.js new file mode 100644 index 0000000..f1efa1f --- /dev/null +++ b/config/about.js @@ -0,0 +1,15 @@ +/* + This file should be customized for your app. The string in this file is + displayed when a user makes the 'about' JSON RPC call. +*/ + +module.exports = ` +This is the about string for the ipfs-service-provider repository: +https://github.com/Permissionless-Software-Foundation/ipfs-service-provider + +Brought to you by the Permissionless Software Foundation: +https://PSFoundation.cash + +Documentation: +https://ipfs-service-provider.fullstack.cash/ +` diff --git a/package-lock.json b/package-lock.json index 777b4af..5598ba0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6587,7 +6587,8 @@ }, "ini": { "version": "1.3.5", - "resolved": "", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "optional": true }, "is-fullwidth-code-point": { @@ -6790,7 +6791,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "optional": true } } @@ -8677,9 +8679,9 @@ } }, "ipfs-coord": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ipfs-coord/-/ipfs-coord-3.0.4.tgz", - "integrity": "sha512-z9c1vxR8krDGPnV97A6GrJ7o5NjpMFzoNWoQNmQdud13pO1tJbcXCvM2DVR/9m9CHs+WNht4PuC4zNF/61fXHw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/ipfs-coord/-/ipfs-coord-3.0.6.tgz", + "integrity": "sha512-EmlLcYptpOztZ9aLB6DHL8vy0gsnRzvRMzBOno1jW7Ht/SP7KhhYGpXvG/8+BYRFgFhAHPHiC2CJMn9N9La4fw==", "requires": { "bch-encrypt-lib": "^2.0.0", "orbit-db": "^0.26.1" diff --git a/package.json b/package.json index 1b0a9be..a2a8d5c 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "bcryptjs": "^2.4.3", "glob": "^7.1.6", "ipfs": "^0.54.4", - "ipfs-coord": "^3.0.4", + "ipfs-coord": "^3.0.6", "jsonrpc-lite": "^2.2.0", "jsonwebtoken": "^8.5.1", "kcors": "^2.2.2", diff --git a/src/lib/ipfs.js b/src/lib/ipfs.js index 163e0c8..67df15e 100644 --- a/src/lib/ipfs.js +++ b/src/lib/ipfs.js @@ -85,7 +85,8 @@ class IPFSLib { // type: 'browser', bchjs: this.bchjs, privateLog: this.rpc.router, - isCircuitRelay: this.config.isCircuitRelay + isCircuitRelay: this.config.isCircuitRelay, + apiInfo: 'https://ipfs-service-provider.fullstack.cash/' }) await this.ipfsCoord.isReady() diff --git a/src/rpc/about/index.js b/src/rpc/about/index.js new file mode 100644 index 0000000..772382b --- /dev/null +++ b/src/rpc/about/index.js @@ -0,0 +1,45 @@ +/* + This is the JSON RPC router for the users API +*/ + +// Public npm libraries +const jsonrpc = require('jsonrpc-lite') + +// Local libraries +const aboutStr = require('../../../config/about') + +class AuthRPC { + constructor (localConfig) { + // Encapsulate dependencies + this.jsonrpc = jsonrpc + } + + /** + * @api {JSON} /about About IPFS Node + * @apiPermission public + * @apiName About + * @apiGroup JSON About + * + * @apiExample Example usage: + * {"jsonrpc":"2.0","id":"555","method":"about"} + * + * @apiDescription + * This endpoint can be customized so that users can retrieve information about + * your IPFS node and Service Provider application. This is a great place to + * put a website URL, an IPFS hash, an other basic information. + */ + + // This is the top-level router for this library. + // This is a bit different than other router libraries, because there is + // only one response, which is a string about this node. + async aboutRouter (rpcData) { + return { + success: true, + status: 200, + message: aboutStr, + endpoint: 'about' + } + } +} + +module.exports = AuthRPC diff --git a/src/rpc/auth/index.js b/src/rpc/auth/index.js index 686dd56..5fdef58 100644 --- a/src/rpc/auth/index.js +++ b/src/rpc/auth/index.js @@ -47,6 +47,16 @@ class AuthRPC { } } + /** + * @api {JSON} /auth Get JWT Token + * @apiPermission public + * @apiName AuthUser + * @apiGroup JSON Auth + * + * @apiExample Example usage: + * {"jsonrpc":"2.0","id":"556","method":"auth","params":{ "endpoint": "authUser", "login": "test555@test.com", "password": "password"}} + * + */ async authUser (rpcData) { try { // console.log('authUser rpcData: ', rpcData) diff --git a/src/rpc/index.js b/src/rpc/index.js index 4c808cf..4ebf083 100644 --- a/src/rpc/index.js +++ b/src/rpc/index.js @@ -9,6 +9,7 @@ const jsonrpc = require('jsonrpc-lite') const wlogger = require('../lib/wlogger') const UserController = require('./users') const AuthController = require('./auth') +const AboutController = require('./about') let _this @@ -18,6 +19,7 @@ class JSONRPC { this.jsonrpc = jsonrpc this.userController = new UserController() this.authController = new AuthController() + this.aboutController = new AboutController() // This will be replaced once the ipfs-coord lib finishes initializing. this.ipfsCoord = {} @@ -60,6 +62,8 @@ class JSONRPC { case 'auth': retObj = await _this.authController.authRouter(parsedData) break + case 'about': + retObj = await _this.aboutController.aboutRouter(parsedData) } // console.log('retObj: ', retObj) diff --git a/src/rpc/users/index.js b/src/rpc/users/index.js index f6ddb94..8bdb3fa 100644 --- a/src/rpc/users/index.js +++ b/src/rpc/users/index.js @@ -129,6 +129,16 @@ class UserRPC { } } + /** + * @api {JSON} /users Get all users + * @apiPermission public + * @apiName GetAllUsers + * @apiGroup JSON Users + * + * @apiExample Example usage: + * {"jsonrpc":"2.0","id":"555","method":"users","params":{ "endpoint": "getAllUsers", "apiToken": ""}} + * + */ // Get all Users. async getAll () { try { @@ -155,6 +165,16 @@ class UserRPC { } } + /** + * @api {JSON} /users Get a user + * @apiPermission public + * @apiName GetAUser + * @apiGroup JSON Users + * + * @apiExample Example usage: + * {"jsonrpc":"2.0","id":"123","method":"users","params":{ "endpoint": "getUser", "apiToken": "", "userId": "<_id>"}} + * + */ // Get a specific user. async getUser (rpcData, userModel) { try { @@ -186,6 +206,16 @@ class UserRPC { } } + /** + * @api {JSON} /users Update a user + * @apiPermission public + * @apiName UpdateAUser + * @apiGroup JSON Users + * + * @apiExample Example usage: + * {"jsonrpc":"2.0","id":"123","method":"users","params":{ "endpoint": "updateUser", "apiToken": "", "userId": "<_id>", "name": "test999"}} + * + */ async updateUser (rpcData, userModel) { try { // console.log('updateUser rpcData: ', rpcData) @@ -214,6 +244,16 @@ class UserRPC { } } + /** + * @api {JSON} /users Delete a user + * @apiPermission public + * @apiName DeleteAUser + * @apiGroup JSON Users + * + * @apiExample Example usage: + * {"jsonrpc":"2.0","id":"123","method":"users","params":{ "endpoint": "deleteUser", "userId": "<_id>", "apiToken": ""}} + * + */ async deleteUser (rpcData, userModel) { try { // console.log('deleteUser rpcData: ', rpcData)