@saltcorn/server 0.6.1-beta.3 → 0.6.2-beta.2
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/app.js +9 -13
- package/auth/admin.js +5 -22
- package/auth/index.js +15 -2
- package/auth/roleadmin.js +6 -16
- package/auth/routes.js +23 -52
- package/index.js +17 -1
- package/locales/en.json +20 -1
- package/markup/admin.js +17 -0
- package/markup/index.js +14 -1
- package/package.json +22 -9
- package/public/saltcorn.css +2 -2
- package/public/saltcorn.js +12 -0
- package/restart_watcher.js +155 -0
- package/routes/actions.js +1 -15
- package/routes/admin.js +6 -23
- package/routes/api.js +51 -60
- package/routes/config.js +0 -1
- package/routes/crashlog.js +1 -4
- package/routes/delete.js +1 -2
- package/routes/edit.js +1 -2
- package/routes/eventlog.js +2 -15
- package/routes/events.js +0 -1
- package/routes/fields.js +14 -22
- package/routes/files.js +144 -64
- package/routes/homepage.js +131 -105
- package/routes/index.js +37 -0
- package/routes/infoarch.js +12 -19
- package/routes/library.js +1 -4
- package/routes/list.js +2 -5
- package/routes/menu.js +6 -8
- package/routes/packs.js +2 -8
- package/routes/page.js +7 -8
- package/routes/pageedit.js +18 -30
- package/routes/plugins.js +21 -34
- package/routes/scapi.js +155 -184
- package/routes/search.js +6 -10
- package/routes/settings.js +1 -2
- package/routes/tables.js +1 -22
- package/routes/tenant.js +1 -9
- package/routes/utils.js +19 -19
- package/routes/view.js +11 -9
- package/routes/viewedit.js +18 -29
- package/s3storage.js +167 -0
- package/serve.js +10 -2
- package/wrapper.js +3 -0
package/routes/plugins.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Plugin Handler for Admin zone
|
|
3
|
-
* @category server
|
|
3
|
+
* @category server
|
|
4
4
|
* @module routes/plugins
|
|
5
5
|
* @subcategory routes
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
const Router = require("express-promise-router");
|
|
9
|
-
const {
|
|
9
|
+
const { isAdmin, error_catcher } = require("./utils.js");
|
|
10
10
|
const {
|
|
11
11
|
mkTable,
|
|
12
12
|
renderForm,
|
|
@@ -189,8 +189,8 @@ const get_store_items = async () => {
|
|
|
189
189
|
};
|
|
190
190
|
|
|
191
191
|
/**
|
|
192
|
-
* @param {object} req
|
|
193
|
-
* @param {object} row
|
|
192
|
+
* @param {object} req
|
|
193
|
+
* @param {object} row
|
|
194
194
|
* @returns {a|string}
|
|
195
195
|
*/
|
|
196
196
|
const cfg_link = (req, row) => {
|
|
@@ -219,8 +219,8 @@ const cfg_link = (req, row) => {
|
|
|
219
219
|
};
|
|
220
220
|
|
|
221
221
|
/**
|
|
222
|
-
* @param {object} req
|
|
223
|
-
* @param {object} row
|
|
222
|
+
* @param {object} req
|
|
223
|
+
* @param {object} row
|
|
224
224
|
* @returns {a}
|
|
225
225
|
*/
|
|
226
226
|
const info_link = (req, row) =>
|
|
@@ -235,15 +235,15 @@ const info_link = (req, row) =>
|
|
|
235
235
|
);
|
|
236
236
|
|
|
237
237
|
/**
|
|
238
|
-
* @param {string} title
|
|
238
|
+
* @param {string} title
|
|
239
239
|
* @returns {span}
|
|
240
240
|
*/
|
|
241
|
-
|
|
241
|
+
const badge = (title) =>
|
|
242
242
|
span({ class: "badge badge-secondary plugin-store" }, title);
|
|
243
243
|
|
|
244
244
|
/**
|
|
245
|
-
*
|
|
246
|
-
* @param {object} req
|
|
245
|
+
*
|
|
246
|
+
* @param {object} req
|
|
247
247
|
* @returns {function}
|
|
248
248
|
*/
|
|
249
249
|
const store_item_html = (req) => (item) => ({
|
|
@@ -334,7 +334,7 @@ const store_item_html = (req) => (item) => ({
|
|
|
334
334
|
});
|
|
335
335
|
|
|
336
336
|
/**
|
|
337
|
-
* @param {object} req
|
|
337
|
+
* @param {object} req
|
|
338
338
|
* @returns {ul}
|
|
339
339
|
*/
|
|
340
340
|
const storeNavPills = (req) => {
|
|
@@ -365,8 +365,8 @@ const storeNavPills = (req) => {
|
|
|
365
365
|
};
|
|
366
366
|
|
|
367
367
|
/**
|
|
368
|
-
* @param {object[]} items
|
|
369
|
-
* @param {object} query
|
|
368
|
+
* @param {object[]} items
|
|
369
|
+
* @param {object} query
|
|
370
370
|
* @returns {object[]}
|
|
371
371
|
*/
|
|
372
372
|
const filter_items = (items, query) => {
|
|
@@ -376,8 +376,8 @@ const filter_items = (items, query) => {
|
|
|
376
376
|
};
|
|
377
377
|
|
|
378
378
|
/**
|
|
379
|
-
* @param {string} s
|
|
380
|
-
* @param {string} q
|
|
379
|
+
* @param {string} s
|
|
380
|
+
* @param {string} q
|
|
381
381
|
* @returns {boolean}
|
|
382
382
|
*/
|
|
383
383
|
const match_string = (s, q) => {
|
|
@@ -387,7 +387,7 @@ const match_string = (s, q) => {
|
|
|
387
387
|
|
|
388
388
|
/**
|
|
389
389
|
* @param {string} p
|
|
390
|
-
* @param {string} q
|
|
390
|
+
* @param {string} q
|
|
391
391
|
* @returns {boolean}
|
|
392
392
|
*/
|
|
393
393
|
const satisfy_q = (p, q) => {
|
|
@@ -395,8 +395,8 @@ const satisfy_q = (p, q) => {
|
|
|
395
395
|
};
|
|
396
396
|
|
|
397
397
|
/**
|
|
398
|
-
* @param {object[]} items
|
|
399
|
-
* @param {object} query
|
|
398
|
+
* @param {object[]} items
|
|
399
|
+
* @param {object} query
|
|
400
400
|
* @returns {object[]}
|
|
401
401
|
*/
|
|
402
402
|
const filter_items_set = (items, query) => {
|
|
@@ -415,7 +415,7 @@ const filter_items_set = (items, query) => {
|
|
|
415
415
|
};
|
|
416
416
|
|
|
417
417
|
/**
|
|
418
|
-
* @param {object} req
|
|
418
|
+
* @param {object} req
|
|
419
419
|
* @returns {div}
|
|
420
420
|
*/
|
|
421
421
|
const store_actions_dropdown = (req) =>
|
|
@@ -483,8 +483,8 @@ const store_actions_dropdown = (req) =>
|
|
|
483
483
|
);
|
|
484
484
|
|
|
485
485
|
/**
|
|
486
|
-
* @param {object[]} items
|
|
487
|
-
* @param {object} req
|
|
486
|
+
* @param {object[]} items
|
|
487
|
+
* @param {object} req
|
|
488
488
|
* @returns {object}
|
|
489
489
|
*/
|
|
490
490
|
const plugin_store_html = (items, req) => {
|
|
@@ -525,7 +525,6 @@ const plugin_store_html = (items, req) => {
|
|
|
525
525
|
*/
|
|
526
526
|
router.get(
|
|
527
527
|
"/",
|
|
528
|
-
setTenant,
|
|
529
528
|
isAdmin,
|
|
530
529
|
error_catcher(async (req, res) => {
|
|
531
530
|
const items = await get_store_items();
|
|
@@ -542,7 +541,6 @@ router.get(
|
|
|
542
541
|
*/
|
|
543
542
|
router.get(
|
|
544
543
|
"/configure/:name",
|
|
545
|
-
setTenant,
|
|
546
544
|
isAdmin,
|
|
547
545
|
error_catcher(async (req, res) => {
|
|
548
546
|
const { name } = req.params;
|
|
@@ -575,7 +573,6 @@ router.get(
|
|
|
575
573
|
*/
|
|
576
574
|
router.post(
|
|
577
575
|
"/configure/:name",
|
|
578
|
-
setTenant,
|
|
579
576
|
isAdmin,
|
|
580
577
|
error_catcher(async (req, res) => {
|
|
581
578
|
const { name } = req.params;
|
|
@@ -617,7 +614,6 @@ router.post(
|
|
|
617
614
|
*/
|
|
618
615
|
router.get(
|
|
619
616
|
"/new",
|
|
620
|
-
setTenant,
|
|
621
617
|
isAdmin,
|
|
622
618
|
error_catcher(async (req, res) => {
|
|
623
619
|
res.sendWrap(req.__(`New Plugin`), {
|
|
@@ -648,7 +644,6 @@ router.get(
|
|
|
648
644
|
*/
|
|
649
645
|
router.get(
|
|
650
646
|
"/public/:plugin/*",
|
|
651
|
-
setTenant,
|
|
652
647
|
error_catcher(async (req, res) => {
|
|
653
648
|
const { plugin } = req.params;
|
|
654
649
|
const filepath = req.params[0];
|
|
@@ -674,7 +669,6 @@ router.get(
|
|
|
674
669
|
*/
|
|
675
670
|
router.get(
|
|
676
671
|
"/pubdeps/:plugin/:dependency/:version/*",
|
|
677
|
-
setTenant,
|
|
678
672
|
error_catcher(async (req, res) => {
|
|
679
673
|
const { plugin, dependency } = req.params;
|
|
680
674
|
const filepath = req.params[0];
|
|
@@ -707,7 +701,6 @@ router.get(
|
|
|
707
701
|
*/
|
|
708
702
|
router.get(
|
|
709
703
|
"/info/:name",
|
|
710
|
-
setTenant,
|
|
711
704
|
isAdmin,
|
|
712
705
|
error_catcher(async (req, res) => {
|
|
713
706
|
const { name } = req.params;
|
|
@@ -816,7 +809,6 @@ router.get(
|
|
|
816
809
|
*/
|
|
817
810
|
router.get(
|
|
818
811
|
"/refresh",
|
|
819
|
-
setTenant,
|
|
820
812
|
isAdmin,
|
|
821
813
|
error_catcher(async (req, res) => {
|
|
822
814
|
await getState().deleteConfig(
|
|
@@ -840,7 +832,6 @@ router.get(
|
|
|
840
832
|
*/
|
|
841
833
|
router.get(
|
|
842
834
|
"/upgrade",
|
|
843
|
-
setTenant,
|
|
844
835
|
isAdmin,
|
|
845
836
|
error_catcher(async (req, res) => {
|
|
846
837
|
const installed_plugins = await Plugin.find({});
|
|
@@ -861,7 +852,6 @@ router.get(
|
|
|
861
852
|
*/
|
|
862
853
|
router.get(
|
|
863
854
|
"/upgrade-plugin/:name",
|
|
864
|
-
setTenant,
|
|
865
855
|
isAdmin,
|
|
866
856
|
error_catcher(async (req, res) => {
|
|
867
857
|
const { name } = req.params;
|
|
@@ -882,7 +872,6 @@ router.get(
|
|
|
882
872
|
*/
|
|
883
873
|
router.post(
|
|
884
874
|
"/",
|
|
885
|
-
setTenant,
|
|
886
875
|
isAdmin,
|
|
887
876
|
error_catcher(async (req, res) => {
|
|
888
877
|
const plugin = new Plugin(req.body);
|
|
@@ -918,7 +907,6 @@ router.post(
|
|
|
918
907
|
*/
|
|
919
908
|
router.post(
|
|
920
909
|
"/delete/:name",
|
|
921
|
-
setTenant,
|
|
922
910
|
isAdmin,
|
|
923
911
|
error_catcher(async (req, res) => {
|
|
924
912
|
const { name } = req.params;
|
|
@@ -954,7 +942,6 @@ router.post(
|
|
|
954
942
|
*/
|
|
955
943
|
router.post(
|
|
956
944
|
"/install/:name",
|
|
957
|
-
setTenant,
|
|
958
945
|
isAdmin,
|
|
959
946
|
error_catcher(async (req, res) => {
|
|
960
947
|
const { name } = req.params;
|
package/routes/scapi.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
/** @type {module:express-promise-router} */
|
|
10
10
|
const Router = require("express-promise-router");
|
|
11
11
|
//const db = require("@saltcorn/data/db");
|
|
12
|
-
const {
|
|
12
|
+
const { error_catcher } = require("./utils.js");
|
|
13
13
|
const Table = require("@saltcorn/data/models/table");
|
|
14
14
|
const View = require("@saltcorn/data/models/view");
|
|
15
15
|
const Page = require("@saltcorn/data/models/page");
|
|
@@ -43,18 +43,17 @@ module.exports = router;
|
|
|
43
43
|
* @param {object} user user based on access token
|
|
44
44
|
* @returns {boolean}
|
|
45
45
|
*/
|
|
46
|
-
function accessAllowedRead(req, user){
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
function accessAllowedRead(req, user) {
|
|
47
|
+
const role = req.isAuthenticated()
|
|
48
|
+
? req.user.role_id
|
|
49
|
+
: user && user.role_id
|
|
50
|
+
? user.role_id
|
|
51
|
+
: 10;
|
|
52
|
+
|
|
53
|
+
if (role === 1) return true;
|
|
54
|
+
return false;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
|
|
58
57
|
// todo add paging
|
|
59
58
|
// todo more granular access rights for api. Currently only admin can call this api.
|
|
60
59
|
// todo add support of fields
|
|
@@ -66,25 +65,22 @@ function accessAllowedRead(req, user){
|
|
|
66
65
|
* @function
|
|
67
66
|
*/
|
|
68
67
|
router.get(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
)(req, res, next);
|
|
87
|
-
})
|
|
68
|
+
"/sc_tables/",
|
|
69
|
+
error_catcher(async (req, res, next) => {
|
|
70
|
+
await passport.authenticate(
|
|
71
|
+
"api-bearer",
|
|
72
|
+
{ session: false },
|
|
73
|
+
async function (err, user, info) {
|
|
74
|
+
if (accessAllowedRead(req, user)) {
|
|
75
|
+
const tables = await Table.find({});
|
|
76
|
+
|
|
77
|
+
res.json({ success: tables });
|
|
78
|
+
} else {
|
|
79
|
+
res.status(401).json({ error: req.__("Not authorized") });
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
)(req, res, next);
|
|
83
|
+
})
|
|
88
84
|
);
|
|
89
85
|
|
|
90
86
|
// todo add paging
|
|
@@ -97,28 +93,24 @@ router.get(
|
|
|
97
93
|
* @function
|
|
98
94
|
*/
|
|
99
95
|
router.get(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
)(req, res, next);
|
|
118
|
-
})
|
|
96
|
+
"/sc_views/",
|
|
97
|
+
error_catcher(async (req, res, next) => {
|
|
98
|
+
await passport.authenticate(
|
|
99
|
+
"api-bearer",
|
|
100
|
+
{ session: false },
|
|
101
|
+
async function (err, user, info) {
|
|
102
|
+
if (accessAllowedRead(req, user)) {
|
|
103
|
+
const views = await View.find({});
|
|
104
|
+
|
|
105
|
+
res.json({ success: views });
|
|
106
|
+
} else {
|
|
107
|
+
res.status(401).json({ error: req.__("Not authorized") });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
)(req, res, next);
|
|
111
|
+
})
|
|
119
112
|
);
|
|
120
113
|
|
|
121
|
-
|
|
122
114
|
// todo add paging
|
|
123
115
|
// todo more granular access rights to api. Currently only admin can call this api.
|
|
124
116
|
/**
|
|
@@ -129,25 +121,22 @@ router.get(
|
|
|
129
121
|
* @function
|
|
130
122
|
*/
|
|
131
123
|
router.get(
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
)(req, res, next);
|
|
150
|
-
})
|
|
124
|
+
"/sc_pages/",
|
|
125
|
+
error_catcher(async (req, res, next) => {
|
|
126
|
+
await passport.authenticate(
|
|
127
|
+
"api-bearer",
|
|
128
|
+
{ session: false },
|
|
129
|
+
async function (err, user, info) {
|
|
130
|
+
if (accessAllowedRead(req, user)) {
|
|
131
|
+
const pages = await Page.find({});
|
|
132
|
+
|
|
133
|
+
res.json({ success: pages });
|
|
134
|
+
} else {
|
|
135
|
+
res.status(401).json({ error: req.__("Not authorized") });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
)(req, res, next);
|
|
139
|
+
})
|
|
151
140
|
);
|
|
152
141
|
|
|
153
142
|
// todo add paging
|
|
@@ -160,25 +149,22 @@ router.get(
|
|
|
160
149
|
* @function
|
|
161
150
|
*/
|
|
162
151
|
router.get(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
)(req, res, next);
|
|
181
|
-
})
|
|
152
|
+
"/sc_files/",
|
|
153
|
+
error_catcher(async (req, res, next) => {
|
|
154
|
+
await passport.authenticate(
|
|
155
|
+
"api-bearer",
|
|
156
|
+
{ session: false },
|
|
157
|
+
async function (err, user, info) {
|
|
158
|
+
if (accessAllowedRead(req, user)) {
|
|
159
|
+
const files = await File.find({});
|
|
160
|
+
|
|
161
|
+
res.json({ success: files });
|
|
162
|
+
} else {
|
|
163
|
+
res.status(401).json({ error: req.__("Not authorized") });
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
)(req, res, next);
|
|
167
|
+
})
|
|
182
168
|
);
|
|
183
169
|
|
|
184
170
|
// todo add paging
|
|
@@ -191,25 +177,22 @@ router.get(
|
|
|
191
177
|
* @function
|
|
192
178
|
*/
|
|
193
179
|
router.get(
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
211
|
-
)(req, res, next);
|
|
212
|
-
})
|
|
180
|
+
"/sc_triggers/",
|
|
181
|
+
error_catcher(async (req, res, next) => {
|
|
182
|
+
await passport.authenticate(
|
|
183
|
+
"api-bearer",
|
|
184
|
+
{ session: false },
|
|
185
|
+
async function (err, user, info) {
|
|
186
|
+
if (accessAllowedRead(req, user)) {
|
|
187
|
+
const triggers = await Trigger.find({});
|
|
188
|
+
|
|
189
|
+
res.json({ success: triggers });
|
|
190
|
+
} else {
|
|
191
|
+
res.status(401).json({ error: req.__("Not authorized") });
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
)(req, res, next);
|
|
195
|
+
})
|
|
213
196
|
);
|
|
214
197
|
|
|
215
198
|
// todo add paging
|
|
@@ -222,25 +205,22 @@ router.get(
|
|
|
222
205
|
* @function
|
|
223
206
|
*/
|
|
224
207
|
router.get(
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
}
|
|
242
|
-
)(req, res, next);
|
|
243
|
-
})
|
|
208
|
+
"/sc_roles/",
|
|
209
|
+
error_catcher(async (req, res, next) => {
|
|
210
|
+
await passport.authenticate(
|
|
211
|
+
"api-bearer",
|
|
212
|
+
{ session: false },
|
|
213
|
+
async function (err, user, info) {
|
|
214
|
+
if (accessAllowedRead(req, user)) {
|
|
215
|
+
const roles = await Role.find({});
|
|
216
|
+
|
|
217
|
+
res.json({ success: roles });
|
|
218
|
+
} else {
|
|
219
|
+
res.status(401).json({ error: req.__("Not authorized") });
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
)(req, res, next);
|
|
223
|
+
})
|
|
244
224
|
);
|
|
245
225
|
|
|
246
226
|
// todo add paging
|
|
@@ -253,25 +233,22 @@ router.get(
|
|
|
253
233
|
* @function
|
|
254
234
|
*/
|
|
255
235
|
router.get(
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}
|
|
273
|
-
)(req, res, next);
|
|
274
|
-
})
|
|
236
|
+
"/sc_tenants/",
|
|
237
|
+
error_catcher(async (req, res, next) => {
|
|
238
|
+
await passport.authenticate(
|
|
239
|
+
"api-bearer",
|
|
240
|
+
{ session: false },
|
|
241
|
+
async function (err, user, info) {
|
|
242
|
+
if (accessAllowedRead(req, user)) {
|
|
243
|
+
const tenants = await Tenant.getAllTenants();
|
|
244
|
+
|
|
245
|
+
res.json({ success: tenants });
|
|
246
|
+
} else {
|
|
247
|
+
res.status(401).json({ error: req.__("Not authorized") });
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
)(req, res, next);
|
|
251
|
+
})
|
|
275
252
|
);
|
|
276
253
|
|
|
277
254
|
// todo add paging
|
|
@@ -284,25 +261,22 @@ router.get(
|
|
|
284
261
|
* @function
|
|
285
262
|
*/
|
|
286
263
|
router.get(
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
}
|
|
304
|
-
)(req, res, next);
|
|
305
|
-
})
|
|
264
|
+
"/sc_plugins/",
|
|
265
|
+
error_catcher(async (req, res, next) => {
|
|
266
|
+
await passport.authenticate(
|
|
267
|
+
"api-bearer",
|
|
268
|
+
{ session: false },
|
|
269
|
+
async function (err, user, info) {
|
|
270
|
+
if (accessAllowedRead(req, user)) {
|
|
271
|
+
const plugins = await Plugin.find({});
|
|
272
|
+
|
|
273
|
+
res.json({ success: plugins });
|
|
274
|
+
} else {
|
|
275
|
+
res.status(401).json({ error: req.__("Not authorized") });
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
)(req, res, next);
|
|
279
|
+
})
|
|
306
280
|
);
|
|
307
281
|
|
|
308
282
|
// todo add paging
|
|
@@ -315,23 +289,20 @@ router.get(
|
|
|
315
289
|
* @function
|
|
316
290
|
*/
|
|
317
291
|
router.get(
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
)(req, res, next);
|
|
336
|
-
})
|
|
337
|
-
);
|
|
292
|
+
"/sc_config/",
|
|
293
|
+
error_catcher(async (req, res, next) => {
|
|
294
|
+
await passport.authenticate(
|
|
295
|
+
"api-bearer",
|
|
296
|
+
{ session: false },
|
|
297
|
+
async function (err, user, info) {
|
|
298
|
+
if (accessAllowedRead(req, user)) {
|
|
299
|
+
const configVars = await Config.getAllConfig();
|
|
300
|
+
|
|
301
|
+
res.json({ success: configVars });
|
|
302
|
+
} else {
|
|
303
|
+
res.status(401).json({ error: req.__("Not authorized") });
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
)(req, res, next);
|
|
307
|
+
})
|
|
308
|
+
);
|