@saltcorn/server 0.6.3-beta.3 → 0.6.4-beta.3
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 +3 -1
- package/auth/resetpw.js +7 -7
- package/auth/routes.js +1 -1
- package/locales/en.json +870 -860
- package/package.json +17 -14
- package/public/gridedit.js +162 -221
- package/public/saltcorn.js +137 -12
- package/public/tabulator.min.js +3 -0
- package/public/tabulator_bootstrap4.min.css +2 -0
- package/restart_watcher.js +1 -1
- package/routes/admin.js +9 -3
- package/routes/api.js +10 -5
- package/routes/fields.js +31 -2
- package/routes/files.js +2 -1
- package/routes/homepage.js +1 -1
- package/routes/list.js +169 -87
- package/routes/packs.js +1 -1
- package/routes/pageedit.js +7 -4
- package/routes/plugins.js +1 -1
- package/routes/scapi.js +1 -1
- package/routes/tables.js +3 -1
- package/routes/tenant.js +19 -9
- package/routes/view.js +2 -0
- package/routes/viewedit.js +1 -1
- package/serve.js +38 -27
- package/wrapper.js +5 -2
package/routes/tenant.js
CHANGED
|
@@ -6,12 +6,15 @@
|
|
|
6
6
|
|
|
7
7
|
const Router = require("express-promise-router");
|
|
8
8
|
const Form = require("@saltcorn/data/models/form");
|
|
9
|
-
const { getState,
|
|
9
|
+
const { getState, add_tenant } = require("@saltcorn/data/db/state");
|
|
10
|
+
const { create_tenant } = require("@saltcorn/admin-models/models/tenant");
|
|
10
11
|
const {
|
|
11
12
|
getAllTenants,
|
|
12
13
|
domain_sanitize,
|
|
13
14
|
deleteTenant,
|
|
14
|
-
|
|
15
|
+
switchToTenant,
|
|
16
|
+
insertTenant,
|
|
17
|
+
} = require("@saltcorn/admin-models/models/tenant");
|
|
15
18
|
const {
|
|
16
19
|
renderForm,
|
|
17
20
|
link,
|
|
@@ -45,6 +48,10 @@ const {
|
|
|
45
48
|
save_config_from_form,
|
|
46
49
|
} = require("../markup/admin.js");
|
|
47
50
|
const { getConfig } = require("@saltcorn/data/models/config");
|
|
51
|
+
const {
|
|
52
|
+
create_backup,
|
|
53
|
+
restore,
|
|
54
|
+
} = require("@saltcorn/admin-models/models/backup");
|
|
48
55
|
|
|
49
56
|
/**
|
|
50
57
|
* @type {object}
|
|
@@ -249,13 +256,16 @@ router.post(
|
|
|
249
256
|
);
|
|
250
257
|
} else {
|
|
251
258
|
const newurl = getNewURL(req, subdomain);
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
+
const tenant_template = getState().getConfig("tenant_template");
|
|
260
|
+
await switchToTenant(await insertTenant(subdomain), newurl);
|
|
261
|
+
add_tenant(subdomain);
|
|
262
|
+
await create_tenant({
|
|
263
|
+
t: subdomain,
|
|
264
|
+
plugin_loader: loadAllPlugins,
|
|
265
|
+
noSignalOrDB: false,
|
|
266
|
+
loadAndSaveNewPlugin: loadAndSaveNewPlugin,
|
|
267
|
+
tenant_template,
|
|
268
|
+
});
|
|
259
269
|
let new_url_create = newurl;
|
|
260
270
|
const hasTemplate = getState().getConfig("tenant_template");
|
|
261
271
|
if (hasTemplate) {
|
package/routes/view.js
CHANGED
|
@@ -16,6 +16,7 @@ const {
|
|
|
16
16
|
isAdmin,
|
|
17
17
|
error_catcher,
|
|
18
18
|
scan_for_page_title,
|
|
19
|
+
setTenant,
|
|
19
20
|
} = require("../routes/utils.js");
|
|
20
21
|
const { add_edit_bar } = require("../markup/admin.js");
|
|
21
22
|
const { InvalidConfiguration } = require("@saltcorn/data/utils");
|
|
@@ -144,6 +145,7 @@ router.post(
|
|
|
144
145
|
*/
|
|
145
146
|
router.post(
|
|
146
147
|
["/:viewname", "/:viewname/*"],
|
|
148
|
+
setTenant,
|
|
147
149
|
error_catcher(async (req, res) => {
|
|
148
150
|
const { viewname } = req.params;
|
|
149
151
|
const role = req.user && req.user.id ? req.user.role_id : 10;
|
package/routes/viewedit.js
CHANGED
|
@@ -39,7 +39,7 @@ const Workflow = require("@saltcorn/data/models/workflow");
|
|
|
39
39
|
const User = require("@saltcorn/data/models/user");
|
|
40
40
|
const Page = require("@saltcorn/data/models/page");
|
|
41
41
|
|
|
42
|
-
const { add_to_menu } = require("@saltcorn/
|
|
42
|
+
const { add_to_menu } = require("@saltcorn/admin-models/models/pack");
|
|
43
43
|
const { editRoleForm } = require("../markup/forms.js");
|
|
44
44
|
|
|
45
45
|
/**
|
package/serve.js
CHANGED
|
@@ -11,9 +11,10 @@ const db = require("@saltcorn/data/db");
|
|
|
11
11
|
const {
|
|
12
12
|
getState,
|
|
13
13
|
init_multi_tenant,
|
|
14
|
-
create_tenant,
|
|
15
14
|
restart_tenant,
|
|
15
|
+
add_tenant,
|
|
16
16
|
} = require("@saltcorn/data/db/state");
|
|
17
|
+
const { create_tenant } = require("@saltcorn/admin-models/models/tenant");
|
|
17
18
|
|
|
18
19
|
const path = require("path");
|
|
19
20
|
|
|
@@ -38,7 +39,10 @@ const {
|
|
|
38
39
|
getRelevantPackages,
|
|
39
40
|
getPluginDirectories,
|
|
40
41
|
} = require("./restart_watcher");
|
|
41
|
-
const {
|
|
42
|
+
const {
|
|
43
|
+
eachTenant,
|
|
44
|
+
getAllTenants,
|
|
45
|
+
} = require("@saltcorn/admin-models/models/tenant");
|
|
42
46
|
|
|
43
47
|
// helpful https://gist.github.com/jpoehls/2232358
|
|
44
48
|
/**
|
|
@@ -72,7 +76,8 @@ const initMaster = async ({ disableMigrate }, useClusterAdaptor = true) => {
|
|
|
72
76
|
// switch on sql logging - but it was initiated before???
|
|
73
77
|
if (getState().getConfig("log_sql", false)) db.set_sql_logging();
|
|
74
78
|
if (db.is_it_multi_tenant()) {
|
|
75
|
-
await
|
|
79
|
+
const tenants = await getAllTenants();
|
|
80
|
+
await init_multi_tenant(loadAllPlugins, disableMigrate, tenants);
|
|
76
81
|
}
|
|
77
82
|
if (useClusterAdaptor) setupPrimary();
|
|
78
83
|
};
|
|
@@ -95,7 +100,14 @@ const workerDispatchMsg = ({ tenant, ...msg }) => {
|
|
|
95
100
|
}
|
|
96
101
|
if (msg.refresh) getState()[`refresh_${msg.refresh}`](true);
|
|
97
102
|
if (msg.createTenant) {
|
|
98
|
-
|
|
103
|
+
const tenant_template = getState().getConfig("tenant_template");
|
|
104
|
+
add_tenant(msg.createTenant);
|
|
105
|
+
create_tenant({
|
|
106
|
+
t: msg.createTenant,
|
|
107
|
+
plugin_loader: loadAllPlugins,
|
|
108
|
+
noSignalOrDB: true,
|
|
109
|
+
tenant_template,
|
|
110
|
+
});
|
|
99
111
|
db.runWithTenant(msg.createTenant, async () => {
|
|
100
112
|
getState().refresh(true);
|
|
101
113
|
});
|
|
@@ -117,29 +129,28 @@ const workerDispatchMsg = ({ tenant, ...msg }) => {
|
|
|
117
129
|
* @param {number} opts.pid
|
|
118
130
|
* @returns {function}
|
|
119
131
|
*/
|
|
120
|
-
const onMessageFromWorker =
|
|
121
|
-
masterState,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
};
|
|
132
|
+
const onMessageFromWorker =
|
|
133
|
+
(masterState, { port, watchReaper, disableScheduler, pid }) =>
|
|
134
|
+
(msg) => {
|
|
135
|
+
//console.log("worker msg", typeof msg, msg);
|
|
136
|
+
if (msg === "Start" && !masterState.started) {
|
|
137
|
+
masterState.started = true;
|
|
138
|
+
runScheduler({ port, watchReaper, disableScheduler, eachTenant });
|
|
139
|
+
require("./systemd")({ port });
|
|
140
|
+
return true;
|
|
141
|
+
} else if (msg === "RestartServer") {
|
|
142
|
+
process.exit(0);
|
|
143
|
+
return true;
|
|
144
|
+
} else if (msg.tenant || msg.createTenant) {
|
|
145
|
+
///ie from saltcorn
|
|
146
|
+
//broadcast
|
|
147
|
+
Object.entries(cluster.workers).forEach(([wpid, w]) => {
|
|
148
|
+
if (wpid !== pid) w.send(msg);
|
|
149
|
+
});
|
|
150
|
+
workerDispatchMsg(msg); //also master
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
143
154
|
|
|
144
155
|
module.exports =
|
|
145
156
|
/**
|
package/wrapper.js
CHANGED
|
@@ -174,12 +174,15 @@ const get_headers = (req, version_tag, description, extras = []) => {
|
|
|
174
174
|
from_cfg.push({ style: state.getConfig("page_custom_css", "") });
|
|
175
175
|
if (state.getConfig("page_custom_html", ""))
|
|
176
176
|
from_cfg.push({ headerTag: state.getConfig("page_custom_html", "") });
|
|
177
|
-
|
|
177
|
+
const state_headers = [];
|
|
178
|
+
for (const hs of Object.values(state.headers)) {
|
|
179
|
+
state_headers.push(...hs);
|
|
180
|
+
}
|
|
178
181
|
return [
|
|
179
182
|
...stdHeaders,
|
|
180
183
|
...iconHeader,
|
|
181
184
|
...meta_description,
|
|
182
|
-
...
|
|
185
|
+
...state_headers,
|
|
183
186
|
...extras,
|
|
184
187
|
...from_cfg,
|
|
185
188
|
];
|