@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-web-server",
3
- "version": "1.7.520",
3
+ "version": "1.7.521",
4
4
  "description": "## Phase 1",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -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 && d.isAdmin === true));
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) => a.email.mailboxContactEvents.some((m) => m.mailboxID === p.mailboxID)))
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.mailboxContactEvents.some((m) => m.mailboxID === p.mailboxID));
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) => x.mailboxContactEvents.some((m) => m.mailboxID === p.mailboxID));
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);