@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/routes/index.js CHANGED
@@ -4,6 +4,43 @@
4
4
  * @module routes/index
5
5
  * @subcategory routes
6
6
  */
7
+
8
+ /**
9
+ * All files in the routes module.
10
+ * @namespace routes_overview
11
+ * @property {module:routes/actions} actions
12
+ * @property {module:routes/admin} admin
13
+ * @property {module:routes/api} api
14
+ * @property {module:routes/config} config
15
+ * @property {module:routes/crashlog} crashlog
16
+ * @property {module:routes/delete} delete
17
+ * @property {module:routes/edit} edit
18
+ * @property {module:routes/eventlog} eventlog
19
+ * @property {module:routes/events} events
20
+ * @property {module:routes/fields} fields
21
+ * @property {module:routes/files} files
22
+ * @property {module:routes/homepage} homepage
23
+ * @property {module:routes/infoarch} infoarch
24
+ * @property {module:routes/library} library
25
+ * @property {module:routes/list} list
26
+ * @property {module:routes/menu} menu
27
+ * @property {module:routes/packs} packs
28
+ * @property {module:routes/page} page
29
+ * @property {module:routes/pageedit} pageedit
30
+ * @property {module:routes/plugins} plugins
31
+ * @property {module:routes/scapi} scapi
32
+ * @property {module:routes/search} search
33
+ * @property {module:routes/settings} settings
34
+ * @property {module:routes/tables} tables
35
+ * @property {module:routes/tenant} tenant
36
+ * @property {module:routes/utils} utils
37
+ * @property {module:routes/view} view
38
+ * @property {module:routes/viewedit} viewedit
39
+ *
40
+ * @category server
41
+ * @subcategory routes
42
+ */
43
+
7
44
  const table = require("./tables");
8
45
  const field = require("./fields");
9
46
  const list = require("./list");
@@ -35,7 +35,6 @@ module.exports = router;
35
35
  */
36
36
  router.get(
37
37
  "/",
38
- setTenant,
39
38
  isAdmin,
40
39
  error_catcher(async (req, res) => {
41
40
  res.redirect(`/menu`);
@@ -43,7 +42,7 @@ router.get(
43
42
  );
44
43
 
45
44
  /**
46
- * @param {object} req
45
+ * @param {object} req
47
46
  * @returns {Form}
48
47
  */
49
48
  const languageForm = (req) =>
@@ -83,7 +82,6 @@ const languageForm = (req) =>
83
82
  */
84
83
  router.get(
85
84
  "/localizer",
86
- setTenant,
87
85
  isAdmin,
88
86
  error_catcher(async (req, res) => {
89
87
  const cfgLangs = getState().getConfig("localizer_languages");
@@ -111,13 +109,13 @@ router.get(
111
109
  },
112
110
  {
113
111
  label: req.__("Default"),
114
- key: r=>!!r.is_default
115
- ? i({
116
- class: "fas fa-check-circle text-success",
117
- })
118
- : "",
112
+ key: (r) =>
113
+ !!r.is_default
114
+ ? i({
115
+ class: "fas fa-check-circle text-success",
116
+ })
117
+ : "",
119
118
  },
120
-
121
119
  ],
122
120
  Object.values(cfgLangs)
123
121
  ),
@@ -143,7 +141,6 @@ router.get(
143
141
  */
144
142
  router.get(
145
143
  "/localizer/add-lang",
146
- setTenant,
147
144
  isAdmin,
148
145
  error_catcher(async (req, res) => {
149
146
  send_infoarch_page({
@@ -167,7 +164,6 @@ router.get(
167
164
  */
168
165
  router.get(
169
166
  "/localizer/edit/:lang",
170
- setTenant,
171
167
  isAdmin,
172
168
  error_catcher(async (req, res) => {
173
169
  const { lang } = req.params;
@@ -175,8 +171,8 @@ router.get(
175
171
  const form = languageForm(req);
176
172
  form.values = cfgLangs[lang];
177
173
  const { is_default } = form.values;
178
- const cfgStrings = getState().getConfig("localizer_strings",{});
179
- const translation = cfgStrings[lang] || {}
174
+ const cfgStrings = getState().getConfig("localizer_strings", {});
175
+ const translation = cfgStrings[lang] || {};
180
176
  const strings = getState()
181
177
  .getStringsForI18n()
182
178
  .map((s) => ({ in_default: s, translated: translation[s] || s }));
@@ -232,16 +228,14 @@ router.get(
232
228
  */
233
229
  router.post(
234
230
  "/localizer/save-string/:lang/:defstring",
235
- setTenant,
236
231
  isAdmin,
237
232
  error_catcher(async (req, res) => {
238
233
  const { lang, defstring } = req.params;
239
234
 
240
235
  const cfgStrings = getState().getConfigCopy("localizer_strings");
241
- if(cfgStrings[lang])
242
- cfgStrings[lang][defstring] = text(req.body.value)
243
- else cfgStrings[lang]={[defstring]: text(req.body.value)}
244
- await getState().setConfig("localizer_strings", cfgStrings)
236
+ if (cfgStrings[lang]) cfgStrings[lang][defstring] = text(req.body.value);
237
+ else cfgStrings[lang] = { [defstring]: text(req.body.value) };
238
+ await getState().setConfig("localizer_strings", cfgStrings);
245
239
  res.redirect(`/site-structure/localizer/edit/${lang}`);
246
240
  })
247
241
  );
@@ -254,7 +248,6 @@ router.post(
254
248
  */
255
249
  router.post(
256
250
  "/localizer/save-lang",
257
- setTenant,
258
251
  isAdmin,
259
252
  error_catcher(async (req, res) => {
260
253
  const form = languageForm(req);
package/routes/library.js CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  const Library = require("@saltcorn/data/models/library");
8
8
  const Router = require("express-promise-router");
9
- const { setTenant, isAdmin, error_catcher } = require("./utils.js");
9
+ const { isAdmin, error_catcher } = require("./utils.js");
10
10
  const { send_infoarch_page } = require("../markup/admin.js");
11
11
  const { mkTable, post_delete_btn } = require("@saltcorn/markup");
12
12
  const { i } = require("@saltcorn/markup/tags");
@@ -29,7 +29,6 @@ module.exports = router;
29
29
  */
30
30
  router.post(
31
31
  "/savefrombuilder",
32
- setTenant,
33
32
  isAdmin,
34
33
  error_catcher(async (req, res) => {
35
34
  await Library.create(req.body);
@@ -45,7 +44,6 @@ router.post(
45
44
  */
46
45
  router.get(
47
46
  "/list",
48
- setTenant,
49
47
  isAdmin,
50
48
  error_catcher(async (req, res) => {
51
49
  const libs = await Library.find({});
@@ -89,7 +87,6 @@ router.get(
89
87
  */
90
88
  router.post(
91
89
  "/delete/:id",
92
- setTenant,
93
90
  isAdmin,
94
91
  error_catcher(async (req, res) => {
95
92
  const { id } = req.params;
package/routes/list.js CHANGED
@@ -14,7 +14,7 @@ const db = require("@saltcorn/data/db");
14
14
  const { mkTable, h, link, post_btn } = require("@saltcorn/markup");
15
15
  const { a, script, domReady, div, text } = require("@saltcorn/markup/tags");
16
16
  const Table = require("@saltcorn/data/models/table");
17
- const { setTenant, isAdmin, error_catcher } = require("./utils");
17
+ const { isAdmin, error_catcher } = require("./utils");
18
18
  const moment = require("moment");
19
19
  const { readState } = require("@saltcorn/data/plugin-helper");
20
20
 
@@ -39,7 +39,6 @@ module.exports = router;
39
39
  */
40
40
  router.get(
41
41
  "/_versions/:name/:id",
42
- setTenant,
43
42
  isAdmin,
44
43
  error_catcher(async (req, res) => {
45
44
  const { name, id } = req.params;
@@ -88,7 +87,6 @@ router.get(
88
87
  */
89
88
  router.post(
90
89
  "/_restore/:name/:id/:_version",
91
- setTenant,
92
90
  isAdmin,
93
91
  error_catcher(async (req, res) => {
94
92
  const { name, id, _version } = req.params;
@@ -152,7 +150,7 @@ const typeToJsGridType = (t, field) => {
152
150
 
153
151
  /**
154
152
  * Version Field
155
- * @param {string} tname
153
+ * @param {string} tname
156
154
  * @returns {string}
157
155
  */
158
156
  const versionsField = (tname) => `
@@ -183,7 +181,6 @@ jsGrid.fields.versions = VersionsField;
183
181
  */
184
182
  router.get(
185
183
  "/:tname",
186
- setTenant,
187
184
  isAdmin,
188
185
  error_catcher(async (req, res) => {
189
186
  const { tname } = req.params;
package/routes/menu.js CHANGED
@@ -32,8 +32,8 @@ const router = new Router();
32
32
  module.exports = router;
33
33
 
34
34
  /**
35
- *
36
- * @param {object} req
35
+ *
36
+ * @param {object} req
37
37
  * @returns {Promise<Form>}
38
38
  */
39
39
  const menuForm = async (req) => {
@@ -157,7 +157,7 @@ const menuForm = async (req) => {
157
157
  //create -- new
158
158
 
159
159
  /**
160
- * @param {object[]} menu_items
160
+ * @param {object[]} menu_items
161
161
  * @returns {string}
162
162
  */
163
163
  const menuEditorScript = (menu_items) => `
@@ -202,8 +202,8 @@ const menuEditorScript = (menu_items) => `
202
202
  `;
203
203
 
204
204
  /**
205
- * @param {object[]} menu_items
206
- * @returns {object[]}
205
+ * @param {object[]} menu_items
206
+ * @returns {object[]}
207
207
  */
208
208
  const menuTojQME = (menu_items) =>
209
209
  (menu_items || []).map((mi) => ({
@@ -214,7 +214,7 @@ const menuTojQME = (menu_items) =>
214
214
  }));
215
215
 
216
216
  /**
217
- * @param {object[]} menu_items
217
+ * @param {object[]} menu_items
218
218
  * @returns {object[]}
219
219
  */
220
220
  const jQMEtoMenu = (menu_items) =>
@@ -233,7 +233,6 @@ const jQMEtoMenu = (menu_items) =>
233
233
  */
234
234
  router.get(
235
235
  "/",
236
- setTenant,
237
236
  isAdmin,
238
237
  error_catcher(async (req, res) => {
239
238
  const form = await menuForm(req);
@@ -287,7 +286,6 @@ router.get(
287
286
  */
288
287
  router.post(
289
288
  "/",
290
- setTenant,
291
289
  isAdmin,
292
290
  error_catcher(async (req, res) => {
293
291
  if (req.xhr) {
package/routes/packs.js CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
 
7
7
  const Router = require("express-promise-router");
8
- const { setTenant, isAdmin, error_catcher } = require("./utils.js");
8
+ const { isAdmin, error_catcher } = require("./utils.js");
9
9
  const { mkTable, renderForm, link, post_btn } = require("@saltcorn/markup");
10
10
  const { getState } = require("@saltcorn/data/db/state");
11
11
  const Table = require("@saltcorn/data/models/table");
@@ -54,7 +54,6 @@ module.exports = router;
54
54
  */
55
55
  router.get(
56
56
  "/create/",
57
- setTenant,
58
57
  isAdmin,
59
58
  error_catcher(async (req, res) => {
60
59
  const tables = await Table.find({});
@@ -139,7 +138,6 @@ router.get(
139
138
  */
140
139
  router.post(
141
140
  "/create",
142
- setTenant,
143
141
  isAdmin,
144
142
  error_catcher(async (req, res) => {
145
143
  var pack = {
@@ -211,7 +209,7 @@ router.post(
211
209
  );
212
210
 
213
211
  /**
214
- * @param {object} req
212
+ * @param {object} req
215
213
  * @returns {Form}
216
214
  */
217
215
  const install_pack_form = (req) =>
@@ -236,7 +234,6 @@ const install_pack_form = (req) =>
236
234
  */
237
235
  router.get(
238
236
  "/install",
239
- setTenant,
240
237
  isAdmin,
241
238
  error_catcher(async (req, res) => {
242
239
  res.sendWrap(req.__(`Install Pack`), {
@@ -267,7 +264,6 @@ router.get(
267
264
  */
268
265
  router.post(
269
266
  "/install",
270
- setTenant,
271
267
  isAdmin,
272
268
  error_catcher(async (req, res) => {
273
269
  var pack, error;
@@ -326,7 +322,6 @@ router.post(
326
322
  */
327
323
  router.post(
328
324
  "/install-named/:name",
329
- setTenant,
330
325
  isAdmin,
331
326
  error_catcher(async (req, res) => {
332
327
  const { name } = req.params;
@@ -363,7 +358,6 @@ router.post(
363
358
  */
364
359
  router.post(
365
360
  "/uninstall/:name",
366
- setTenant,
367
361
  isAdmin,
368
362
  error_catcher(async (req, res) => {
369
363
  const { name } = req.params;
package/routes/page.js CHANGED
@@ -10,14 +10,11 @@ const Page = require("@saltcorn/data/models/page");
10
10
  const { div, a, i } = require("@saltcorn/markup/tags");
11
11
  const { renderForm } = require("@saltcorn/markup");
12
12
  const { getState } = require("@saltcorn/data/db/state");
13
- const {
14
- setTenant,
15
- error_catcher,
16
- scan_for_page_title,
17
- } = require("../routes/utils.js");
13
+ const { error_catcher, scan_for_page_title } = require("../routes/utils.js");
18
14
  const { add_edit_bar } = require("../markup/admin.js");
19
15
  const { traverseSync } = require("@saltcorn/data/models/layout");
20
16
  const { run_action_column } = require("@saltcorn/data/plugin-helper");
17
+ const db = require("@saltcorn/data/db");
21
18
 
22
19
  /**
23
20
  * @type {object}
@@ -37,7 +34,6 @@ module.exports = router;
37
34
  */
38
35
  router.get(
39
36
  "/:pagename",
40
- setTenant,
41
37
  error_catcher(async (req, res) => {
42
38
  const { pagename } = req.params;
43
39
 
@@ -47,7 +43,11 @@ router.get(
47
43
  const contents = await db_page.run(req.query, { res, req });
48
44
  const title = scan_for_page_title(contents, db_page.title);
49
45
  res.sendWrap(
50
- { title, description: db_page.description } || `${pagename} page`,
46
+ {
47
+ title,
48
+ description: db_page.description,
49
+ bodyClass: "page_" + db.sqlsanitize(pagename),
50
+ } || `${pagename} page`,
51
51
  add_edit_bar({
52
52
  role,
53
53
  title: db_page.name,
@@ -71,7 +71,6 @@ router.get(
71
71
  */
72
72
  router.post(
73
73
  "/:pagename/action/:rndid",
74
- setTenant,
75
74
  error_catcher(async (req, res) => {
76
75
  const { pagename, rndid } = req.params;
77
76
  const role = req.isAuthenticated() ? req.user.role_id : 10;
@@ -20,7 +20,7 @@ const { getViews, traverseSync } = require("@saltcorn/data/models/layout");
20
20
  const { add_to_menu } = require("@saltcorn/data/models/pack");
21
21
  const db = require("@saltcorn/data/db");
22
22
 
23
- const { setTenant, isAdmin, error_catcher } = require("./utils.js");
23
+ const { isAdmin, error_catcher } = require("./utils.js");
24
24
  const {
25
25
  mkTable,
26
26
  renderForm,
@@ -46,9 +46,9 @@ const router = new Router();
46
46
  module.exports = router;
47
47
 
48
48
  /**
49
- * @param {object} page
50
- * @param {*} roles
51
- * @param {object} req
49
+ * @param {object} page
50
+ * @param {*} roles
51
+ * @param {object} req
52
52
  * @returns {Form}
53
53
  */
54
54
  const editPageRoleForm = (page, roles, req) =>
@@ -60,8 +60,8 @@ const editPageRoleForm = (page, roles, req) =>
60
60
  });
61
61
 
62
62
  /**
63
- * @param {object} page
64
- * @param {object} req
63
+ * @param {object} page
64
+ * @param {object} req
65
65
  * @returns {string}
66
66
  */
67
67
  const page_dropdown = (page, req) =>
@@ -101,8 +101,8 @@ const page_dropdown = (page, req) =>
101
101
  ]);
102
102
 
103
103
  /**
104
- *
105
- * @param {object} req
104
+ *
105
+ * @param {object} req
106
106
  * @returns {Promise<Form>}
107
107
  */
108
108
  const pagePropertiesForm = async (req) => {
@@ -146,9 +146,9 @@ const pagePropertiesForm = async (req) => {
146
146
  };
147
147
 
148
148
  /**
149
- *
150
- * @param {object} req
151
- * @param {object} context
149
+ *
150
+ * @param {object} req
151
+ * @param {object} context
152
152
  * @returns {Promise<object>}
153
153
  */
154
154
  const pageBuilderData = async (req, context) => {
@@ -225,9 +225,9 @@ const pageBuilderData = async (req, context) => {
225
225
  };
226
226
 
227
227
  /**
228
- * @param {*} rows
229
- * @param {*} roles
230
- * @param {object} req
228
+ * @param {*} rows
229
+ * @param {*} roles
230
+ * @param {object} req
231
231
  * @returns {div}
232
232
  */
233
233
  const getPageList = (rows, roles, req) => {
@@ -308,7 +308,6 @@ const getRootPageForm = (pages, roles, req) => {
308
308
  */
309
309
  router.get(
310
310
  "/",
311
- setTenant,
312
311
  isAdmin,
313
312
  error_catcher(async (req, res) => {
314
313
  const pages = await Page.find({}, { orderBy: "name" });
@@ -339,10 +338,10 @@ router.get(
339
338
  );
340
339
 
341
340
  /**
342
- * @param {*} contents
343
- * @param {*} noCard
344
- * @param {object} req
345
- * @param {*} page
341
+ * @param {*} contents
342
+ * @param {*} noCard
343
+ * @param {object} req
344
+ * @param {*} page
346
345
  * @returns {*}
347
346
  */
348
347
  const wrap = (contents, noCard, req, page) => ({
@@ -372,7 +371,6 @@ const wrap = (contents, noCard, req, page) => ({
372
371
  */
373
372
  router.get(
374
373
  "/edit-properties/:pagename",
375
- setTenant,
376
374
  isAdmin,
377
375
  error_catcher(async (req, res) => {
378
376
  const { pagename } = req.params;
@@ -401,7 +399,6 @@ router.get(
401
399
  */
402
400
  router.get(
403
401
  "/new",
404
- setTenant,
405
402
  isAdmin,
406
403
  error_catcher(async (req, res) => {
407
404
  const form = await pagePropertiesForm(req);
@@ -420,7 +417,6 @@ router.get(
420
417
  */
421
418
  router.post(
422
419
  "/edit-properties",
423
- setTenant,
424
420
  isAdmin,
425
421
  error_catcher(async (req, res) => {
426
422
  const form = await pagePropertiesForm(req);
@@ -456,7 +452,6 @@ router.post(
456
452
  */
457
453
  router.get(
458
454
  "/edit/:pagename",
459
- setTenant,
460
455
  isAdmin,
461
456
  error_catcher(async (req, res) => {
462
457
  const { pagename } = req.params;
@@ -498,7 +493,6 @@ router.get(
498
493
  */
499
494
  router.post(
500
495
  "/edit/:pagename",
501
- setTenant,
502
496
  isAdmin,
503
497
  error_catcher(async (req, res) => {
504
498
  const { pagename } = req.params;
@@ -529,7 +523,6 @@ router.post(
529
523
  */
530
524
  router.post(
531
525
  "/savebuilder/:id",
532
- setTenant,
533
526
  isAdmin,
534
527
  error_catcher(async (req, res) => {
535
528
  const { id } = req.params;
@@ -551,7 +544,6 @@ router.post(
551
544
  */
552
545
  router.post(
553
546
  "/delete/:id",
554
- setTenant,
555
547
  isAdmin,
556
548
  error_catcher(async (req, res) => {
557
549
  const { id } = req.params;
@@ -570,7 +562,6 @@ router.post(
570
562
  */
571
563
  router.post(
572
564
  "/set_root_page",
573
- setTenant,
574
565
  isAdmin,
575
566
  error_catcher(async (req, res) => {
576
567
  const pages = await Page.find({}, { orderBy: "name" });
@@ -598,7 +589,6 @@ router.post(
598
589
  */
599
590
  router.post(
600
591
  "/add-to-menu/:id",
601
- setTenant,
602
592
  isAdmin,
603
593
  error_catcher(async (req, res) => {
604
594
  const { id } = req.params;
@@ -628,7 +618,6 @@ router.post(
628
618
  */
629
619
  router.post(
630
620
  "/clone/:id",
631
- setTenant,
632
621
  isAdmin,
633
622
  error_catcher(async (req, res) => {
634
623
  const { id } = req.params;
@@ -650,7 +639,6 @@ router.post(
650
639
  */
651
640
  router.post(
652
641
  "/setrole/:id",
653
- setTenant,
654
642
  isAdmin,
655
643
  error_catcher(async (req, res) => {
656
644
  const { id } = req.params;