beech-api 3.9.0-beta.9-rc → 3.9.75

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.
Files changed (59) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1715 -1649
  3. package/index.js +2 -2
  4. package/package.json +92 -84
  5. package/packages/cli/beech +9 -10
  6. package/packages/cli/bin/beech-app.js +390 -390
  7. package/packages/cli/bin/beech-service.js +263 -170
  8. package/packages/cli/core/auth/Credentials.js +174 -174
  9. package/packages/cli/core/auth/Passport.js +664 -664
  10. package/packages/cli/core/auth/_Request.js +12 -12
  11. package/packages/cli/core/configure/_gitignore +16 -15
  12. package/packages/cli/core/configure/_sequelizerc +9 -9
  13. package/packages/cli/core/configure/app.config-basic.js +55 -55
  14. package/packages/cli/core/configure/app.config-sequelize.js +88 -88
  15. package/packages/cli/core/configure/beech.config.js +9 -9
  16. package/packages/cli/core/configure/global.config-basic.js +8 -8
  17. package/packages/cli/core/configure/global.config-sequelize.js +8 -8
  18. package/packages/cli/core/configure/jest.config.js +6 -6
  19. package/packages/cli/core/configure/jsconfig.json +8 -7
  20. package/packages/cli/core/configure/passport.config.js +97 -97
  21. package/packages/cli/core/databases/mysql.js +94 -95
  22. package/packages/cli/core/databases/sequelize.js +187 -188
  23. package/packages/cli/core/databases/test.js +250 -255
  24. package/packages/cli/core/file-walk/file-walk.js +35 -35
  25. package/packages/cli/core/generator/_endpoints +15 -15
  26. package/packages/cli/core/generator/_endpoints_basic +42 -42
  27. package/packages/cli/core/generator/_help +26 -18
  28. package/packages/cli/core/generator/_help_create +10 -10
  29. package/packages/cli/core/generator/_help_service +10 -10
  30. package/packages/cli/core/generator/_helpers +9 -9
  31. package/packages/cli/core/generator/_helpers_basic +22 -22
  32. package/packages/cli/core/generator/_models +6 -6
  33. package/packages/cli/core/generator/_models_basic +13 -13
  34. package/packages/cli/core/generator/_package +23 -19
  35. package/packages/cli/core/generator/_scheduler +32 -32
  36. package/packages/cli/core/generator/_spec +29 -29
  37. package/packages/cli/core/generator/index.js +1081 -992
  38. package/packages/cli/core/helpers/2fa.js +106 -106
  39. package/packages/cli/core/helpers/math.js +115 -115
  40. package/packages/cli/core/helpers/poolEntity.js +103 -103
  41. package/packages/cli/core/index.js +264 -266
  42. package/packages/cli/core/middleware/express/duplicateRequest.js +16 -16
  43. package/packages/cli/core/middleware/express/jwtCheckAllow.js +85 -85
  44. package/packages/cli/core/middleware/express/rateLimit.js +29 -29
  45. package/packages/cli/core/middleware/express/slowDown.js +2 -2
  46. package/packages/cli/core/middleware/index.js +6 -6
  47. package/packages/cli/core/middleware/origin/guard/advance.js +75 -75
  48. package/packages/cli/core/middleware/origin/whitelist/cors.js +94 -94
  49. package/packages/cli/core/services/http.express.js +481 -481
  50. package/packages/cli/core/test/check-node.js +21 -21
  51. package/packages/cli/core/test/utils.js +7 -7
  52. package/packages/cli/entry +10 -0
  53. package/packages/lib/index.js +6 -6
  54. package/packages/lib/src/endpoint.js +947 -885
  55. package/packages/lib/src/guard.js +60 -60
  56. package/packages/lib/src/salt.js +3 -3
  57. package/packages/lib/src/schema.js +96 -96
  58. package/packages/lib/src/specificExpress.js +7 -7
  59. package/packages/lib/src/user.js +271 -271
@@ -1,174 +1,174 @@
1
- const passport = require("passport");
2
- const fs = require("fs");
3
- const { checkRoleMiddleware } = require("../middleware/express/jwtCheckAllow");
4
- const passport_config_file = appRoot + "/passport.config.js";
5
- var passport_config;
6
- if (fs.existsSync(passport_config_file)) {
7
- passport_config = require(passport_config_file);
8
- }
9
-
10
- const byPassCredentials = (options, _res = {}, _next = () => {}) => {
11
- if(!options.length) {
12
- if(passport_config.jwt_broken_role ? passport_config.jwt_broken_role.length > 0 : false) {
13
- // CASE: jwt_broken_role DEFUALT is set
14
- return credentials(options, _res, () => {
15
- return checkRoleMiddleware(passport_config.jwt_broken_role)(options, _res, _next);
16
- });
17
- } else {
18
- if(!Object.keys(options).length) {
19
- return [credentials];
20
- } else {
21
- if("headers" in options) {
22
- // CASE: Only Credentials
23
- return [credentials(options, _res, _next)];
24
- } else {
25
- // CASE: jwt_broken_role DEFUALT is not set
26
- return [credentials];
27
- }
28
- }
29
- }
30
- } else {
31
- // CASE: options Credentials is set
32
- return [credentials, checkRoleMiddleware(options)];
33
- }
34
- }
35
-
36
- const credentials = (req, res, next) => {
37
- if (passport_config.jwt_allow === true) {
38
- const auth_endpoint = (passport_config.auth_endpoint) ? (passport_config.auth_endpoint[ 0 ] === "/" ? passport_config.auth_endpoint : "/" + passport_config.auth_endpoint) : "/authentication";
39
- const slashOneIsHash = auth_endpoint.split("/")[1];
40
- if(req.params === undefined) {
41
- // Request is not valid
42
- console.log("\n REQUEST|OPTION  Error: Request is not valid, missing params.");
43
- return;
44
- } else {
45
- // Check first HASH equal Authentication
46
- if(slashOneIsHash == req.params.hash) {
47
- // Bypass authentication for auth endpoint
48
- return next();
49
- } else {
50
- return passport.authenticate("jwt", {
51
- session: false,
52
- }, (err, user, info) => {
53
- // error check
54
- if (err) {
55
- console.log(err, info);
56
- return res.status(401).json({
57
- code: 401,
58
- error: "UNAUTHORIZED",
59
- message: {
60
- name: "WrongTokenError",
61
- message: "token error.",
62
- },
63
- /* dev: { err, info }, */ // for dev info
64
- });
65
- } else {
66
- // anything token check
67
- if (!user) {
68
- if (info) {
69
- if (info.name == "TokenExpiredError") {
70
- return res.status(401).json({
71
- code: 401,
72
- status: "TOKEN_EXPIRED",
73
- message: info,
74
- });
75
- } else if (info.name == "Error") {
76
- return res.status(401).json({
77
- code: 401,
78
- status: "NO_AUTH_TOKEN",
79
- message: {
80
- name: "NoTokenError",
81
- message: "No auth token",
82
- },
83
- });
84
- } else if (info.name == "SyntaxError") {
85
- return res.status(401).json({
86
- code: 401,
87
- status: "PAYLOAD_SYNTAX_ERROR",
88
- message: {
89
- name: "SyntaxError",
90
- message: "Unexpected token < in JSON at position 0",
91
- },
92
- });
93
- } else if (info.name == "JsonWebTokenError") {
94
- return res.status(401).json({
95
- code: 401,
96
- status: "INVALID_TOKEN",
97
- message: {
98
- name: "JsonWebTokenError",
99
- message: "invalid token.",
100
- },
101
- });
102
- } else {
103
- return res.status(401).json({
104
- code: 401,
105
- status: "OTHER_TOKEN_ERR",
106
- message: {
107
- name: "OtherTokenError",
108
- message: String(info),
109
- },
110
- });
111
- }
112
- } else {
113
- return res.status(401).json({
114
- code: 401,
115
- status: "UNAUTHORIZED_USER",
116
- message: info || {
117
- name: "TokenError",
118
- message: String(info),
119
- },
120
- });
121
- }
122
- } else {
123
- // Perfectly user jwt
124
- return next();
125
- }
126
- }
127
- }
128
- )(req, res, next);
129
- }
130
- }
131
- } else {
132
- // Bypass authentication
133
- return next();
134
- }
135
- }
136
-
137
- const credentialsGuard = (req, res, next) => {
138
- checkAppKey(req, res, (err) => {
139
- if (!err) {
140
- // Perfectly
141
- next();
142
- } else {
143
- // Bad Request
144
- return res.status(400).json({
145
- code: 400,
146
- status: 'BAD_REQUEST',
147
- message: "Bad request.",
148
- info: err,
149
- });
150
- }
151
- });
152
- }
153
-
154
- function checkAppKey(req, res, cb) {
155
- if (_passport_config_.app_key_allow) {
156
- if (req.headers.app_key) {
157
- if (_config_.main_config.app_key == req.headers.app_key) {
158
- // Perfectly
159
- cb(null, true);
160
- } else {
161
- // Wrong App key
162
- cb({ status: "BAD_VALUE", message: "Bad with wrong key." }, false);
163
- }
164
- } else {
165
- // No App key
166
- cb({ status: "BAD_ENTITY", message: "Bad with app entity key." }, false);
167
- }
168
- } else {
169
- // App key not allow, bypass
170
- cb(null, true);
171
- }
172
- }
173
-
174
- module.exports = { byPassCredentials, credentials, credentialsGuard };
1
+ const passport = require("passport");
2
+ const fs = require("fs");
3
+ const { checkRoleMiddleware } = require("../middleware/express/jwtCheckAllow");
4
+ const passport_config_file = appRoot + "/passport.config.js";
5
+ var passport_config;
6
+ if (fs.existsSync(passport_config_file)) {
7
+ passport_config = require(passport_config_file);
8
+ }
9
+
10
+ const byPassCredentials = (options, _res = {}, _next = () => {}) => {
11
+ if(!options.length) {
12
+ if(passport_config.jwt_broken_role ? passport_config.jwt_broken_role.length > 0 : false) {
13
+ // CASE: jwt_broken_role DEFUALT is set
14
+ return credentials(options, _res, () => {
15
+ return checkRoleMiddleware(passport_config.jwt_broken_role)(options, _res, _next);
16
+ });
17
+ } else {
18
+ if(!Object.keys(options).length) {
19
+ return [credentials];
20
+ } else {
21
+ if("headers" in options) {
22
+ // CASE: Only Credentials
23
+ return [credentials(options, _res, _next)];
24
+ } else {
25
+ // CASE: jwt_broken_role DEFUALT is not set
26
+ return [credentials];
27
+ }
28
+ }
29
+ }
30
+ } else {
31
+ // CASE: options Credentials is set
32
+ return [credentials, checkRoleMiddleware(options)];
33
+ }
34
+ }
35
+
36
+ const credentials = (req, res, next) => {
37
+ if (passport_config.jwt_allow === true) {
38
+ const auth_endpoint = (passport_config.auth_endpoint) ? (passport_config.auth_endpoint[ 0 ] === "/" ? passport_config.auth_endpoint : "/" + passport_config.auth_endpoint) : "/authentication";
39
+ const slashOneIsHash = auth_endpoint.split("/")[1];
40
+ if(req.params === undefined) {
41
+ // Request is not valid
42
+ console.log("\n REQUEST|OPTION  Error: Request is not valid, missing params.");
43
+ return;
44
+ } else {
45
+ // Check first HASH equal Authentication
46
+ if(slashOneIsHash == req.params.hash) {
47
+ // Bypass authentication for auth endpoint
48
+ return next();
49
+ } else {
50
+ return passport.authenticate("jwt", {
51
+ session: false,
52
+ }, (err, user, info) => {
53
+ // error check
54
+ if (err) {
55
+ console.log(err, info);
56
+ return res.status(401).json({
57
+ code: 401,
58
+ error: "UNAUTHORIZED",
59
+ message: {
60
+ name: "WrongTokenError",
61
+ message: "token error.",
62
+ },
63
+ /* dev: { err, info }, */ // for dev info
64
+ });
65
+ } else {
66
+ // anything token check
67
+ if (!user) {
68
+ if (info) {
69
+ if (info.name == "TokenExpiredError") {
70
+ return res.status(401).json({
71
+ code: 401,
72
+ status: "TOKEN_EXPIRED",
73
+ message: info,
74
+ });
75
+ } else if (info.name == "Error") {
76
+ return res.status(401).json({
77
+ code: 401,
78
+ status: "NO_AUTH_TOKEN",
79
+ message: {
80
+ name: "NoTokenError",
81
+ message: "No auth token",
82
+ },
83
+ });
84
+ } else if (info.name == "SyntaxError") {
85
+ return res.status(401).json({
86
+ code: 401,
87
+ status: "PAYLOAD_SYNTAX_ERROR",
88
+ message: {
89
+ name: "SyntaxError",
90
+ message: "Unexpected token < in JSON at position 0",
91
+ },
92
+ });
93
+ } else if (info.name == "JsonWebTokenError") {
94
+ return res.status(401).json({
95
+ code: 401,
96
+ status: "INVALID_TOKEN",
97
+ message: {
98
+ name: "JsonWebTokenError",
99
+ message: "invalid token.",
100
+ },
101
+ });
102
+ } else {
103
+ return res.status(401).json({
104
+ code: 401,
105
+ status: "OTHER_TOKEN_ERR",
106
+ message: {
107
+ name: "OtherTokenError",
108
+ message: String(info),
109
+ },
110
+ });
111
+ }
112
+ } else {
113
+ return res.status(401).json({
114
+ code: 401,
115
+ status: "UNAUTHORIZED_USER",
116
+ message: info || {
117
+ name: "TokenError",
118
+ message: String(info),
119
+ },
120
+ });
121
+ }
122
+ } else {
123
+ // Perfectly user jwt
124
+ return next();
125
+ }
126
+ }
127
+ }
128
+ )(req, res, next);
129
+ }
130
+ }
131
+ } else {
132
+ // Bypass authentication
133
+ return next();
134
+ }
135
+ }
136
+
137
+ const credentialsGuard = (req, res, next) => {
138
+ checkAppKey(req, res, (err) => {
139
+ if (!err) {
140
+ // Perfectly
141
+ next();
142
+ } else {
143
+ // Bad Request
144
+ return res.status(400).json({
145
+ code: 400,
146
+ status: 'BAD_REQUEST',
147
+ message: "Bad request.",
148
+ info: err,
149
+ });
150
+ }
151
+ });
152
+ }
153
+
154
+ function checkAppKey(req, res, cb) {
155
+ if (_passport_config_.app_key_allow) {
156
+ if (req.headers.app_key) {
157
+ if (_config_.main_config.app_key == req.headers.app_key) {
158
+ // Perfectly
159
+ cb(null, true);
160
+ } else {
161
+ // Wrong App key
162
+ cb({ status: "BAD_VALUE", message: "Bad with wrong key." }, false);
163
+ }
164
+ } else {
165
+ // No App key
166
+ cb({ status: "BAD_ENTITY", message: "Bad with app entity key." }, false);
167
+ }
168
+ } else {
169
+ // App key not allow, bypass
170
+ cb(null, true);
171
+ }
172
+ }
173
+
174
+ module.exports = { byPassCredentials, credentials, credentialsGuard };