@social-mail/social-mail-web-server 1.7.520 → 1.7.521
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/server/model/entities/User.d.ts +4 -0
- package/dist/server/model/entities/User.d.ts.map +1 -1
- package/dist/server/model/entities/User.js +4 -0
- package/dist/server/model/entities/User.js.map +1 -1
- package/dist/server/model/entities/UserGroupMembership.d.ts +8 -0
- package/dist/server/model/entities/UserGroupMembership.d.ts.map +1 -0
- package/dist/server/model/entities/UserGroupMembership.js +39 -0
- package/dist/server/model/entities/UserGroupMembership.js.map +1 -0
- package/dist/server/model/events/MailboxEvents.d.ts.map +1 -1
- package/dist/server/model/events/MailboxEvents.js +7 -4
- package/dist/server/model/events/MailboxEvents.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/server/model/entities/User.ts +6 -0
- package/src/server/model/entities/UserGroupMembership.ts +31 -0
- package/src/server/model/events/MailboxEvents.ts +11 -4
package/package.json
CHANGED
|
@@ -19,6 +19,7 @@ import type AccessToken from "./AccessToken.js";
|
|
|
19
19
|
import { RelateTo } from "@entity-access/entity-access/dist/decorators/Relate.js";
|
|
20
20
|
import type { HostedZoneUser } from "./HostedZone.js";
|
|
21
21
|
import type { StoreAccount } from "./StoreAccount.js";
|
|
22
|
+
import type UserGroupMembership from "./UserGroupMembership.js";
|
|
22
23
|
|
|
23
24
|
export class ChangePassword {
|
|
24
25
|
|
|
@@ -130,6 +131,9 @@ export class User {
|
|
|
130
131
|
})
|
|
131
132
|
public parentID: number;
|
|
132
133
|
|
|
134
|
+
@Column({ dataType: "Boolean", default: () => false })
|
|
135
|
+
public isGroup: boolean;
|
|
136
|
+
|
|
133
137
|
@JsonProperty({ help: "Save this to change password"})
|
|
134
138
|
public changePassword: ChangePassword;
|
|
135
139
|
|
|
@@ -186,6 +190,8 @@ export class User {
|
|
|
186
190
|
closedEmails: Email[];
|
|
187
191
|
hostedZones: HostedZoneUser[];
|
|
188
192
|
storeAccount: StoreAccount;
|
|
193
|
+
groups: UserGroupMembership[];
|
|
194
|
+
groupMembers: UserGroupMembership[];
|
|
189
195
|
|
|
190
196
|
// [GraphService.toGraph]() {
|
|
191
197
|
// return {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import Column from "@entity-access/entity-access/dist/decorators/Column.js";
|
|
2
|
+
import { RelateTo, RelateToOne } from "@entity-access/entity-access/dist/decorators/Relate.js";
|
|
3
|
+
import { User } from "./User.js";
|
|
4
|
+
|
|
5
|
+
export default class UserGroupMembership {
|
|
6
|
+
@Column({ dataType: "BigInt", key: true })
|
|
7
|
+
@RelateTo(User, {
|
|
8
|
+
property: (x) => x.owner,
|
|
9
|
+
inverseProperty: (x) => x.groups,
|
|
10
|
+
foreignKeyConstraint: {
|
|
11
|
+
name: "FC_User_Group_Memberships_Owner_ID",
|
|
12
|
+
cascade: "delete"
|
|
13
|
+
}
|
|
14
|
+
})
|
|
15
|
+
ownerID: number;
|
|
16
|
+
|
|
17
|
+
@Column({ dataType: "BigInt", key: true})
|
|
18
|
+
@RelateTo(User, {
|
|
19
|
+
property: (x) => x.group,
|
|
20
|
+
inverseProperty: (x) => x.groupMembers,
|
|
21
|
+
foreignKeyConstraint: {
|
|
22
|
+
name: "FC_User_Group_Memberships_Group_ID",
|
|
23
|
+
cascade: "delete"
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
groupID: number;
|
|
27
|
+
|
|
28
|
+
owner: User;
|
|
29
|
+
|
|
30
|
+
group: User;
|
|
31
|
+
}
|
|
@@ -106,7 +106,7 @@ export default class MailboxEvents extends AuthenticatedEvents<Mailbox> {
|
|
|
106
106
|
const { userID } = this.sessionUser;
|
|
107
107
|
return query.where({ userID }, (p) => (x) =>
|
|
108
108
|
x.userMailboxes.some((um) => um.userID === p.userID)
|
|
109
|
-
|| x.domain.hostedDomain.domainUsers.some((d) => d.userID === p.userID
|
|
109
|
+
|| x.domain.hostedDomain.domainUsers.some((d) => d.userID === p.userID));
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
modify(query: IEntityQuery<Mailbox>): IEntityQuery<Mailbox> {
|
|
@@ -274,18 +274,25 @@ export default class MailboxEvents extends AuthenticatedEvents<Mailbox> {
|
|
|
274
274
|
// }
|
|
275
275
|
|
|
276
276
|
await db.fileContents.asQuery()
|
|
277
|
-
.where(entity, (p) => (x) => x.appFiles.some((a) =>
|
|
277
|
+
.where(entity, (p) => (x) => x.appFiles.some((a) =>
|
|
278
|
+
a.email.threadContacts.some((m) => m.mailboxID === p.mailboxID)
|
|
279
|
+
|| a.email.mailboxContactEvents.some((m) => m.mailboxID === p.mailboxID)
|
|
280
|
+
))
|
|
278
281
|
.update(void 0, (p) => (x) => ({
|
|
279
282
|
deleted: true
|
|
280
283
|
}));
|
|
281
284
|
|
|
282
285
|
|
|
283
286
|
await db.appFiles.asQuery()
|
|
284
|
-
.delete(entity, (p) => (x) => x.email.
|
|
287
|
+
.delete(entity, (p) => (x) => x.email.threadContacts.some((m) => m.mailboxID === p.mailboxID)
|
|
288
|
+
|| x.email.mailboxContactEvents.some((m) => m.mailboxID === p.mailboxID));
|
|
285
289
|
|
|
286
290
|
|
|
287
291
|
await db.emails.asQuery()
|
|
288
|
-
.delete(entity, (p) => (x) =>
|
|
292
|
+
.delete(entity, (p) => (x) =>
|
|
293
|
+
x.threadContacts.some((m) => m.mailboxID === p.mailboxID)
|
|
294
|
+
|| x.mailboxContactEvents.some((m) => m.mailboxID === p.mailboxID)
|
|
295
|
+
);
|
|
289
296
|
|
|
290
297
|
await db.mailboxContactEmails.asQuery()
|
|
291
298
|
.delete(entity, (p) => (x) => x.mailboxID === p.mailboxID);
|