verdaccio-auth-memory 10.1.0 → 10.2.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.
package/lib/Memory.js CHANGED
@@ -7,18 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _commonsApi = require("@verdaccio/commons-api");
9
9
 
10
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
-
12
10
  class Memory {
13
11
  constructor(config, appOptions) {
14
- _defineProperty(this, "_logger", void 0);
15
-
16
- _defineProperty(this, "_users", void 0);
17
-
18
- _defineProperty(this, "_config", void 0);
19
-
20
- _defineProperty(this, "_app_config", void 0);
21
-
22
12
  this._users = config.users || {};
23
13
  this._config = config;
24
14
  this._logger = appOptions.logger;
package/lib/Memory.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Memory.ts"],"names":["Memory","constructor","config","appOptions","_users","users","_config","_logger","logger","_app_config","authenticate","user","password","done","userCredentials","debug","err","info","adduser","max_users","Object","keys","length","name","changePassword","username","newPassword","cb","allow_access","pkg","access","includes","allow_publish","publish"],"mappings":";;;;;;;AACA;;;;AAiBe,MAAMA,MAAN,CAA2D;AAMjEC,EAAAA,WAAW,CAACC,MAAD,EAAgCC,UAAhC,EAAkF;AAAA;;AAAA;;AAAA;;AAAA;;AAClG,SAAKC,MAAL,GAAcF,MAAM,CAACG,KAAP,IAAgB,EAA9B;AACA,SAAKC,OAAL,GAAeJ,MAAf;AACA,SAAKK,OAAL,GAAeJ,UAAU,CAACK,MAA1B;AACA,SAAKC,WAAL,GAAmBN,UAAU,CAACD,MAA9B;AACD;;AAEMQ,EAAAA,YAAY,CAACC,IAAD,EAAeC,QAAf,EAAiCC,IAAjC,EAAuD;AACxE,UAAMC,eAAe,GAAG,KAAKV,MAAL,CAAYO,IAAZ,CAAxB;;AAEA,QAAI,CAACG,eAAL,EAAsB;AACpB,WAAKP,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,QAAAA;AAAF,OAAnB,EAA6B,+CAA7B;;AACA,aAAOE,IAAI,CAAC,IAAD,EAAO,KAAP,CAAX;AACD;;AAED,QAAID,QAAQ,KAAKE,eAAe,CAACF,QAAjC,EAA2C;AACzC,YAAMI,GAAG,GAAG,iCAAgB,4BAAhB,CAAZ;;AACA,WAAKT,OAAL,CAAaU,IAAb,CAAkB;AAAEN,QAAAA;AAAF,OAAlB,EAA4B,iDAA5B;;AAEA,aAAOE,IAAI,CAACG,GAAD,CAAX;AACD,KAbuE,CAexE;AACA;;;AACA,SAAKT,OAAL,CAAaU,IAAb,CAAkB;AAAEN,MAAAA;AAAF,KAAlB,EAA4B,wDAA5B;;AACA,WAAOE,IAAI,CAAC,IAAD,EAAO,CAACF,IAAD,CAAP,CAAX;AACD;;AAEMO,EAAAA,OAAO,CAACP,IAAD,EAAeC,QAAf,EAAiCC,IAAjC,EAAuD;AACnE,QAAI,KAAKT,MAAL,CAAYO,IAAZ,CAAJ,EAAuB;AACrB,WAAKJ,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,QAAAA;AAAF,OAAnB,EAA6B,8CAA7B;;AACA,aAAOE,IAAI,CAAC,IAAD,EAAO,IAAP,CAAX;AACD;;AAED,QAAI,KAAKJ,WAAL,CAAiBU,SAArB,EAAgC;AAC9B,UAAIC,MAAM,CAACC,IAAP,CAAY,KAAKjB,MAAjB,EAAyBkB,MAAzB,IAAmC,KAAKb,WAAL,CAAiBU,SAAxD,EAAmE;AACjE,cAAMH,GAAG,GAAG,6BAAY,iCAAZ,CAAZ;AAEA,eAAOH,IAAI,CAACG,GAAD,CAAX;AACD;AACF;;AAED,SAAKZ,MAAL,CAAYO,IAAZ,IAAoB;AAAEY,MAAAA,IAAI,EAAEZ,IAAR;AAAcC,MAAAA,QAAQ,EAAEA;AAAxB,KAApB;;AAEA,SAAKL,OAAL,CAAaU,IAAb,CAAkB;AAAEN,MAAAA;AAAF,KAAlB,EAA4B,oDAA5B;;AACAE,IAAAA,IAAI,CAAC,IAAD,EAAOF,IAAP,CAAJ;AACD;;AAEMa,EAAAA,cAAc,CAACC,QAAD,EAAmBb,QAAnB,EAAqCc,WAArC,EAA0DC,EAA1D,EAA8E;AACjG,UAAMhB,IAAgB,GAAG,KAAKP,MAAL,CAAYqB,QAAZ,CAAzB;;AACA,SAAKlB,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,MAAAA,IAAI,EAAEc;AAAR,KAAnB,EAAuC,oCAAvC;;AAEA,QAAId,IAAI,IAAIA,IAAI,CAACC,QAAL,KAAkBA,QAA9B,EAAwC;AACtCD,MAAAA,IAAI,CAACC,QAAL,GAAgBc,WAAhB;AACA,WAAKtB,MAAL,CAAYqB,QAAZ,IAAwBd,IAAxB;;AAEA,WAAKJ,OAAL,CAAaU,IAAb,CAAkB;AAAEN,QAAAA;AAAF,OAAlB,EAA4B,+DAA5B;;AACAgB,MAAAA,EAAE,CAAC,IAAD,EAAOhB,IAAP,CAAF;AACD,KAND,MAMO;AACL,YAAMK,GAAG,GAAG,6BAAY,gBAAZ,CAAZ;;AACA,WAAKT,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,QAAAA,IAAI,EAAEc;AAAR,OAAnB,EAAuC,yCAAvC;;AAEA,aAAOE,EAAE,CAACX,GAAD,CAAT;AACD;AACF;;AAEMY,EAAAA,YAAY,CAACjB,IAAD,EAAmBkB,GAAnB,EAAuCF,EAAvC,EAA2D;AAC5E,QAAKE,GAAG,CAACC,MAAJ,IAAcD,GAAG,CAACC,MAAJ,CAAWC,QAAX,CAAoB,MAApB,CAAf,IAAgDF,GAAG,CAACC,MAAJ,IAAcD,GAAG,CAACC,MAAJ,CAAWC,QAAX,CAAoB,YAApB,CAAlE,EAAsG;AACpG,WAAKxB,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,QAAAA,IAAI,EAAEA,IAAI,CAACY;AAAb,OAAnB,EAAwC,yDAAxC;;AAEA,aAAOI,EAAE,CAAC,IAAD,EAAO,IAAP,CAAT;AACD;;AAED,QAAI,CAAChB,IAAI,CAACY,IAAV,EAAgB;AACd,YAAMP,GAAG,GAAG,8BAAa,+BAAb,CAAZ;;AACA,WAAKT,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,QAAAA,IAAI,EAAEA,IAAI,CAACY;AAAb,OAAnB,EAAwC,6CAAxC;;AACA,aAAOI,EAAE,CAACX,GAAD,CAAT;AACD;;AAED,QAAKa,GAAG,CAACC,MAAJ,IAAcD,GAAG,CAACC,MAAJ,CAAWC,QAAX,CAAoBpB,IAAI,CAACY,IAAzB,CAAf,IAAmDM,GAAG,CAACC,MAAJ,IAAcD,GAAG,CAACC,MAAJ,CAAWC,QAAX,CAAoB,gBAApB,CAArE,EAA6G;AAC3G,WAAKxB,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,QAAAA,IAAI,EAAEA,IAAI,CAACY;AAAb,OAAnB,EAAwC,yDAAxC;;AACA,aAAOI,EAAE,CAAC,IAAD,EAAO,IAAP,CAAT;AACD;;AAED,UAAMX,GAAG,GAAG,8BAAa,+BAAb,CAAZ;;AAEA,SAAKT,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,MAAAA,IAAI,EAAEA,IAAI,CAACY;AAAb,KAAnB,EAAwC,+DAAxC;;AACA,WAAOI,EAAE,CAACX,GAAD,CAAT;AACD;;AAEMgB,EAAAA,aAAa,CAACrB,IAAD,EAAmBkB,GAAnB,EAAuCF,EAAvC,EAA2D;AAC7E,QAAKE,GAAG,CAACI,OAAJ,IAAeJ,GAAG,CAACI,OAAJ,CAAYF,QAAZ,CAAqB,MAArB,CAAhB,IAAkDF,GAAG,CAACI,OAAJ,IAAeJ,GAAG,CAACI,OAAJ,CAAYF,QAAZ,CAAqB,YAArB,CAArE,EAA0G;AACxG,WAAKxB,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,QAAAA,IAAI,EAAEA,IAAI,CAACY;AAAb,OAAnB,EAAwC,6DAAxC;;AACA,aAAOI,EAAE,CAAC,IAAD,EAAO,IAAP,CAAT;AACD;;AAED,QAAI,CAAChB,IAAI,CAACY,IAAV,EAAgB;AACd,YAAMP,GAAG,GAAG,8BAAa,gCAAb,CAAZ;;AACA,WAAKT,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,QAAAA,IAAI,EAAEA,IAAI,CAACY;AAAb,OAAnB,EAAwC,8CAAxC;;AAEA,aAAOI,EAAE,CAACX,GAAD,CAAT;AACD;;AAED,QAAKa,GAAG,CAACI,OAAJ,IAAeJ,GAAG,CAACI,OAAJ,CAAYF,QAAZ,CAAqBpB,IAAI,CAACY,IAA1B,CAAhB,IAAqDM,GAAG,CAACI,OAAJ,IAAeJ,GAAG,CAACI,OAAJ,CAAYF,QAAZ,CAAqB,gBAArB,CAAxE,EAAiH;AAC/G,aAAOJ,EAAE,CAAC,IAAD,EAAO,IAAP,CAAT;AACD;;AAED,UAAMX,GAAG,GAAG,8BAAa,gCAAb,CAAZ;;AACA,SAAKT,OAAL,CAAaQ,KAAb,CAAmB;AAAEJ,MAAAA,IAAI,EAAEA,IAAI,CAACY;AAAb,KAAnB,EAAwC,gEAAxC;;AAEA,WAAOI,EAAE,CAACX,GAAD,CAAT;AACD;;AArHuE","sourcesContent":["import { Config, PluginOptions, Callback, PackageAccess, IPluginAuth, RemoteUser, Logger } from '@verdaccio/types';\nimport { getConflict, getForbidden, getNotFound, getUnauthorized } from '@verdaccio/commons-api';\n\nexport interface UserMemory {\n name: string;\n password: string;\n}\n\nexport interface Users {\n [key: string]: UserMemory;\n}\n\nexport interface VerdaccioMemoryConfig extends Config {\n max_users?: number;\n users: Users;\n}\n\n\nexport default class Memory implements IPluginAuth<VerdaccioMemoryConfig> {\n public _logger: Logger;\n public _users: Users;\n public _config: {};\n public _app_config: VerdaccioMemoryConfig;\n\n public constructor(config: VerdaccioMemoryConfig, appOptions: PluginOptions<VerdaccioMemoryConfig>) {\n this._users = config.users || {};\n this._config = config;\n this._logger = appOptions.logger;\n this._app_config = appOptions.config;\n }\n\n public authenticate(user: string, password: string, done: Callback): void {\n const userCredentials = this._users[user];\n\n if (!userCredentials) {\n this._logger.debug({ user }, '[VerdaccioMemory] user @{user} does not exist');\n return done(null, false);\n }\n\n if (password !== userCredentials.password) {\n const err = getUnauthorized(\"i don't like your password\");\n this._logger.info({ user }, '[VerdaccioMemory] password invalid for: @{user}');\n\n return done(err);\n }\n\n // authentication succeeded!\n // return all usergroups this user has access to;\n this._logger.info({ user }, '[VerdaccioMemory] authentication succeeded for @{user}');\n return done(null, [user]);\n }\n\n public adduser(user: string, password: string, done: Callback): void {\n if (this._users[user]) {\n this._logger.debug({ user }, '[VerdaccioMemory] user @{user} already exist');\n return done(null, true);\n }\n\n if (this._app_config.max_users) {\n if (Object.keys(this._users).length >= this._app_config.max_users) {\n const err = getConflict('maximum amount of users reached');\n\n return done(err);\n }\n }\n\n this._users[user] = { name: user, password: password };\n\n this._logger.info({ user }, '[VerdaccioMemory] user added succeeded for @{user}');\n done(null, user);\n }\n\n public changePassword(username: string, password: string, newPassword: string, cb: Callback): void {\n const user: UserMemory = this._users[username];\n this._logger.debug({ user: username }, 'user: @{user} init change password');\n\n if (user && user.password === password) {\n user.password = newPassword;\n this._users[username] = user;\n\n this._logger.info({ user }, '[VerdaccioMemory] user changed password succeeded for @{user}');\n cb(null, user);\n } else {\n const err = getNotFound('user not found');\n this._logger.debug({ user: username }, 'change password user @{user} not found');\n\n return cb(err);\n }\n }\n\n public allow_access(user: RemoteUser, pkg: PackageAccess, cb: Callback): void {\n if ((pkg.access && pkg.access.includes('$all')) || (pkg.access && pkg.access.includes('$anonymous'))) {\n this._logger.debug({ user: user.name }, '[VerdaccioMemory] user: @{user} has been granted access');\n\n return cb(null, true);\n }\n\n if (!user.name) {\n const err = getForbidden('not allowed to access package');\n this._logger.debug({ user: user.name }, 'user: @{user} not allowed to access package');\n return cb(err);\n }\n\n if ((pkg.access && pkg.access.includes(user.name)) || (pkg.access && pkg.access.includes('$authenticated'))) {\n this._logger.debug({ user: user.name }, '[VerdaccioMemory] user: @{user} has been granted access');\n return cb(null, true);\n }\n\n const err = getForbidden('not allowed to access package');\n\n this._logger.debug({ user: user.name }, '[VerdaccioMemory] user: @{user} not allowed to access package');\n return cb(err);\n }\n\n public allow_publish(user: RemoteUser, pkg: PackageAccess, cb: Callback): void {\n if ((pkg.publish && pkg.publish.includes('$all')) || (pkg.publish && pkg.publish.includes('$anonymous'))) {\n this._logger.debug({ user: user.name }, '[VerdaccioMemory] user: @{user} has been granted to publish');\n return cb(null, true);\n }\n\n if (!user.name) {\n const err = getForbidden('not allowed to publish package');\n this._logger.debug({ user: user.name }, 'user: @{user} not allowed to publish package');\n\n return cb(err);\n }\n\n if ((pkg.publish && pkg.publish.includes(user.name)) || (pkg.publish && pkg.publish.includes('$authenticated'))) {\n return cb(null, true);\n }\n\n const err = getForbidden('not allowed to publish package');\n this._logger.debug({ user: user.name }, '[VerdaccioMemory] user: @{user} not allowed to publish package');\n\n return cb(err);\n }\n}\n"],"file":"Memory.js"}
1
+ {"version":3,"sources":["../src/Memory.ts"],"names":["Memory","constructor","config","appOptions","_users","users","_config","_logger","logger","_app_config","authenticate","user","password","done","userCredentials","debug","err","info","adduser","max_users","Object","keys","length","name","changePassword","username","newPassword","cb","allow_access","pkg","access","includes","allow_publish","publish"],"mappings":"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","sourcesContent":["import { Config, PluginOptions, Callback, PackageAccess, IPluginAuth, RemoteUser, Logger } from '@verdaccio/types';\nimport { getConflict, getForbidden, getNotFound, getUnauthorized } from '@verdaccio/commons-api';\n\nexport interface UserMemory {\n name: string;\n password: string;\n}\n\nexport interface Users {\n [key: string]: UserMemory;\n}\n\nexport interface VerdaccioMemoryConfig extends Config {\n max_users?: number;\n users: Users;\n}\n\n\nexport default class Memory implements IPluginAuth<VerdaccioMemoryConfig> {\n public _logger: Logger;\n public _users: Users;\n public _config: {};\n public _app_config: VerdaccioMemoryConfig;\n\n public constructor(config: VerdaccioMemoryConfig, appOptions: PluginOptions<VerdaccioMemoryConfig>) {\n this._users = config.users || {};\n this._config = config;\n this._logger = appOptions.logger;\n this._app_config = appOptions.config;\n }\n\n public authenticate(user: string, password: string, done: Callback): void {\n const userCredentials = this._users[user];\n\n if (!userCredentials) {\n this._logger.debug({ user }, '[VerdaccioMemory] user @{user} does not exist');\n return done(null, false);\n }\n\n if (password !== userCredentials.password) {\n const err = getUnauthorized(\"i don't like your password\");\n this._logger.info({ user }, '[VerdaccioMemory] password invalid for: @{user}');\n\n return done(err);\n }\n\n // authentication succeeded!\n // return all usergroups this user has access to;\n this._logger.info({ user }, '[VerdaccioMemory] authentication succeeded for @{user}');\n return done(null, [user]);\n }\n\n public adduser(user: string, password: string, done: Callback): void {\n if (this._users[user]) {\n this._logger.debug({ user }, '[VerdaccioMemory] user @{user} already exist');\n return done(null, true);\n }\n\n if (this._app_config.max_users) {\n if (Object.keys(this._users).length >= this._app_config.max_users) {\n const err = getConflict('maximum amount of users reached');\n\n return done(err);\n }\n }\n\n this._users[user] = { name: user, password: password };\n\n this._logger.info({ user }, '[VerdaccioMemory] user added succeeded for @{user}');\n done(null, user);\n }\n\n public changePassword(username: string, password: string, newPassword: string, cb: Callback): void {\n const user: UserMemory = this._users[username];\n this._logger.debug({ user: username }, 'user: @{user} init change password');\n\n if (user && user.password === password) {\n user.password = newPassword;\n this._users[username] = user;\n\n this._logger.info({ user }, '[VerdaccioMemory] user changed password succeeded for @{user}');\n cb(null, user);\n } else {\n const err = getNotFound('user not found');\n this._logger.debug({ user: username }, 'change password user @{user} not found');\n\n return cb(err);\n }\n }\n\n public allow_access(user: RemoteUser, pkg: PackageAccess, cb: Callback): void {\n if ((pkg.access && pkg.access.includes('$all')) || (pkg.access && pkg.access.includes('$anonymous'))) {\n this._logger.debug({ user: user.name }, '[VerdaccioMemory] user: @{user} has been granted access');\n\n return cb(null, true);\n }\n\n if (!user.name) {\n const err = getForbidden('not allowed to access package');\n this._logger.debug({ user: user.name }, 'user: @{user} not allowed to access package');\n return cb(err);\n }\n\n if ((pkg.access && pkg.access.includes(user.name)) || (pkg.access && pkg.access.includes('$authenticated'))) {\n this._logger.debug({ user: user.name }, '[VerdaccioMemory] user: @{user} has been granted access');\n return cb(null, true);\n }\n\n const err = getForbidden('not allowed to access package');\n\n this._logger.debug({ user: user.name }, '[VerdaccioMemory] user: @{user} not allowed to access package');\n return cb(err);\n }\n\n public allow_publish(user: RemoteUser, pkg: PackageAccess, cb: Callback): void {\n if ((pkg.publish && pkg.publish.includes('$all')) || (pkg.publish && pkg.publish.includes('$anonymous'))) {\n this._logger.debug({ user: user.name }, '[VerdaccioMemory] user: @{user} has been granted to publish');\n return cb(null, true);\n }\n\n if (!user.name) {\n const err = getForbidden('not allowed to publish package');\n this._logger.debug({ user: user.name }, 'user: @{user} not allowed to publish package');\n\n return cb(err);\n }\n\n if ((pkg.publish && pkg.publish.includes(user.name)) || (pkg.publish && pkg.publish.includes('$authenticated'))) {\n return cb(null, true);\n }\n\n const err = getForbidden('not allowed to publish package');\n this._logger.debug({ user: user.name }, '[VerdaccioMemory] user: @{user} not allowed to publish package');\n\n return cb(err);\n }\n}\n"],"file":"Memory.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verdaccio-auth-memory",
3
- "version": "10.1.0",
3
+ "version": "10.2.0",
4
4
  "description": "Auth plugin for Verdaccio that keeps users in memory",
5
5
  "keywords": [
6
6
  "verdaccio",
@@ -28,10 +28,10 @@
28
28
  "node": ">=8"
29
29
  },
30
30
  "dependencies": {
31
- "@verdaccio/commons-api": "10.1.0"
31
+ "@verdaccio/commons-api": "10.2.0"
32
32
  },
33
33
  "devDependencies": {
34
- "@verdaccio/types": "10.1.0"
34
+ "@verdaccio/types": "10.3.0"
35
35
  },
36
36
  "funding": {
37
37
  "type": "opencollective",
@@ -45,5 +45,6 @@
45
45
  "build:js": "babel src/ --out-dir lib/ --copy-files --extensions \".ts,.tsx\" --source-maps",
46
46
  "watch": "pnpm build:js -- --watch",
47
47
  "build": "pnpm run build:js && pnpm run build:types"
48
- }
48
+ },
49
+ "readme": "# verdaccio-auth-memory\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fverdaccio%2Fverdaccio-auth-memory.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fverdaccio%2Fverdaccio-auth-memory?ref=badge_shield)\n[![CircleCI](https://circleci.com/gh/verdaccio/verdaccio-auth-memory.svg?style=svg)](https://circleci.com/gh/ayusharma/verdaccio-auth-memory)\n[![codecov](https://codecov.io/gh/verdaccio/verdaccio-auth-memory/branch/master/graph/badge.svg)](https://codecov.io/gh/verdaccio/verdaccio-auth-memory)\n\n\nThis verdaccio auth plugin keeps the users in a memory plain object.\nThis means all sessions and users will disappear when you restart the verdaccio server.\n\nIf you want to use this piece of software, do it at your own risk. **This plugin is being used for unit testing**.\n\n## Installation\n\n```sh\n$ npm install -g verdaccio\n$ npm install -g verdaccio-auth-memory\n```\n\n## Config\n\nAdd to your `config.yaml`:\n\n```yaml\nauth:\n auth-memory:\n users:\n foo:\n name: foo\n password: s3cret\n bar:\n name: bar\n password: s3cret\n```\n\n## For plugin writers\n\nIt's called as:\n\n```js\nconst plugin = require('verdaccio-auth-memory');\n\nplugin(config, appConfig);\n```\n\nWhere:\n\n - config - module's own config\n - appOptions - collection of different internal verdaccio objects\n - appOptions.config - main config\n - appOptions.logger - logger\n\nThis should export four functions:\n\n - `adduser(user, password, cb)` Add new users\n\n It should respond with:\n - `cb(err)` in case of an error (error will be returned to user)\n - `cb(null, false)` in case registration is disabled (next auth plugin will be executed)\n - `cb(null, true)` in case user registered successfully\n\n It's useful to set `err.status` property to set http status code (e.g. `err.status = 403`).\n\n - `authenticate(user, password, cb)` Authenticate the user\n\n It should respond with:\n - `cb(err)` in case of a fatal error (error will be returned to user, keep those rare)\n - `cb(null, false)` in case user not authenticated (next auth plugin will be executed)\n - `cb(null, [groups])` in case user is authenticated\n\n Groups is an array of all users/usergroups this user has access to. You should probably include username itself here.\n\n - `allow_access(user, pkg, cb)` Check whether the user has permissions to access a resource (package)\n\n It should respond with:\n - `cb(err)` in case of a fatal error (error will be returned to user, keep those rare)\n - `cb(null, false)` in case user not allowed to access (next auth plugin will be executed)\n - `cb(null, true)` in case user is allowed to access\n\n - `allow_publish(user, pkg, cb)` Check whether the user has permissions to publish a resource (package)\n\n It should respond with:\n - `cb(err)` in case of a fatal error (error will be returned to user, keep those rare)\n - `cb(null, false)` in case user not allowed to publish (next auth plugin will be executed)\n - `cb(null, true)` in case user is allowed to publish\n\n\n\n## License\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fverdaccio%2Fverdaccio-auth-memory.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fverdaccio%2Fverdaccio-auth-memory?ref=badge_large)\n"
49
50
  }