From 97e2f7f2e73e2ca5a1b8f7b5308428c20f333445 Mon Sep 17 00:00:00 2001 From: Simon Prickett Date: Mon, 18 Oct 2021 22:21:13 +0100 Subject: [PATCH 1/4] Adds connect-as-acl-user example. --- .../connect-as-acl-user.js | 31 +++++ examples/package-lock.json | 110 ++++++++++++++++++ examples/package.json | 12 ++ 3 files changed, 153 insertions(+) create mode 100644 examples/connect-as-acl-user/connect-as-acl-user.js create mode 100644 examples/package-lock.json create mode 100644 examples/package.json diff --git a/examples/connect-as-acl-user/connect-as-acl-user.js b/examples/connect-as-acl-user/connect-as-acl-user.js new file mode 100644 index 00000000000..f716b06aec4 --- /dev/null +++ b/examples/connect-as-acl-user/connect-as-acl-user.js @@ -0,0 +1,31 @@ +// Connect to Redis 6.x as an ACL user. Attempt to run a command +// that the user is allowed to execute, and a command that the +// user is not allowed to execute. + +// Create the test user in redis-cli with this command: +// acl setuser testuser on >testpassword +ping + +import { createClient } from 'redis'; + +const connectWithACLUser = async () => { + const client = createClient({ + url: 'redis://testuser:testpassword@127.0.0.1:6379' + }); + + await client.connect(); + + // Returns PONG + console.log(`Response from PING command: ${await client.ping()}`); + + try { + // This will error as this user is not allowed to run this command... + console.log(`Response from GET command: ${await client.get('somekey')}`); + } catch (e) { + console.log(`GET command failed: ${e.message}`); + } + + await client.quit(); +} + + +connectWithACLUser(); \ No newline at end of file diff --git a/examples/package-lock.json b/examples/package-lock.json new file mode 100644 index 00000000000..07eff138d1f --- /dev/null +++ b/examples/package-lock.json @@ -0,0 +1,110 @@ +{ + "name": "node-redis-examples", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "node-redis-examples", + "version": "1.0.0", + "dependencies": { + "redis": "next" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", + "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/generic-pool": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz", + "integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/redis": { + "version": "4.0.0-rc.3", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.0.0-rc.3.tgz", + "integrity": "sha512-yvijGYWp3aOvqpFgqovUWLWSdHgjUEtScqJmjTfUXj/4kEHuSW2TERFQelIBnrGeKh8//eYlLpCFKCjDYT4NQw==", + "dependencies": { + "cluster-key-slot": "1.1.0", + "generic-pool": "3.8.2", + "redis-parser": "3.0.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, + "dependencies": { + "cluster-key-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", + "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==" + }, + "generic-pool": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz", + "integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==" + }, + "redis": { + "version": "4.0.0-rc.3", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.0.0-rc.3.tgz", + "integrity": "sha512-yvijGYWp3aOvqpFgqovUWLWSdHgjUEtScqJmjTfUXj/4kEHuSW2TERFQelIBnrGeKh8//eYlLpCFKCjDYT4NQw==", + "requires": { + "cluster-key-slot": "1.1.0", + "generic-pool": "3.8.2", + "redis-parser": "3.0.0", + "yallist": "4.0.0" + } + }, + "redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=" + }, + "redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", + "requires": { + "redis-errors": "^1.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/examples/package.json b/examples/package.json new file mode 100644 index 00000000000..1a31b2c795e --- /dev/null +++ b/examples/package.json @@ -0,0 +1,12 @@ +{ + "name": "node-redis-examples", + "version": "1.0.0", + "description": "node-redis 4 example script", + "main": "index.js", + "scripts": { + }, + "type": "module", + "dependencies": { + "redis": "next" + } +} From 7330b6ded5ecd9d54cbf955e7dcaa768be8c922e Mon Sep 17 00:00:00 2001 From: Simon Prickett Date: Mon, 18 Oct 2021 23:00:07 +0100 Subject: [PATCH 2/4] Adds blank line at end. --- examples/connect-as-acl-user/connect-as-acl-user.js | 3 ++- examples/package.json | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/connect-as-acl-user/connect-as-acl-user.js b/examples/connect-as-acl-user/connect-as-acl-user.js index f716b06aec4..20e3c4c3caf 100644 --- a/examples/connect-as-acl-user/connect-as-acl-user.js +++ b/examples/connect-as-acl-user/connect-as-acl-user.js @@ -28,4 +28,5 @@ const connectWithACLUser = async () => { } -connectWithACLUser(); \ No newline at end of file +connectWithACLUser(); + diff --git a/examples/package.json b/examples/package.json index 1a31b2c795e..df25d55c597 100644 --- a/examples/package.json +++ b/examples/package.json @@ -10,3 +10,4 @@ "redis": "next" } } + From 1c79d39aeca63932131522d22c1f7ef5ba73f21e Mon Sep 17 00:00:00 2001 From: Simon Prickett Date: Mon, 18 Oct 2021 23:01:16 +0100 Subject: [PATCH 3/4] Set to private. --- examples/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/package.json b/examples/package.json index df25d55c597..69fff5b5413 100644 --- a/examples/package.json +++ b/examples/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "description": "node-redis 4 example script", "main": "index.js", + "private": true, "scripts": { }, "type": "module", From c594a89d6179d22a57d945205ff6d6dceda8671b Mon Sep 17 00:00:00 2001 From: Simon Prickett Date: Mon, 18 Oct 2021 23:08:43 +0100 Subject: [PATCH 4/4] Adds examples folder to npmignore. --- .npmignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.npmignore b/.npmignore index e3fc1a7731d..7e7bb32b111 100644 --- a/.npmignore +++ b/.npmignore @@ -16,3 +16,4 @@ lib/ index.ts *.spec.* dist/lib/test-utils.* +examples/