@saltcorn/server 1.1.1-beta.5 → 1.1.1-beta.6

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/fields.js CHANGED
@@ -24,7 +24,11 @@ const {
24
24
  } = require("@saltcorn/data/models/expression");
25
25
  const db = require("@saltcorn/data/db");
26
26
 
27
- const { isAdmin, error_catcher } = require("./utils.js");
27
+ const {
28
+ isAdmin,
29
+ error_catcher,
30
+ isAdminOrHasConfigMinRole,
31
+ } = require("./utils.js");
28
32
  const expressionBlurb = require("../markup/expression_blurb");
29
33
  const {
30
34
  readState,
@@ -774,7 +778,10 @@ const fieldFlow = (req) =>
774
778
  */
775
779
  router.get(
776
780
  "/:id",
777
- isAdmin,
781
+ isAdminOrHasConfigMinRole([
782
+ "min_role_edit_tables",
783
+ "min_role_inspect_tables",
784
+ ]),
778
785
  error_catcher(async (req, res) => {
779
786
  const { id } = req.params;
780
787
  const field = await Field.findOne({ id });
@@ -830,7 +837,7 @@ router.get(
830
837
  */
831
838
  router.get(
832
839
  "/new/:table_id",
833
- isAdmin,
840
+ isAdminOrHasConfigMinRole("min_role_edit_tables"),
834
841
  error_catcher(async (req, res) => {
835
842
  const { table_id } = req.params;
836
843
  const table = Table.findOne({ id: table_id });
@@ -867,7 +874,7 @@ router.get(
867
874
  */
868
875
  router.post(
869
876
  "/delete/:id",
870
- isAdmin,
877
+ isAdminOrHasConfigMinRole("min_role_edit_tables"),
871
878
  error_catcher(async (req, res) => {
872
879
  const { id } = req.params;
873
880
  const f = await Field.findOne({ id });
@@ -892,7 +899,7 @@ router.post(
892
899
  */
893
900
  router.post(
894
901
  "/",
895
- isAdmin,
902
+ isAdminOrHasConfigMinRole("min_role_edit_tables"),
896
903
  error_catcher(async (req, res) => {
897
904
  const wf = fieldFlow(req);
898
905
  const wfres = await wf.run(req.body, req);
@@ -941,7 +948,10 @@ router.post(
941
948
  */
942
949
  router.post(
943
950
  "/test-formula",
944
- isAdmin,
951
+ isAdminOrHasConfigMinRole([
952
+ "min_role_edit_tables",
953
+ "min_role_inspect_tables",
954
+ ]),
945
955
  error_catcher(async (req, res) => {
946
956
  let { formula, tablename, stored } = req.body;
947
957
  if (stored === "false") stored = false;
@@ -1231,7 +1241,11 @@ router.post(
1231
1241
  */
1232
1242
  router.post(
1233
1243
  "/preview/:tableName/:fieldName/:fieldview",
1234
- isAdmin,
1244
+ isAdminOrHasConfigMinRole([
1245
+ "min_role_edit_tables",
1246
+ "min_role_edit_views",
1247
+ "min_role_inspect_tables",
1248
+ ]),
1235
1249
  error_catcher(async (req, res) => {
1236
1250
  const { tableName, fieldName, fieldview } = req.params;
1237
1251
  const table = Table.findOne({ name: tableName });
@@ -1323,7 +1337,11 @@ router.post(
1323
1337
  */
1324
1338
  router.post(
1325
1339
  "/preview/:tableName/:fieldName/",
1326
- isAdmin,
1340
+ isAdminOrHasConfigMinRole([
1341
+ "min_role_edit_tables",
1342
+ "min_role_edit_views",
1343
+ "min_role_inspect_tables",
1344
+ ]),
1327
1345
  error_catcher(async (req, res) => {
1328
1346
  res.send("");
1329
1347
  })
@@ -1331,7 +1349,11 @@ router.post(
1331
1349
 
1332
1350
  router.post(
1333
1351
  "/fieldviewcfgform/:tableName",
1334
- isAdmin,
1352
+ isAdminOrHasConfigMinRole([
1353
+ "min_role_edit_tables",
1354
+ "min_role_edit_views",
1355
+ "min_role_inspect_tables",
1356
+ ]),
1335
1357
  error_catcher(async (req, res) => {
1336
1358
  const { tableName } = req.params;
1337
1359
  let {
package/routes/list.js CHANGED
@@ -24,7 +24,11 @@ const {
24
24
  form,
25
25
  } = require("@saltcorn/markup/tags");
26
26
  const Table = require("@saltcorn/data/models/table");
27
- const { isAdmin, error_catcher } = require("./utils");
27
+ const {
28
+ isAdmin,
29
+ error_catcher,
30
+ isAdminOrHasConfigMinRole,
31
+ } = require("./utils");
28
32
  const moment = require("moment");
29
33
  const { getState } = require("@saltcorn/data/db/state");
30
34
 
@@ -49,7 +53,10 @@ module.exports = router;
49
53
  */
50
54
  router.get(
51
55
  "/_versions/:tableName/:id",
52
- isAdmin,
56
+ isAdminOrHasConfigMinRole([
57
+ "min_role_edit_tables",
58
+ "min_role_inspect_tables",
59
+ ]),
53
60
  error_catcher(async (req, res) => {
54
61
  const { tableName, id } = req.params;
55
62
  const table = Table.findOne({ name: tableName });
@@ -97,7 +104,10 @@ router.get(
97
104
  */
98
105
  router.post(
99
106
  "/_restore/:tableName/:id/:_version",
100
- isAdmin,
107
+ isAdminOrHasConfigMinRole([
108
+ "min_role_edit_tables",
109
+ "min_role_inspect_tables",
110
+ ]),
101
111
  error_catcher(async (req, res) => {
102
112
  const { tableName, id, _version } = req.params;
103
113
  const table = Table.findOne({ name: tableName });
@@ -226,7 +236,10 @@ const arrangeIdFirst = (flds) => {
226
236
  */
227
237
  router.get(
228
238
  "/:tname",
229
- isAdmin,
239
+ isAdminOrHasConfigMinRole([
240
+ "min_role_edit_tables",
241
+ "min_role_inspect_tables",
242
+ ]),
230
243
  error_catcher(async (req, res) => {
231
244
  const { tname } = req.params;
232
245
  const table = Table.findOne({ name: tname });
@@ -204,26 +204,31 @@ router.post(
204
204
  req.flash("error", msg);
205
205
  res.redirect("/auth/login");
206
206
  } else res.json({ error: msg });
207
- } else if (!getState().getConfig("pwa_share_to_enabled", false)) {
208
- const msg = req.__("Sharing not enabled");
209
- if (!req.smr) {
210
- req.flash("error", msg);
211
- res.redirect("/");
212
- } else res.json({ error: msg });
213
207
  } else {
214
- Trigger.emitEvent("ReceiveMobileShareData", null, req.user, {
215
- row: req.body,
208
+ const receiveShareTriggers = Trigger.find({
209
+ when_trigger: "ReceiveMobileShareData",
216
210
  });
217
- if (!req.smr) {
218
- req.flash(
219
- "success",
220
- req.__(
221
- "Shared: %s",
222
- req.body.title || req.body.text || req.body.url || ""
223
- )
224
- );
225
- res.status(303).redirect("/");
226
- } else res.json({ success: "ok" });
211
+ if (receiveShareTriggers.length === 0) {
212
+ const msg = req.__("Sharing not enabled");
213
+ if (!req.smr) {
214
+ req.flash("error", msg);
215
+ res.redirect("/");
216
+ } else res.json({ error: msg });
217
+ } else {
218
+ Trigger.emitEvent("ReceiveMobileShareData", null, req.user, {
219
+ row: req.body,
220
+ });
221
+ if (!req.smr) {
222
+ req.flash(
223
+ "success",
224
+ req.__(
225
+ "Shared: %s",
226
+ req.body.title || req.body.text || req.body.url || ""
227
+ )
228
+ );
229
+ res.status(303).redirect("/");
230
+ } else res.json({ success: "ok" });
231
+ }
227
232
  }
228
233
  })
229
234
  );
@@ -240,8 +245,10 @@ router.get(
240
245
  };
241
246
  const site_logo = state.getConfig("site_logo_id");
242
247
  const pwa_icons = state.getConfig("pwa_icons");
243
- const pwa_share_to_enabled = state.getConfig("pwa_share_to_enabled", false);
244
- if (pwa_share_to_enabled) {
248
+ const receiveShareTriggers = Trigger.find({
249
+ when_trigger: "ReceiveMobileShareData",
250
+ });
251
+ if (receiveShareTriggers.length > 0) {
245
252
  manifest.share_target = {
246
253
  action: "/notifications/share-handler",
247
254
  method: "POST",
@@ -30,6 +30,7 @@ const {
30
30
  addOnDoneRedirect,
31
31
  is_relative_url,
32
32
  setRole,
33
+ isAdminOrHasConfigMinRole,
33
34
  } = require("./utils.js");
34
35
  const { asyncMap } = require("@saltcorn/data/utils");
35
36
  const {
@@ -278,7 +279,7 @@ const getRootPageForm = (pages, pageGroups, roles, req) => {
278
279
  noSubmitButton: true,
279
280
  onChange: "saveAndContinue(this)",
280
281
  blurb: req.__(
281
- "The root page is the page that is served when the user visits the home location (/). This can be set for each user role."
282
+ "The home page is the page that is served when the user visits the home location (/). This can be set for each user role."
282
283
  ),
283
284
  fields: roles.map(
284
285
  (r) =>
@@ -314,7 +315,7 @@ const getRootPageForm = (pages, pageGroups, roles, req) => {
314
315
  */
315
316
  router.get(
316
317
  "/",
317
- isAdmin,
318
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
318
319
  error_catcher(async (req, res) => {
319
320
  const pageq = {};
320
321
  let filterOnTag;
@@ -357,7 +358,7 @@ router.get(
357
358
  },
358
359
  {
359
360
  type: "card",
360
- title: req.__("Root pages"),
361
+ title: req.__("Home pages"),
361
362
  titleAjaxIndicator: true,
362
363
  contents: renderForm(
363
364
  getRootPageForm(pages, pageGroups, roles, req),
@@ -425,7 +426,7 @@ const wrap = (contents, noCard, req, page) => ({
425
426
  */
426
427
  router.get(
427
428
  "/edit-properties/:pagename",
428
- isAdmin,
429
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
429
430
  error_catcher(async (req, res) => {
430
431
  const { pagename } = req.params;
431
432
  const page = Page.findOne({ name: pagename });
@@ -456,7 +457,7 @@ router.get(
456
457
  */
457
458
  router.get(
458
459
  "/new",
459
- isAdmin,
460
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
460
461
  error_catcher(async (req, res) => {
461
462
  const form = await pagePropertiesForm(req, true);
462
463
  res.sendWrap(
@@ -474,7 +475,7 @@ router.get(
474
475
  */
475
476
  router.post(
476
477
  "/edit-properties",
477
- isAdmin,
478
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
478
479
  error_catcher(async (req, res) => {
479
480
  const form = await pagePropertiesForm(req, !req.body.id);
480
481
  form.hidden("id");
@@ -652,7 +653,7 @@ const getEditPageWithHtmlFile = async (req, res, page) => {
652
653
  */
653
654
  router.get(
654
655
  "/edit/:pagename",
655
- isAdmin,
656
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
656
657
  error_catcher(async (req, res) => {
657
658
  const { pagename } = req.params;
658
659
  const [page] = await Page.find({ name: pagename });
@@ -674,7 +675,7 @@ router.get(
674
675
  */
675
676
  router.post(
676
677
  "/edit/:pagename",
677
- isAdmin,
678
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
678
679
  error_catcher(async (req, res) => {
679
680
  const { pagename } = req.params;
680
681
 
@@ -765,7 +766,7 @@ router.post(
765
766
  */
766
767
  router.post(
767
768
  "/delete/:id",
768
- isAdmin,
769
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
769
770
  error_catcher(async (req, res) => {
770
771
  const { id } = req.params;
771
772
  const page = await Page.findOne({ id });
@@ -787,7 +788,7 @@ router.post(
787
788
  */
788
789
  router.post(
789
790
  "/set_root_page",
790
- isAdmin,
791
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
791
792
  error_catcher(async (req, res) => {
792
793
  const pages = await Page.find({}, { orderBy: "name" });
793
794
  const pageGroups = await PageGroup.find({}, { orderBy: "name" });
@@ -815,7 +816,7 @@ router.post(
815
816
  */
816
817
  router.post(
817
818
  "/add-to-menu/:id",
818
- isAdmin,
819
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
819
820
  error_catcher(async (req, res) => {
820
821
  const { id } = req.params;
821
822
  const page = Page.findOne({ id });
@@ -845,7 +846,7 @@ router.post(
845
846
  */
846
847
  router.post(
847
848
  "/clone/:id",
848
- isAdmin,
849
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
849
850
  error_catcher(async (req, res) => {
850
851
  const { id } = req.params;
851
852
  const page = await Page.findOne({ id });
@@ -870,7 +871,7 @@ router.post(
870
871
  */
871
872
  router.post(
872
873
  "/setrole/:id",
873
- isAdmin,
874
+ isAdminOrHasConfigMinRole("min_role_edit_pages"),
874
875
  error_catcher(async (req, res) => {
875
876
  await setRole(req, res, Page);
876
877
  })