@openinc/parse-server-opendash 3.3.0 → 3.4.0

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.
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,9 @@
1
+ import { User } from "parse";
2
+ /**
3
+ * Check if user has a pointer to OD3_User_Setting
4
+ * If not, create a new OD3_User_Setting object and set the pointer to the user
5
+ *
6
+ * @param object - The user object to check
7
+ * @returns {Promise<void>} - A promise that resolves when the settings are ensured
8
+ */
9
+ export declare function ensureSettings(object: User): Promise<void>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ensureSettings = ensureSettings;
4
+ const types_1 = require("../../../../types");
5
+ /**
6
+ * Check if user has a pointer to OD3_User_Setting
7
+ * If not, create a new OD3_User_Setting object and set the pointer to the user
8
+ *
9
+ * @param object - The user object to check
10
+ * @returns {Promise<void>} - A promise that resolves when the settings are ensured
11
+ */
12
+ async function ensureSettings(object) {
13
+ if (object.get("settings") === undefined) {
14
+ const userSetting = new types_1.User_Setting({
15
+ preferred_language: "deu",
16
+ });
17
+ const acl = new Parse.ACL();
18
+ acl.setReadAccess(object, true);
19
+ acl.setWriteAccess(object, true);
20
+ acl.setPublicReadAccess(false);
21
+ acl.setPublicWriteAccess(false);
22
+ userSetting.setACL(acl);
23
+ const savedsettings = await userSetting.save(null, { useMasterKey: true });
24
+ object.set("settings", savedsettings);
25
+ await object.save(null, { useMasterKey: true });
26
+ }
27
+ }
@@ -0,0 +1,2 @@
1
+ export { ensureSettings } from "./helper/ensureSettings";
2
+ export { initUserSettings } from "./services/initUserSettings";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initUserSettings = exports.ensureSettings = void 0;
4
+ var ensureSettings_1 = require("./helper/ensureSettings");
5
+ Object.defineProperty(exports, "ensureSettings", { enumerable: true, get: function () { return ensureSettings_1.ensureSettings; } });
6
+ var initUserSettings_1 = require("./services/initUserSettings");
7
+ Object.defineProperty(exports, "initUserSettings", { enumerable: true, get: function () { return initUserSettings_1.initUserSettings; } });
@@ -0,0 +1,8 @@
1
+ /**
2
+ * This function initializes user settings.
3
+ * It is called on server startup and checks if every User has a settings object.
4
+ * If not, it creates a new User_Setting object and sets the pointer to the user.
5
+ *
6
+ * @returns {Promise<void>}
7
+ */
8
+ export declare function initUserSettings(): Promise<void>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initUserSettings = initUserSettings;
4
+ const parse_1 = require("parse");
5
+ const ensureSettings_1 = require("../helper/ensureSettings");
6
+ /**
7
+ * This function initializes user settings.
8
+ * It is called on server startup and checks if every User has a settings object.
9
+ * If not, it creates a new User_Setting object and sets the pointer to the user.
10
+ *
11
+ * @returns {Promise<void>}
12
+ */
13
+ function initUserSettings() {
14
+ console.log("[@openinc/parse-server-opendash] Init user settings for all users");
15
+ return new Parse.Query(parse_1.User).each(async (user) => await (0, ensureSettings_1.ensureSettings)(user), { useMasterKey: true });
16
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Creates a random password of length 32 characters.
3
+ *
4
+ * @returns A random password of length 32 characters.
5
+ */
6
+ export declare function createRandomPassword(): Promise<string>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRandomPassword = createRandomPassword;
4
+ /**
5
+ * Creates a random password of length 32 characters.
6
+ *
7
+ * @returns A random password of length 32 characters.
8
+ */
9
+ async function createRandomPassword() {
10
+ const length = 32;
11
+ const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
12
+ let password = "";
13
+ for (let i = 0; i < length; i++) {
14
+ password += charset.charAt(Math.floor(Math.random() * charset.length));
15
+ }
16
+ return password;
17
+ }
@@ -7,7 +7,7 @@ async function init() {
7
7
  (0, __1.beforeSaveHook)(types_1.User_Setting, async (request) => {
8
8
  const { object, original, user } = request;
9
9
  await (0, __1.defaultHandler)(request);
10
- await (0, __1.defaultAclHandler)(request);
10
+ await (0, __1.defaultAclHandler)(request, { allowCustomACL: true });
11
11
  // TODO
12
12
  });
13
13
  (0, __1.afterSaveHook)(types_1.User_Setting, async (request) => {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.init = init;
4
4
  const __1 = require("..");
5
5
  const config_1 = require("../features/config");
6
+ const settings_1 = require("../features/user/settings");
6
7
  const transformLogin_1 = require("../helper/transformLogin");
7
8
  const types_1 = require("../types");
8
9
  async function init() {
@@ -94,6 +95,9 @@ async function init() {
94
95
  await (0, __1.ensureUserRole)(object, `od-tenant-admin-${prevTenantId}`, false);
95
96
  }
96
97
  }
98
+ if (!original) {
99
+ await (0, settings_1.ensureSettings)(object);
100
+ }
97
101
  });
98
102
  const verificationEmailCache = {};
99
103
  if (config_1.ConfigInstance.getInstance().getBoolean("AUTH_VERIFY_TENANT")) {
package/dist/index.js CHANGED
@@ -29,8 +29,10 @@ const featuremap_json_1 = __importDefault(require("./featuremap.json"));
29
29
  const config_1 = require("./features/config");
30
30
  const notifications_1 = require("./features/notifications");
31
31
  const permissions_1 = require("./features/permissions");
32
+ const settings_1 = require("./features/user/settings");
32
33
  const _init_1 = require("./functions/_init");
33
34
  const BreeInstance_1 = __importDefault(require("./helper/BreeInstance"));
35
+ const createRandomPassword_1 = require("./helper/createRandomPassword");
34
36
  const Core_Email_1 = require("./hooks/Core_Email");
35
37
  const _init_2 = require("./hooks/_init");
36
38
  const types_1 = require("./types");
@@ -70,6 +72,7 @@ async function init() {
70
72
  await initAutoload();
71
73
  await (0, permissions_1.initPermissions)();
72
74
  await (0, notifications_1.initNotifications)();
75
+ await (0, settings_1.initUserSettings)();
73
76
  }
74
77
  async function initBree() {
75
78
  const bree = BreeInstance_1.default.getInstance();
@@ -152,7 +155,7 @@ async function initDefaultData() {
152
155
  label: "Default Tenant",
153
156
  });
154
157
  await tenant.save(null, { useMasterKey: true });
155
- const password = await createRandomPassword();
158
+ const password = await (0, createRandomPassword_1.createRandomPassword)();
156
159
  const user = new Parse.User({
157
160
  name: "Default User",
158
161
  username: "openinc",
@@ -619,12 +622,3 @@ async function ensurePermission(key, acl) {
619
622
  return await newPermission.save(null, { useMasterKey: true });
620
623
  }
621
624
  }
622
- async function createRandomPassword() {
623
- const length = 32;
624
- const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
625
- let password = "";
626
- for (let i = 0; i < length; i++) {
627
- password += charset.charAt(Math.floor(Math.random() * charset.length));
628
- }
629
- return password;
630
- }
@@ -10,7 +10,7 @@ export interface Maintenance_Schedule_TemplateAttributes {
10
10
  cron?: any;
11
11
  description?: string;
12
12
  enabled: boolean;
13
- notifyBeforeDue: number;
13
+ notifyBeforeDue: any;
14
14
  sources: Parse.Relation<Maintenance_Schedule_Template, Source>;
15
15
  steps: Parse.Relation<Maintenance_Schedule_Template, Maintenance_Schedule_Step>;
16
16
  tenant?: Tenant;
@@ -27,8 +27,8 @@ export declare class Maintenance_Schedule_Template extends Parse.Object<Maintena
27
27
  set description(value: string | undefined);
28
28
  get enabled(): boolean;
29
29
  set enabled(value: boolean);
30
- get notifyBeforeDue(): number;
31
- set notifyBeforeDue(value: number);
30
+ get notifyBeforeDue(): any;
31
+ set notifyBeforeDue(value: any);
32
32
  get sources(): Parse.Relation<Maintenance_Schedule_Template, Source>;
33
33
  get steps(): Parse.Relation<Maintenance_Schedule_Template, Maintenance_Schedule_Step>;
34
34
  get tenant(): Tenant | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "3.3.0",
3
+ "version": "3.4.0",
4
4
  "description": "Parse Server Cloud Code for open.INC Stack.",
5
5
  "packageManager": "pnpm@10.8.1",
6
6
  "keywords": [
@@ -18,9 +18,9 @@
18
18
  "defaultValue": true
19
19
  },
20
20
  "notifyBeforeDue": {
21
- "type": "Number",
21
+ "type": "Object",
22
22
  "required": false,
23
- "defaultValue": 0
23
+ "defaultValue": {}
24
24
  },
25
25
  "sources": {
26
26
  "type": "Relation",