@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/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, create_tenant } = require("@saltcorn/data/db/state");
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
- } = require("@saltcorn/data/models/tenant");
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
- await create_tenant(
253
- subdomain,
254
- loadAllPlugins,
255
- newurl,
256
- false,
257
- loadAndSaveNewPlugin
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;
@@ -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/data/models/pack");
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 { spawnSync } = require("child_process");
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 init_multi_tenant(loadAllPlugins, disableMigrate);
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
- create_tenant(msg.createTenant, loadAllPlugins, "", true);
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
- { port, watchReaper, disableScheduler, pid }
123
- ) => (msg) => {
124
- //console.log("worker msg", typeof msg, msg);
125
- if (msg === "Start" && !masterState.started) {
126
- masterState.started = true;
127
- runScheduler({ port, watchReaper, disableScheduler });
128
- require("./systemd")({ port });
129
- return true;
130
- } else if (msg === "RestartServer") {
131
- process.exit(0);
132
- return true;
133
- } else if (msg.tenant || msg.createTenant) {
134
- ///ie from saltcorn
135
- //broadcast
136
- Object.entries(cluster.workers).forEach(([wpid, w]) => {
137
- if (wpid !== pid) w.send(msg);
138
- });
139
- workerDispatchMsg(msg); //also master
140
- return true;
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
- ...state.headers,
185
+ ...state_headers,
183
186
  ...extras,
184
187
  ...from_cfg,
185
188
  ];