@openinc/parse-server-opendash 2.3.14 → 2.4.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/dist/functions/openinc-auth-login.js +5 -0
- package/dist/hooks/Core_Email.js +8 -4
- package/dist/hooks/_User.js +40 -1
- package/dist/hooks/_beforeLogin.js +3 -3
- package/dist/types/GTFS_Route.d.ts +3 -0
- package/dist/types/GTFS_Route.js +6 -0
- package/dist/types/GTFS_Trip.d.ts +3 -0
- package/dist/types/GTFS_Trip.js +6 -0
- package/dist/types/Maintenance_Message.d.ts +4 -0
- package/dist/types/Maintenance_Message.js +6 -0
- package/dist/types/Maintenance_Message_Body.d.ts +7 -0
- package/dist/types/Maintenance_Message_Body.js +12 -0
- package/package.json +1 -1
- package/schema/GTFS_Route.json +4 -0
- package/schema/GTFS_Trip.json +4 -0
- package/schema/Maintenance_Message.json +5 -0
- package/schema/Maintenance_Message_Body.json +9 -0
package/dist/hooks/Core_Email.js
CHANGED
|
@@ -54,7 +54,7 @@ async function sendTemplateEmail({ to, subject, fallback, template, data, }) {
|
|
|
54
54
|
const email = new types_1.Core_Email({
|
|
55
55
|
payload: {
|
|
56
56
|
to,
|
|
57
|
-
subject,
|
|
57
|
+
subject: renderEmailTemplate("subject", template, data, subject),
|
|
58
58
|
text: renderEmailTemplate("txt", template, data, fallback),
|
|
59
59
|
html: renderEmailTemplate("html", template, data, undefined),
|
|
60
60
|
},
|
|
@@ -75,9 +75,13 @@ function validateEmailTemplate(templateDir, template) {
|
|
|
75
75
|
}
|
|
76
76
|
function renderEmailTemplate(type, template, data, fallback) {
|
|
77
77
|
const fullTemplate = template + "." + type;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
if (validateEmailTemplate(emailTemplateDir, fullTemplate)) {
|
|
79
|
+
return nunjucks_1.default.render(fullTemplate, data);
|
|
80
|
+
}
|
|
81
|
+
if (type === "html") {
|
|
82
|
+
return renderEmailTemplate("txt", template, data, fallback);
|
|
83
|
+
}
|
|
84
|
+
return fallback || "";
|
|
81
85
|
}
|
|
82
86
|
async function init() {
|
|
83
87
|
(0, __1.beforeSaveHook)(types_1.Core_Email, async (request) => {
|
package/dist/hooks/_User.js
CHANGED
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.init = void 0;
|
|
4
4
|
const __1 = require("..");
|
|
5
|
+
const config_1 = require("../config");
|
|
5
6
|
const types_1 = require("../types");
|
|
6
7
|
async function init() {
|
|
7
8
|
(0, __1.beforeSaveHook)(Parse.User, async (request) => {
|
|
8
9
|
const user = request.object;
|
|
9
10
|
const tenant = user.get("tenant");
|
|
10
11
|
const tenantId = tenant?.id;
|
|
11
|
-
user.set("
|
|
12
|
+
user.set("email", user.get("email")?.toLowerCase().trim());
|
|
13
|
+
user.set("username", user.get("username")?.toLowerCase().trim());
|
|
12
14
|
if (tenant) {
|
|
13
15
|
await tenant.fetch({ useMasterKey: true });
|
|
14
16
|
}
|
|
@@ -104,5 +106,42 @@ async function init() {
|
|
|
104
106
|
}
|
|
105
107
|
}
|
|
106
108
|
});
|
|
109
|
+
const verificationEmailCache = {};
|
|
110
|
+
if (config_1.config.getBoolean("AUTH_VERIFY_TENANT")) {
|
|
111
|
+
(0, __1.afterSaveHook)(Parse.User, async (request) => {
|
|
112
|
+
const object = request.object;
|
|
113
|
+
const original = request.original;
|
|
114
|
+
const tenant = object.get("tenant");
|
|
115
|
+
if (tenant && !original && object.get("tenantVerified") === false) {
|
|
116
|
+
const admins = await new Parse.Query(Parse.User)
|
|
117
|
+
.equalTo("tenant", tenant)
|
|
118
|
+
.equalTo("tenantAdmin", true)
|
|
119
|
+
.findAll({ useMasterKey: true });
|
|
120
|
+
for (const admin of admins) {
|
|
121
|
+
await (0, __1.sendTemplateEmail)({
|
|
122
|
+
template: "openinc-auth-tenant-verification-request",
|
|
123
|
+
subject: "Ein neuer Nutzer muss verifiziert werden",
|
|
124
|
+
to: admin.get("email"),
|
|
125
|
+
fallback: "Ein neuer Nutzer muss verifiziert werden",
|
|
126
|
+
data: {},
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (!verificationEmailCache[object.id] &&
|
|
131
|
+
tenant &&
|
|
132
|
+
original?.get("tenantVerified") === false &&
|
|
133
|
+
object.get("tenantVerified") === true) {
|
|
134
|
+
const email = object.get("email");
|
|
135
|
+
verificationEmailCache[object.id] = true;
|
|
136
|
+
await (0, __1.sendTemplateEmail)({
|
|
137
|
+
template: "openinc-auth-tenant-verification",
|
|
138
|
+
subject: "Dein Account wurde verifiziert",
|
|
139
|
+
to: email,
|
|
140
|
+
fallback: "Account wurde verifiziert",
|
|
141
|
+
data: {},
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
107
146
|
}
|
|
108
147
|
exports.init = init;
|
|
@@ -6,15 +6,15 @@ async function init() {
|
|
|
6
6
|
Parse.Cloud.beforeLogin(async ({ object }) => {
|
|
7
7
|
const verifyEmail = config_1.config.getBoolean("AUTH_VERIFY_EMAIL");
|
|
8
8
|
if (verifyEmail && !object.get("emailVerified")) {
|
|
9
|
-
throw new Parse.Error(-1, "
|
|
9
|
+
throw new Parse.Error(-1, "t:AUTH_MISSING_EMAIL_VERIFICATION");
|
|
10
10
|
}
|
|
11
11
|
if (object.get("tenant")) {
|
|
12
12
|
const verifyTenant = config_1.config.getBoolean("AUTH_VERIFY_TENANT");
|
|
13
13
|
if (verifyTenant && !object.get("tenantVerified")) {
|
|
14
|
-
throw new Parse.Error(-1, "
|
|
14
|
+
throw new Parse.Error(-1, "t:AUTH_MISSING_TENANT_VERIFICATION");
|
|
15
15
|
}
|
|
16
16
|
if (object.get("tenantBanned")) {
|
|
17
|
-
throw new Parse.Error(-1, "
|
|
17
|
+
throw new Parse.Error(-1, "t:AUTH_BANNED");
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
});
|
|
@@ -7,6 +7,7 @@ export interface GTFS_RouteAttributes {
|
|
|
7
7
|
createdAt: Date;
|
|
8
8
|
updatedAt: Date;
|
|
9
9
|
agency_id: GTFS_Agency;
|
|
10
|
+
key: string;
|
|
10
11
|
route_color?: string;
|
|
11
12
|
route_desc?: string;
|
|
12
13
|
route_id: string;
|
|
@@ -23,6 +24,8 @@ export declare class GTFS_Route extends Parse.Object<GTFS_RouteAttributes> {
|
|
|
23
24
|
constructor(data?: Partial<GTFS_RouteAttributes>);
|
|
24
25
|
get agency_id(): GTFS_Agency;
|
|
25
26
|
set agency_id(value: GTFS_Agency);
|
|
27
|
+
get key(): string;
|
|
28
|
+
set key(value: string);
|
|
26
29
|
get route_color(): string | undefined;
|
|
27
30
|
set route_color(value: string | undefined);
|
|
28
31
|
get route_desc(): string | undefined;
|
package/dist/types/GTFS_Route.js
CHANGED
|
@@ -11,6 +11,12 @@ class GTFS_Route extends Parse.Object {
|
|
|
11
11
|
set agency_id(value) {
|
|
12
12
|
super.set("agency_id", value);
|
|
13
13
|
}
|
|
14
|
+
get key() {
|
|
15
|
+
return super.get("key");
|
|
16
|
+
}
|
|
17
|
+
set key(value) {
|
|
18
|
+
super.set("key", value);
|
|
19
|
+
}
|
|
14
20
|
get route_color() {
|
|
15
21
|
return super.get("route_color");
|
|
16
22
|
}
|
|
@@ -12,6 +12,7 @@ export interface GTFS_TripAttributes {
|
|
|
12
12
|
updatedAt: Date;
|
|
13
13
|
bikes_allowed?: GTFS_Bikes_Allowed;
|
|
14
14
|
direction_id?: GTFS_Direction;
|
|
15
|
+
key: string;
|
|
15
16
|
route_id: GTFS_Route;
|
|
16
17
|
service_id: GTFS_Calendar;
|
|
17
18
|
tenant: Tenant;
|
|
@@ -26,6 +27,8 @@ export declare class GTFS_Trip extends Parse.Object<GTFS_TripAttributes> {
|
|
|
26
27
|
set bikes_allowed(value: GTFS_Bikes_Allowed | undefined);
|
|
27
28
|
get direction_id(): GTFS_Direction | undefined;
|
|
28
29
|
set direction_id(value: GTFS_Direction | undefined);
|
|
30
|
+
get key(): string;
|
|
31
|
+
set key(value: string);
|
|
29
32
|
get route_id(): GTFS_Route;
|
|
30
33
|
set route_id(value: GTFS_Route);
|
|
31
34
|
get service_id(): GTFS_Calendar;
|
package/dist/types/GTFS_Trip.js
CHANGED
|
@@ -17,6 +17,12 @@ class GTFS_Trip extends Parse.Object {
|
|
|
17
17
|
set direction_id(value) {
|
|
18
18
|
super.set("direction_id", value);
|
|
19
19
|
}
|
|
20
|
+
get key() {
|
|
21
|
+
return super.get("key");
|
|
22
|
+
}
|
|
23
|
+
set key(value) {
|
|
24
|
+
super.set("key", value);
|
|
25
|
+
}
|
|
20
26
|
get route_id() {
|
|
21
27
|
return super.get("route_id");
|
|
22
28
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="parse" />
|
|
2
|
+
import type { Tenant } from "./Tenant";
|
|
2
3
|
import type { _User } from "./_User";
|
|
3
4
|
export interface Maintenance_MessageAttributes {
|
|
4
5
|
id: string;
|
|
@@ -8,6 +9,7 @@ export interface Maintenance_MessageAttributes {
|
|
|
8
9
|
classname: string;
|
|
9
10
|
data?: any;
|
|
10
11
|
referencedObjectId: string;
|
|
12
|
+
tenant?: Tenant;
|
|
11
13
|
title?: string;
|
|
12
14
|
user?: _User;
|
|
13
15
|
}
|
|
@@ -20,6 +22,8 @@ export declare class Maintenance_Message extends Parse.Object<Maintenance_Messag
|
|
|
20
22
|
set data(value: any | undefined);
|
|
21
23
|
get referencedObjectId(): string;
|
|
22
24
|
set referencedObjectId(value: string);
|
|
25
|
+
get tenant(): Tenant | undefined;
|
|
26
|
+
set tenant(value: Tenant | undefined);
|
|
23
27
|
get title(): string | undefined;
|
|
24
28
|
set title(value: string | undefined);
|
|
25
29
|
get user(): _User | undefined;
|
|
@@ -23,6 +23,12 @@ class Maintenance_Message extends Parse.Object {
|
|
|
23
23
|
set referencedObjectId(value) {
|
|
24
24
|
super.set("referencedObjectId", value);
|
|
25
25
|
}
|
|
26
|
+
get tenant() {
|
|
27
|
+
return super.get("tenant");
|
|
28
|
+
}
|
|
29
|
+
set tenant(value) {
|
|
30
|
+
super.set("tenant", value);
|
|
31
|
+
}
|
|
26
32
|
get title() {
|
|
27
33
|
return super.get("title");
|
|
28
34
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="parse" />
|
|
2
2
|
import type { Maintenance_Message } from "./Maintenance_Message";
|
|
3
|
+
import type { Tenant } from "./Tenant";
|
|
3
4
|
import type { _User } from "./_User";
|
|
4
5
|
export interface Maintenance_Message_BodyAttributes {
|
|
5
6
|
id: string;
|
|
@@ -7,7 +8,9 @@ export interface Maintenance_Message_BodyAttributes {
|
|
|
7
8
|
createdAt: Date;
|
|
8
9
|
updatedAt: Date;
|
|
9
10
|
content?: string;
|
|
11
|
+
data?: any;
|
|
10
12
|
message?: Maintenance_Message;
|
|
13
|
+
tenant?: Tenant;
|
|
11
14
|
user?: _User;
|
|
12
15
|
}
|
|
13
16
|
export declare class Maintenance_Message_Body extends Parse.Object<Maintenance_Message_BodyAttributes> {
|
|
@@ -15,8 +18,12 @@ export declare class Maintenance_Message_Body extends Parse.Object<Maintenance_M
|
|
|
15
18
|
constructor(data?: Partial<Maintenance_Message_BodyAttributes>);
|
|
16
19
|
get content(): string | undefined;
|
|
17
20
|
set content(value: string | undefined);
|
|
21
|
+
get data(): any | undefined;
|
|
22
|
+
set data(value: any | undefined);
|
|
18
23
|
get message(): Maintenance_Message | undefined;
|
|
19
24
|
set message(value: Maintenance_Message | undefined);
|
|
25
|
+
get tenant(): Tenant | undefined;
|
|
26
|
+
set tenant(value: Tenant | undefined);
|
|
20
27
|
get user(): _User | undefined;
|
|
21
28
|
set user(value: _User | undefined);
|
|
22
29
|
}
|
|
@@ -11,12 +11,24 @@ class Maintenance_Message_Body extends Parse.Object {
|
|
|
11
11
|
set content(value) {
|
|
12
12
|
super.set("content", value);
|
|
13
13
|
}
|
|
14
|
+
get data() {
|
|
15
|
+
return super.get("data");
|
|
16
|
+
}
|
|
17
|
+
set data(value) {
|
|
18
|
+
super.set("data", value);
|
|
19
|
+
}
|
|
14
20
|
get message() {
|
|
15
21
|
return super.get("message");
|
|
16
22
|
}
|
|
17
23
|
set message(value) {
|
|
18
24
|
super.set("message", value);
|
|
19
25
|
}
|
|
26
|
+
get tenant() {
|
|
27
|
+
return super.get("tenant");
|
|
28
|
+
}
|
|
29
|
+
set tenant(value) {
|
|
30
|
+
super.set("tenant", value);
|
|
31
|
+
}
|
|
20
32
|
get user() {
|
|
21
33
|
return super.get("user");
|
|
22
34
|
}
|
package/package.json
CHANGED
package/schema/GTFS_Route.json
CHANGED
package/schema/GTFS_Trip.json
CHANGED
|
@@ -4,11 +4,20 @@
|
|
|
4
4
|
"type": "String",
|
|
5
5
|
"required": false
|
|
6
6
|
},
|
|
7
|
+
"data": {
|
|
8
|
+
"type": "Object",
|
|
9
|
+
"required": false
|
|
10
|
+
},
|
|
7
11
|
"message": {
|
|
8
12
|
"type": "Pointer",
|
|
9
13
|
"targetClass": "{{PREFIX}}Maintenance_Message",
|
|
10
14
|
"required": false
|
|
11
15
|
},
|
|
16
|
+
"tenant": {
|
|
17
|
+
"type": "Pointer",
|
|
18
|
+
"targetClass": "{{PREFIX}}Tenant",
|
|
19
|
+
"required": false
|
|
20
|
+
},
|
|
12
21
|
"user": {
|
|
13
22
|
"type": "Pointer",
|
|
14
23
|
"targetClass": "_User",
|