@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 +1 -0
- package/auth/routes.js +4 -0
- package/locales/en.json +3 -1
- package/markup/admin.js +22 -0
- package/package.json +8 -8
- package/public/saltcorn.js +1 -9
- package/public/serviceworker.js +4 -0
- package/routes/admin.js +10 -4
- package/routes/notifications.js +13 -2
package/auth/admin.js
CHANGED
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.
|
|
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.
|
|
11
|
-
"@saltcorn/builder": "0.9.
|
|
12
|
-
"@saltcorn/data": "0.9.
|
|
13
|
-
"@saltcorn/admin-models": "0.9.
|
|
14
|
-
"@saltcorn/filemanager": "0.9.
|
|
15
|
-
"@saltcorn/markup": "0.9.
|
|
16
|
-
"@saltcorn/sbadmin2": "0.9.
|
|
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",
|
package/public/saltcorn.js
CHANGED
|
@@ -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
|
-
|
|
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") || "";
|
package/public/serviceworker.js
CHANGED
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
|
-
|
|
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({
|
package/routes/notifications.js
CHANGED
|
@@ -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:
|
|
118
|
+
start_url: "/",
|
|
118
119
|
display: state.getConfig("pwa_display", "browser"),
|
|
119
120
|
};
|
|
120
121
|
const site_logo = state.getConfig("site_logo_id");
|
|
121
|
-
|
|
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)) {
|