@saltcorn/server 0.9.4 → 0.9.5-beta.1

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/auth/admin.js CHANGED
@@ -357,6 +357,7 @@ const auth_settings_form = async (req) =>
357
357
  "user_settings_form",
358
358
  "verification_view",
359
359
  "logout_url",
360
+ "signup_role",
360
361
  "elevate_verified",
361
362
  "email_mask",
362
363
  ],
package/auth/routes.js CHANGED
@@ -786,6 +786,7 @@ router.post(
786
786
  res.sendAuthWrap(new_user_form, form, getAuthLinks("signup", true));
787
787
  return;
788
788
  }
789
+ uobj.role_id = +getState().getConfig("signup_role", "80");
789
790
  const u = await User.create(uobj);
790
791
  await send_verification_email(u, req);
791
792
 
@@ -843,6 +844,7 @@ router.post(
843
844
  res.sendAuthWrap(new_user_form, form, getAuthLinks("signup", true));
844
845
  } else {
845
846
  try {
847
+ form.values.role_id = +getState().getConfig("signup_role", "80");
846
848
  const u = await User.create(form.values);
847
849
  await send_verification_email(u, req);
848
850
 
@@ -978,6 +980,7 @@ router.post(
978
980
  getAuthLinks("signup", true)
979
981
  );
980
982
  } else {
983
+ userObject.role_id = +getState().getConfig("signup_role", "80");
981
984
  const u = await User.create(userObject);
982
985
  await send_verification_email(u, req);
983
986
 
@@ -1010,6 +1013,7 @@ router.post(
1010
1013
  form.values.password = password;
1011
1014
  res.sendAuthWrap(new_user_form, form, getAuthLinks("signup", true));
1012
1015
  } else {
1016
+ form.values.role_id = +getState().getConfig("signup_role", "80");
1013
1017
  const u = await User.create(form.values);
1014
1018
  await send_verification_email(u, req);
1015
1019
  if (req.smr)
package/locales/en.json CHANGED
@@ -1382,5 +1382,7 @@
1382
1382
  "Open a connection to TLS server with self-signed or invalid TLS certificate": "Open a connection to TLS server with self-signed or invalid TLS certificate",
1383
1383
  "Allow self-signed": "Allow self-signed",
1384
1384
  "Optionally associate a table with this trigger": "Optionally associate a table with this trigger",
1385
- "Delete table": "Delete table"
1385
+ "Delete table": "Delete table",
1386
+ "Signup role": "Signup role",
1387
+ "The initial role of signed up users": "The initial role of signed up users"
1386
1388
  }
package/markup/admin.js CHANGED
@@ -23,6 +23,8 @@ const Form = require("@saltcorn/data/models/form");
23
23
  const Table = require("@saltcorn/data/models/table");
24
24
  const View = require("@saltcorn/data/models/view");
25
25
  const User = require("@saltcorn/data/models/user");
26
+ const FieldRepeat = require("@saltcorn/data/models/fieldrepeat");
27
+ const Field = require("@saltcorn/data/models/field");
26
28
 
27
29
  /**
28
30
  * Restore Backup
@@ -437,6 +439,26 @@ const config_fields_form = async ({
437
439
  const label = configTypes[name].label || name;
438
440
  const sublabel = configTypes[name].sublabel || configTypes[name].blurb;
439
441
 
442
+ if (configTypes[name].type === "Repeat") {
443
+ const repFields = configTypes[name].fields;
444
+ const filledFields = [];
445
+ for (const rfield of repFields) {
446
+ const fillField = new Field(rfield);
447
+ await fillField.fill_fkey_options();
448
+ filledFields.push(fillField);
449
+ }
450
+ fields.push(
451
+ new FieldRepeat({
452
+ name,
453
+ label,
454
+ fields: filledFields,
455
+ showIf,
456
+ })
457
+ );
458
+
459
+ continue;
460
+ }
461
+
440
462
  fields.push({
441
463
  name,
442
464
  ...configTypes[name],
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@saltcorn/server",
3
- "version": "0.9.4",
3
+ "version": "0.9.5-beta.1",
4
4
  "description": "Server app for Saltcorn, open-source no-code platform",
5
5
  "homepage": "https://saltcorn.com",
6
6
  "main": "index.js",
7
7
  "license": "MIT",
8
8
  "dependencies": {
9
9
  "@aws-sdk/client-s3": "^3.451.0",
10
- "@saltcorn/base-plugin": "0.9.4",
11
- "@saltcorn/builder": "0.9.4",
12
- "@saltcorn/data": "0.9.4",
13
- "@saltcorn/admin-models": "0.9.4",
14
- "@saltcorn/filemanager": "0.9.4",
15
- "@saltcorn/markup": "0.9.4",
16
- "@saltcorn/sbadmin2": "0.9.4",
10
+ "@saltcorn/base-plugin": "0.9.5-beta.1",
11
+ "@saltcorn/builder": "0.9.5-beta.1",
12
+ "@saltcorn/data": "0.9.5-beta.1",
13
+ "@saltcorn/admin-models": "0.9.5-beta.1",
14
+ "@saltcorn/filemanager": "0.9.5-beta.1",
15
+ "@saltcorn/markup": "0.9.5-beta.1",
16
+ "@saltcorn/sbadmin2": "0.9.5-beta.1",
17
17
  "@socket.io/cluster-adapter": "^0.2.1",
18
18
  "@socket.io/sticky": "^1.0.1",
19
19
  "adm-zip": "0.5.10",
@@ -472,15 +472,7 @@ function saveAndContinue(e, k) {
472
472
  `<input type="hidden" class="form-control " name="id" value="${res.id}">`
473
473
  );
474
474
  }
475
- if (res.notify) {
476
- notifyAlert(res.notify);
477
- }
478
- if (res.notify_success) {
479
- notifyAlert({ type: "success", text: res.notify });
480
- }
481
- if (res.reload_page) {
482
- location.reload(); //TODO notify to cookie if reload or goto
483
- }
475
+ common_done(res, form.attr("data-viewname"));
484
476
  },
485
477
  error: function (request) {
486
478
  var ct = request.getResponseHeader("content-type") || "";
@@ -1 +1,5 @@
1
1
  // do nothing so far
2
+
3
+ self.addEventListener("fetch", function () {
4
+ return;
5
+ });
package/routes/admin.js CHANGED
@@ -2453,6 +2453,11 @@ router.post(
2453
2453
  }
2454
2454
  }
2455
2455
  }
2456
+ if (form.values.triggers) {
2457
+ await db.deleteWhere("_sc_tag_entries", { not: { trigger_id: null } });
2458
+ await db.deleteWhere("_sc_triggers");
2459
+ await getState().refresh_triggers();
2460
+ }
2456
2461
  if (form.values.tables) {
2457
2462
  await db.deleteWhere("_sc_table_constraints");
2458
2463
  await db.deleteWhere("_sc_model_instances");
@@ -2492,10 +2497,7 @@ router.post(
2492
2497
  }
2493
2498
  await getState().refresh_plugins();
2494
2499
  }
2495
- if (form.values.triggers) {
2496
- await db.deleteWhere("_sc_triggers");
2497
- await getState().refresh_triggers();
2498
- }
2500
+
2499
2501
  if (form.values.library) {
2500
2502
  await db.deleteWhere("_sc_library");
2501
2503
  }
@@ -2676,6 +2678,10 @@ admin_config_route({
2676
2678
  name: "pwa_background_color",
2677
2679
  showIf: { pwa_enabled: true, pwa_set_colors: true },
2678
2680
  },
2681
+ {
2682
+ name: "pwa_icons",
2683
+ showIf: { pwa_enabled: true },
2684
+ },
2679
2685
  ],
2680
2686
  response(form, req, res) {
2681
2687
  send_admin_page({
@@ -11,6 +11,7 @@ const { div, a, i, text, h5, p, span } = require("@saltcorn/markup/tags");
11
11
  const moment = require("moment");
12
12
  const { getState } = require("@saltcorn/data/db/state");
13
13
  const Form = require("@saltcorn/data/models/form");
14
+ const File = require("@saltcorn/data/models/file");
14
15
  const User = require("@saltcorn/data/models/user");
15
16
  const { renderForm } = require("@saltcorn/markup");
16
17
 
@@ -114,14 +115,24 @@ router.get(
114
115
  const state = getState();
115
116
  const manifest = {
116
117
  name: state.getConfig("site_name"),
117
- start_url: state.getConfig("base_url") || "/",
118
+ start_url: "/",
118
119
  display: state.getConfig("pwa_display", "browser"),
119
120
  };
120
121
  const site_logo = state.getConfig("site_logo_id");
121
- if (site_logo)
122
+ const pwa_icons = state.getConfig("pwa_icons");
123
+ if (Array.isArray(pwa_icons) && pwa_icons.length > 0)
124
+ manifest.icons = pwa_icons.map(({ image, size, maskable }) => ({
125
+ src: `/files/serve/${image}`,
126
+ type: File.nameToMimeType(site_logo),
127
+ sizes: size ? `${size}x${size}` : "144x144",
128
+ ...(maskable ? { purpose: "maskable" } : {}),
129
+ }));
130
+ else if (site_logo)
122
131
  manifest.icons = [
123
132
  {
124
133
  src: `/files/serve/${site_logo}`,
134
+ type: File.nameToMimeType(site_logo),
135
+ sizes: "144x144",
125
136
  },
126
137
  ];
127
138
  if (state.getConfig("pwa_set_colors", false)) {