verdaccio-auth-memory 10.2.1 → 10.3.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
@@ -4,27 +4,48 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _commonsApi = require("@verdaccio/commons-api");
7
+ var _core = require("@verdaccio/core");
8
+ var _debug = _interopRequireDefault(require("debug"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
11
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
12
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
+ const {
14
+ getConflict,
15
+ getForbidden,
16
+ getNotFound,
17
+ getUnauthorized
18
+ } = _core.errorUtils;
19
+ const debug = (0, _debug.default)('verdaccio:plugin:memory');
8
20
  class Memory {
9
21
  constructor(config, appOptions) {
22
+ _defineProperty(this, "_logger", void 0);
23
+ _defineProperty(this, "_users", void 0);
24
+ _defineProperty(this, "_config", void 0);
25
+ _defineProperty(this, "_app_config", void 0);
26
+ debug('init memory auth plugin with config: %o', config);
10
27
  this._users = config.users || {};
11
28
  this._config = config;
12
29
  this._logger = appOptions.logger;
13
30
  this._app_config = appOptions.config;
14
31
  }
15
32
  authenticate(user, password, done) {
33
+ debug('authenticate user: %s', user);
34
+ debug('authenticate password: %s', _core.cryptoUtils.mask(password, 5));
16
35
  const userCredentials = this._users[user];
17
36
  if (!userCredentials) {
37
+ debug('user %s does not exist', user);
18
38
  this._logger.debug({
19
39
  user
20
- }, '[VerdaccioMemory] user @{user} does not exist');
40
+ }, 'user @{user} does not exist');
21
41
  return done(null, false);
22
42
  }
23
43
  if (password !== userCredentials.password) {
24
- const err = (0, _commonsApi.getUnauthorized)("i don't like your password");
44
+ debug('password invalid for user %s', user);
45
+ const err = getUnauthorized("i don't like your password");
25
46
  this._logger.info({
26
47
  user
27
- }, '[VerdaccioMemory] password invalid for: @{user}');
48
+ }, 'password invalid for: @{user}');
28
49
  return done(err);
29
50
  }
30
51
 
@@ -32,19 +53,21 @@ class Memory {
32
53
  // return all usergroups this user has access to;
33
54
  this._logger.info({
34
55
  user
35
- }, '[VerdaccioMemory] authentication succeeded for @{user}');
56
+ }, 'authentication succeeded for @{user}');
36
57
  return done(null, [user]);
37
58
  }
38
59
  adduser(user, password, done) {
60
+ debug('add user: %s', user);
39
61
  if (this._users[user]) {
40
62
  this._logger.debug({
41
63
  user
42
- }, '[VerdaccioMemory] user @{user} already exist');
64
+ }, 'user @{user} already exist');
43
65
  return done(null, true);
44
66
  }
45
67
  if (this._app_config.max_users) {
68
+ debug('max users configured: %d', this._app_config.max_users);
46
69
  if (Object.keys(this._users).length >= this._app_config.max_users) {
47
- const err = (0, _commonsApi.getConflict)('maximum amount of users reached');
70
+ const err = getConflict('maximum amount of users reached');
48
71
  return done(err);
49
72
  }
50
73
  }
@@ -54,10 +77,11 @@ class Memory {
54
77
  };
55
78
  this._logger.info({
56
79
  user
57
- }, '[VerdaccioMemory] user added succeeded for @{user}');
80
+ }, 'user added succeeded for @{user}');
58
81
  done(null, user);
59
82
  }
60
83
  changePassword(username, password, newPassword, cb) {
84
+ debug('change password for user: %s', username);
61
85
  const user = this._users[username];
62
86
  this._logger.debug({
63
87
  user: username
@@ -67,10 +91,10 @@ class Memory {
67
91
  this._users[username] = user;
68
92
  this._logger.info({
69
93
  user
70
- }, '[VerdaccioMemory] user changed password succeeded for @{user}');
94
+ }, 'user changed password succeeded for @{user}');
71
95
  cb(null, user);
72
96
  } else {
73
- const err = (0, _commonsApi.getNotFound)('user not found');
97
+ const err = getNotFound('user not found');
74
98
  this._logger.debug({
75
99
  user: username
76
100
  }, 'change password user @{user} not found');
@@ -81,49 +105,56 @@ class Memory {
81
105
  if (pkg.access && pkg.access.includes('$all') || pkg.access && pkg.access.includes('$anonymous')) {
82
106
  this._logger.debug({
83
107
  user: user.name
84
- }, '[VerdaccioMemory] user: @{user} has been granted access');
108
+ }, 'user: @{user} has been granted access');
85
109
  return cb(null, true);
86
110
  }
87
111
  if (!user.name) {
88
- const err = (0, _commonsApi.getForbidden)('not allowed to access package');
112
+ debug('user is not authenticated, cannot access package');
113
+ const err = getForbidden('not allowed to access package');
89
114
  this._logger.debug({
90
115
  user: user.name
91
116
  }, 'user: @{user} not allowed to access package');
92
117
  return cb(err);
93
118
  }
94
119
  if (pkg.access && pkg.access.includes(user.name) || pkg.access && pkg.access.includes('$authenticated')) {
120
+ debug('user %s has been granted access to package', user.name);
95
121
  this._logger.debug({
96
122
  user: user.name
97
- }, '[VerdaccioMemory] user: @{user} has been granted access');
123
+ }, 'user: @{user} has been granted access');
98
124
  return cb(null, true);
99
125
  }
100
- const err = (0, _commonsApi.getForbidden)('not allowed to access package');
126
+ const err = getForbidden('not allowed to access package');
127
+ debug('user %s not allowed to access package', user.name);
101
128
  this._logger.debug({
102
129
  user: user.name
103
- }, '[VerdaccioMemory] user: @{user} not allowed to access package');
130
+ }, 'user: @{user} not allowed to access package');
104
131
  return cb(err);
105
132
  }
106
133
  allow_publish(user, pkg, cb) {
134
+ debug('allow publish for user: %s', user.name);
107
135
  if (pkg.publish && pkg.publish.includes('$all') || pkg.publish && pkg.publish.includes('$anonymous')) {
108
136
  this._logger.debug({
109
137
  user: user.name
110
- }, '[VerdaccioMemory] user: @{user} has been granted to publish');
138
+ }, 'user: @{user} has been granted to publish');
111
139
  return cb(null, true);
112
140
  }
113
141
  if (!user.name) {
114
- const err = (0, _commonsApi.getForbidden)('not allowed to publish package');
142
+ debug('user is not authenticated, cannot publish package');
143
+ const err = getForbidden('not allowed to publish package');
115
144
  this._logger.debug({
116
145
  user: user.name
117
146
  }, 'user: @{user} not allowed to publish package');
118
147
  return cb(err);
119
148
  }
120
149
  if (pkg.publish && pkg.publish.includes(user.name) || pkg.publish && pkg.publish.includes('$authenticated')) {
150
+ debug('user %s has been granted to publish package', user.name);
121
151
  return cb(null, true);
122
152
  }
123
- const err = (0, _commonsApi.getForbidden)('not allowed to publish package');
153
+ const err = getForbidden('not allowed to publish package');
154
+ debug('user %s not allowed to publish package', user.name);
124
155
  this._logger.debug({
125
156
  user: user.name
126
- }, '[VerdaccioMemory] user: @{user} not allowed to publish package');
157
+ }, 'user: @{user} not allowed to publish package');
127
158
  return cb(err);
128
159
  }
129
160
  }
package/lib/Memory.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Memory.js","names":["_commonsApi","require","Memory","constructor","config","appOptions","_users","users","_config","_logger","logger","_app_config","authenticate","user","password","done","userCredentials","debug","err","getUnauthorized","info","adduser","max_users","Object","keys","length","getConflict","name","changePassword","username","newPassword","cb","getNotFound","allow_access","pkg","access","includes","getForbidden","allow_publish","publish","exports","default"],"sources":["../src/Memory.ts"],"sourcesContent":["import { Config, PluginOptions, Callback, PackageAccess, IPluginAuth, RemoteUser, Logger } from '@verdaccio/legacy-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"],"mappings":"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"}
1
+ {"version":3,"file":"Memory.js","names":["_core","require","_debug","_interopRequireDefault","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","getConflict","getForbidden","getNotFound","getUnauthorized","errorUtils","debug","createDebug","Memory","constructor","config","appOptions","_users","users","_config","_logger","logger","_app_config","authenticate","user","password","done","cryptoUtils","mask","userCredentials","err","info","adduser","max_users","keys","length","name","changePassword","username","newPassword","cb","allow_access","pkg","access","includes","allow_publish","publish","exports"],"sources":["../src/Memory.ts"],"sourcesContent":["import { Config, PluginOptions, Callback, PackageAccess, IPluginAuth, RemoteUser, Logger } from '@verdaccio/legacy-types';\nimport {cryptoUtils, errorUtils } from '@verdaccio/core';\nimport createDebug from 'debug';\nconst { getConflict, getForbidden, getNotFound, getUnauthorized } = errorUtils;\n\nconst debug = createDebug('verdaccio:plugin:memory');\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 debug('init memory auth plugin with config: %o', config);\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 debug('authenticate user: %s', user);\n debug('authenticate password: %s', cryptoUtils.mask(password, 5));\n const userCredentials = this._users[user];\n\n if (!userCredentials) {\n debug('user %s does not exist', user);\n this._logger.debug({ user }, 'user @{user} does not exist');\n return done(null, false);\n }\n\n if (password !== userCredentials.password) {\n debug('password invalid for user %s', user);\n const err = getUnauthorized(\"i don't like your password\");\n this._logger.info({ user }, '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 }, 'authentication succeeded for @{user}');\n return done(null, [user]);\n }\n\n public adduser(user: string, password: string, done: Callback): void {\n debug('add user: %s', user);\n if (this._users[user]) {\n this._logger.debug({ user }, 'user @{user} already exist');\n return done(null, true);\n }\n\n if (this._app_config.max_users) {\n debug('max users configured: %d', 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 }, 'user added succeeded for @{user}');\n done(null, user);\n }\n\n public changePassword(username: string, password: string, newPassword: string, cb: Callback): void {\n debug('change password for user: %s', username);\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 }, '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 }, 'user: @{user} has been granted access');\n\n return cb(null, true);\n }\n\n if (!user.name) {\n debug('user is not authenticated, cannot access package');\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 debug('user %s has been granted access to package', user.name);\n this._logger.debug({ user: user.name }, 'user: @{user} has been granted access');\n return cb(null, true);\n }\n\n const err = getForbidden('not allowed to access package');\n\n debug('user %s not allowed to access package', user.name);\n this._logger.debug({ user: user.name }, '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 debug('allow publish for user: %s', user.name);\n if ((pkg.publish && pkg.publish.includes('$all')) || (pkg.publish && pkg.publish.includes('$anonymous'))) {\n this._logger.debug({ user: user.name }, 'user: @{user} has been granted to publish');\n return cb(null, true);\n }\n\n if (!user.name) {\n debug('user is not authenticated, cannot publish package');\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 debug('user %s has been granted to publish package', user.name);\n return cb(null, true);\n }\n\n const err = getForbidden('not allowed to publish package');\n debug('user %s not allowed to publish package', user.name);\n this._logger.debug({ user: user.name }, 'user: @{user} not allowed to publish package');\n\n return cb(err);\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/index.js CHANGED
@@ -11,7 +11,6 @@ Object.defineProperty(exports, "Memory", {
11
11
  });
12
12
  exports.default = void 0;
13
13
  var _Memory = _interopRequireDefault(require("./Memory"));
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
- var _default = _Memory.default;
16
- exports.default = _default;
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ var _default = exports.default = _Memory.default;
17
16
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_Memory","_interopRequireDefault","require","obj","__esModule","default","_default","Memory","exports"],"sources":["../src/index.ts"],"sourcesContent":["import Memory from './Memory';\n\nexport { Memory };\n\nexport default Memory;\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAIfC,eAAM;AAAAC,OAAA,CAAAH,OAAA,GAAAC,QAAA"}
1
+ {"version":3,"file":"index.js","names":["_Memory","_interopRequireDefault","require","e","__esModule","default","_default","exports","Memory"],"sources":["../src/index.ts"],"sourcesContent":["import Memory from './Memory';\n\nexport { Memory };\n\nexport default Memory;\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAIfG,eAAM","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verdaccio-auth-memory",
3
- "version": "10.2.1",
3
+ "version": "10.3.0",
4
4
  "description": "Auth plugin for Verdaccio that keeps users in memory",
5
5
  "keywords": [
6
6
  "verdaccio",
@@ -25,12 +25,14 @@
25
25
  "lib/"
26
26
  ],
27
27
  "engines": {
28
- "node": ">=8"
28
+ "node": ">=18"
29
29
  },
30
30
  "dependencies": {
31
- "@verdaccio/commons-api": "10.2.0"
31
+ "@verdaccio/core": "8.0.0-next-8.19",
32
+ "debug": "4.3.4"
32
33
  },
33
34
  "devDependencies": {
35
+ "@types/debug": "4.1.7",
34
36
  "@verdaccio/legacy-types": "1.0.1"
35
37
  },
36
38
  "funding": {