verdaccio-auth-memory 10.2.2 → 10.3.1
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 +50 -19
- package/lib/Memory.js.map +1 -1
- package/lib/index.js +2 -3
- package/lib/index.js.map +1 -1
- package/package.json +6 -4
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
|
|
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
|
-
}, '
|
|
40
|
+
}, 'user @{user} does not exist');
|
|
21
41
|
return done(null, false);
|
|
22
42
|
}
|
|
23
43
|
if (password !== userCredentials.password) {
|
|
24
|
-
|
|
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
|
-
}, '
|
|
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
|
-
}, '
|
|
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
|
-
}, '
|
|
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 =
|
|
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
|
-
}, '
|
|
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
|
-
}, '
|
|
94
|
+
}, 'user changed password succeeded for @{user}');
|
|
71
95
|
cb(null, user);
|
|
72
96
|
} else {
|
|
73
|
-
const err =
|
|
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
|
-
}, '
|
|
108
|
+
}, 'user: @{user} has been granted access');
|
|
85
109
|
return cb(null, true);
|
|
86
110
|
}
|
|
87
111
|
if (!user.name) {
|
|
88
|
-
|
|
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
|
-
}, '
|
|
123
|
+
}, 'user: @{user} has been granted access');
|
|
98
124
|
return cb(null, true);
|
|
99
125
|
}
|
|
100
|
-
const err =
|
|
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
|
-
}, '
|
|
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
|
-
}, '
|
|
138
|
+
}, 'user: @{user} has been granted to publish');
|
|
111
139
|
return cb(null, true);
|
|
112
140
|
}
|
|
113
141
|
if (!user.name) {
|
|
114
|
-
|
|
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 =
|
|
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
|
-
}, '
|
|
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(
|
|
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","
|
|
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.
|
|
3
|
+
"version": "10.3.1",
|
|
4
4
|
"description": "Auth plugin for Verdaccio that keeps users in memory",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"verdaccio",
|
|
@@ -25,13 +25,15 @@
|
|
|
25
25
|
"lib/"
|
|
26
26
|
],
|
|
27
27
|
"engines": {
|
|
28
|
-
"node": ">=
|
|
28
|
+
"node": ">=18"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@verdaccio/
|
|
31
|
+
"@verdaccio/core": "8.0.0-next-8.21",
|
|
32
|
+
"debug": "4.3.4"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
|
-
"@
|
|
35
|
+
"@types/debug": "4.1.7",
|
|
36
|
+
"@verdaccio/legacy-types": "1.0.2"
|
|
35
37
|
},
|
|
36
38
|
"funding": {
|
|
37
39
|
"type": "opencollective",
|