not-node 6.1.7 → 6.1.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "not-node",
3
- "version": "6.1.7",
3
+ "version": "6.1.9",
4
4
  "description": "node complimentary part for client side notFramework.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -17,6 +17,25 @@ class Identity {
17
17
  token: IdentityProviderToken,
18
18
  };
19
19
 
20
+ static #primaryRoles = [];
21
+ static #secondaryRoles = [];
22
+
23
+ static setPrimaryRoles(list = []) {
24
+ this.#primaryRoles = [...list];
25
+ Object.keys(this.#providers).forEach((itm) => {
26
+ this.#providers[itm].setPrimaryRoles([...list]);
27
+ });
28
+ return this;
29
+ }
30
+
31
+ static setSecondaryRoles(list = []) {
32
+ this.#secondaryRoles = [...list];
33
+ Object.keys(this.#providers).forEach((itm) => {
34
+ this.#providers[itm].setSecondaryRoles([...list]);
35
+ });
36
+ return this;
37
+ }
38
+
20
39
  static of(req) {
21
40
  const Provider = this.providerSelector(req);
22
41
  return new Provider(req);
@@ -23,6 +23,7 @@ module.exports = class notAppIdentity {
23
23
  root: identity.isRoot(),
24
24
  auth: identity.isUser(),
25
25
  role: identity.getRole(),
26
+ primaryRole: identity.getPrimaryRole(),
26
27
  uid: identity.getUserId(),
27
28
  sid: identity.getSessionId(),
28
29
  ip: getIP(req),
@@ -12,6 +12,14 @@ module.exports = class IdentityProviderSession {
12
12
  return this.#options;
13
13
  }
14
14
 
15
+ static setPrimaryRoles(list = []) {
16
+ IdentityProviderSession.#getOptions().primaryRoles = [...list];
17
+ }
18
+
19
+ static setSecondaryRoles(list = []) {
20
+ IdentityProviderSession.#getOptions().secondaryRoles = [...list];
21
+ }
22
+
15
23
  constructor(req) {
16
24
  this.req = req;
17
25
  return this;
@@ -27,9 +35,27 @@ module.exports = class IdentityProviderSession {
27
35
  return req && req.session && req.session.user ? true : false;
28
36
  }
29
37
 
38
+ /**
39
+ * Returns primary user role from request object
40
+ * @return {string} user role
41
+ **/
42
+ getPrimaryRole() {
43
+ const roles = this.getRole();
44
+ for (let role of roles) {
45
+ if (
46
+ IdentityProviderSession.#getOptions().primaryRoles.includes(
47
+ role
48
+ )
49
+ ) {
50
+ return role;
51
+ }
52
+ }
53
+ return CONST.DEFAULT_USER_ROLE_FOR_GUEST;
54
+ }
55
+
30
56
  /**
31
57
  * Returns user role from request object
32
- * @return user role
58
+ * @return {Array<string>} user role
33
59
  **/
34
60
  getRole() {
35
61
  const req = this.req;
@@ -21,6 +21,14 @@ module.exports = class IdentityProviderToken {
21
21
  return this.#options;
22
22
  }
23
23
 
24
+ static setPrimaryRoles(list = []) {
25
+ IdentityProviderToken.#getOptions().primaryRoles = [...list];
26
+ }
27
+
28
+ static setSecondaryRoles(list = []) {
29
+ IdentityProviderToken.#getOptions().secondaryRoles = [...list];
30
+ }
31
+
24
32
  constructor(req) {
25
33
  this.req = req;
26
34
  this.#extractToken(req);
@@ -171,6 +179,22 @@ module.exports = class IdentityProviderToken {
171
179
  return !!this.tokenContent?._id;
172
180
  }
173
181
 
182
+ /**
183
+ * Returns primary user role from request object
184
+ * @return {string} user role
185
+ **/
186
+ getPrimaryRole() {
187
+ const roles = this.getRole();
188
+ for (let role of roles) {
189
+ if (
190
+ IdentityProviderToken.#getOptions().primaryRoles.includes(role)
191
+ ) {
192
+ return role;
193
+ }
194
+ }
195
+ return CONST.DEFAULT_USER_ROLE_FOR_GUEST;
196
+ }
197
+
174
198
  /**
175
199
  * Returns user role from token object
176
200
  * @return user role
@@ -0,0 +1,19 @@
1
+ const log = require("not-log")(module, "not-node//init//identity");
2
+ const notAppIdentity = require("../../identity");
3
+
4
+ module.exports = class InitIdentity {
5
+ async run({ config, options, master, emit }) {
6
+ await emit("identity.pre", { config, options, master });
7
+
8
+ log.info("Setting up user Identity roles...");
9
+
10
+ const roles = config.get("modules.user.roles");
11
+ if (roles) {
12
+ notAppIdentity.identity
13
+ .setPrimaryRoles(roles?.primary || [])
14
+ .setSecondaryRoles(roles?.secondary || []);
15
+ }
16
+
17
+ await emit("identity.post", { config, options, master });
18
+ }
19
+ };
@@ -1,5 +1,6 @@
1
1
  const initEnv = require("./lib/env");
2
2
  const initDB = require("./lib/db");
3
+ const initIdentity = require("./lib/identity");
3
4
  const InitDBRedlock = require("./lib/redlock");
4
5
  const initExpress = require("./lib/express");
5
6
  const initCompression = require("./lib/compression");
@@ -27,6 +28,8 @@ module.exports = [
27
28
  initEnv,
28
29
  //DB access drivers
29
30
  initDB,
31
+ //user Identity roles
32
+ initIdentity,
30
33
  //locking mech based upon ioredis
31
34
  InitDBRedlock,
32
35
  //http(s) server
package/src/metas.js CHANGED
@@ -6,7 +6,7 @@ const Auth = require("./auth"),
6
6
  function getRole(req) {
7
7
  const identity = new notAppIdentity(req);
8
8
  if (identity.isUser()) {
9
- return identity.getRole();
9
+ return identity.getPrimaryRole();
10
10
  } else {
11
11
  return Auth.DEFAULT_USER_ROLE_FOR_GUEST;
12
12
  }
package/.env DELETED
@@ -1,12 +0,0 @@
1
- NOT_NODE_ERROR_KEY=2f721c40-30c5-4f35-9e45-cfea1be33f03
2
- NOT_NODE_ERROR_URL_NODE=https://reporter.local/api/key/collect
3
- NOT_NODE_ERROR_URL_BROWSER=https://reporter.local/api/key/collect
4
- INIT_ROOT_USERNAME=root
5
- INIT_ROOT_EMAIL=admin@appmon.ru
6
- INIT_ROOT_PASSWORD=tester
7
- db__mongoose__uri=mongodb://localhost/reporter?authSource=reporter
8
- db__mongoose__options__user=reporter
9
- db__mongoose__options__pass=developer
10
- db__mongoose__options__db=reporter
11
- db__mongoose__options__host=localhost
12
- db__mongoose__options__authSource=reporter