@social-mail/social-mail-web-server 1.8.403 → 1.8.405

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.
Files changed (76) hide show
  1. package/dist/WebServer.d.ts +1 -0
  2. package/dist/WebServer.d.ts.map +1 -1
  3. package/dist/WebServer.js +3 -2
  4. package/dist/WebServer.js.map +1 -1
  5. package/dist/common/BaseDiskCache.d.ts +1 -0
  6. package/dist/common/BaseDiskCache.d.ts.map +1 -1
  7. package/dist/common/BaseDiskCache.js +4 -0
  8. package/dist/common/BaseDiskCache.js.map +1 -1
  9. package/dist/server/model/ReadOnlySocialMailContext.d.ts +1 -0
  10. package/dist/server/model/ReadOnlySocialMailContext.d.ts.map +1 -1
  11. package/dist/server/model/ReadOnlySocialMailContext.js +15 -12
  12. package/dist/server/model/ReadOnlySocialMailContext.js.map +1 -1
  13. package/dist/server/model/events/AppFileAccessEvents.d.ts +1 -1
  14. package/dist/server/model/events/AppFileAccessEvents.d.ts.map +1 -1
  15. package/dist/server/model/events/AppFileAccessEvents.js +6 -6
  16. package/dist/server/model/events/AppFileAccessEvents.js.map +1 -1
  17. package/dist/server/model/events/LoginSessionEvents.d.ts.map +1 -1
  18. package/dist/server/model/events/LoginSessionEvents.js +5 -11
  19. package/dist/server/model/events/LoginSessionEvents.js.map +1 -1
  20. package/dist/server/model/events/VerificationTokenEvents.d.ts.map +1 -1
  21. package/dist/server/model/events/VerificationTokenEvents.js +1 -3
  22. package/dist/server/model/events/VerificationTokenEvents.js.map +1 -1
  23. package/dist/server/services/AppKeyProvider.d.ts +2 -2
  24. package/dist/server/services/AppKeyProvider.d.ts.map +1 -1
  25. package/dist/server/services/AppKeyProvider.js +9 -7
  26. package/dist/server/services/AppKeyProvider.js.map +1 -1
  27. package/dist/server/services/CryptoService.d.ts +4 -2
  28. package/dist/server/services/CryptoService.d.ts.map +1 -1
  29. package/dist/server/services/CryptoService.js.map +1 -1
  30. package/dist/server/services/UserAuthorizationService.d.ts +25 -0
  31. package/dist/server/services/UserAuthorizationService.d.ts.map +1 -0
  32. package/dist/server/services/{UserInfoProvider.js → UserAuthorizationService.js} +79 -14
  33. package/dist/server/services/UserAuthorizationService.js.map +1 -0
  34. package/dist/server/services/encryption/TokenService.d.ts +6 -0
  35. package/dist/server/services/encryption/TokenService.d.ts.map +1 -0
  36. package/dist/server/services/encryption/TokenService.js +26 -0
  37. package/dist/server/services/encryption/TokenService.js.map +1 -0
  38. package/dist/server/services/message-events/MessagingService.d.ts +3 -0
  39. package/dist/server/services/message-events/MessagingService.d.ts.map +1 -1
  40. package/dist/server/services/message-events/MessagingService.js +1 -0
  41. package/dist/server/services/message-events/MessagingService.js.map +1 -1
  42. package/dist/tsconfig.tsbuildinfo +1 -1
  43. package/dist/wwwroot/routes/callback/smtp/data/index.d.ts +1 -1
  44. package/dist/wwwroot/routes/callback/smtp/data/index.d.ts.map +1 -1
  45. package/dist/wwwroot/routes/callback/smtp/data/index.js +5 -5
  46. package/dist/wwwroot/routes/callback/smtp/data/index.js.map +1 -1
  47. package/dist/wwwroot/routes/callback/smtp/rcpt/index.d.ts +1 -1
  48. package/dist/wwwroot/routes/callback/smtp/rcpt/index.d.ts.map +1 -1
  49. package/dist/wwwroot/routes/callback/smtp/rcpt/index.js +5 -5
  50. package/dist/wwwroot/routes/callback/smtp/rcpt/index.js.map +1 -1
  51. package/dist/wwwroot/routes/social-mail/site/signup/post.d.ts.map +1 -1
  52. package/dist/wwwroot/routes/social-mail/site/signup/post.js +1 -3
  53. package/dist/wwwroot/routes/social-mail/site/signup/post.js.map +1 -1
  54. package/dist/wwwroot/routes/social-mail/user/signup/post.d.ts.map +1 -1
  55. package/dist/wwwroot/routes/social-mail/user/signup/post.js +1 -3
  56. package/dist/wwwroot/routes/social-mail/user/signup/post.js.map +1 -1
  57. package/package.json +5 -5
  58. package/src/WebServer.ts +4 -2
  59. package/src/common/BaseDiskCache.ts +5 -0
  60. package/src/server/model/ReadOnlySocialMailContext.ts +15 -15
  61. package/src/server/model/events/AppFileAccessEvents.ts +4 -4
  62. package/src/server/model/events/LoginSessionEvents.ts +5 -11
  63. package/src/server/model/events/VerificationTokenEvents.ts +1 -3
  64. package/src/server/services/AppKeyProvider.ts +9 -7
  65. package/src/server/services/CryptoService.ts +1 -2
  66. package/src/server/services/UserAuthorizationService.ts +111 -0
  67. package/src/server/services/encryption/TokenService.ts +17 -0
  68. package/src/server/services/message-events/MessagingService.ts +3 -0
  69. package/src/wwwroot/routes/callback/smtp/data/index.ts +4 -3
  70. package/src/wwwroot/routes/callback/smtp/rcpt/index.ts +3 -4
  71. package/src/wwwroot/routes/social-mail/site/signup/post.tsx +1 -3
  72. package/src/wwwroot/routes/social-mail/user/signup/post.tsx +1 -3
  73. package/dist/server/services/UserInfoProvider.d.ts +0 -17
  74. package/dist/server/services/UserInfoProvider.d.ts.map +0 -1
  75. package/dist/server/services/UserInfoProvider.js.map +0 -1
  76. package/src/server/services/UserInfoProvider.ts +0 -46
@@ -27,6 +27,8 @@ export default class MessagingService extends ServiceObject {
27
27
 
28
28
  clearDnsCache: IMessageChannel;
29
29
 
30
+ removeUserLoginSessions: IMessageChannel<{ userID }>;
31
+
30
32
  @Inject
31
33
  private pgEvents: PgEvents;
32
34
 
@@ -34,6 +36,7 @@ export default class MessagingService extends ServiceObject {
34
36
  this.channelRefresh = this.segment(`web-site-channel-host-clear-${globalEnv.serverID}`);
35
37
  this.refreshDns = this.segment("refresh-dns");
36
38
  this.restartDns = this.segment("restart-dns");
39
+ this.removeUserLoginSessions = this.segment(`remove-user-login-sessions-${globalEnv.serverID}`);
37
40
  this.snapshotRefresh = this.segment(`snapshot-refresh-${globalEnv.serverID}`);
38
41
  this.reputationCleared = this.segment(`reputation-cleared-${globalEnv.serverID}`);
39
42
  this.certificateIssued = this.segment(`certificate-issued`);
@@ -4,20 +4,21 @@ import { SmtpStatusCodes } from "../../../../../server/smtp/client/SmtpStatusCod
4
4
  import { createPublicKey } from "node:crypto";
5
5
  import Content from "@entity-access/server-pages/dist/Content.js";
6
6
  import Page from "@entity-access/server-pages/dist/Page.js";
7
- import TokenService from "@entity-access/server-pages/dist/services/TokenService.js";
8
7
  import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
8
+ import TokenService from "../../../../../server/services/encryption/TokenService.js";
9
9
 
10
10
  let publicKey: any;
11
11
 
12
12
  @Prepare.parseForm
13
13
  export default class extends Page {
14
14
 
15
- @Inject
16
- private tokenService: TokenService;
17
15
 
18
16
  @Inject
19
17
  private mailReceiverService: MailReceiverService;
20
18
 
19
+ @Inject
20
+ private tokenService: TokenService;
21
+
21
22
  async run() {
22
23
 
23
24
  publicKey ??= createPublicKey({
@@ -4,9 +4,9 @@ import { SmtpStatusCodes } from "../../../../../server/smtp/client/SmtpStatusCod
4
4
  import { createPublicKey } from "node:crypto";
5
5
  import Content from "@entity-access/server-pages/dist/Content.js";
6
6
  import Page from "@entity-access/server-pages/dist/Page.js";
7
- import TokenService from "@entity-access/server-pages/dist/services/TokenService.js";
8
7
  import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
9
8
  import { globalEnv } from "../../../../../common/globalEnv.js";
9
+ import TokenService from "../../../../../server/services/encryption/TokenService.js";
10
10
 
11
11
  let publicKey:any;
12
12
 
@@ -15,12 +15,11 @@ export default class extends Page {
15
15
 
16
16
  maxUploadSize = 50*1024*1024;
17
17
 
18
- @Inject
19
- private tokenService: TokenService;
20
-
21
18
  @Inject
22
19
  private mailReceiverService: MailReceiverService;
23
20
 
21
+ @Inject
22
+ private tokenService: TokenService;
24
23
 
25
24
  async run() {
26
25
 
@@ -237,10 +237,8 @@ export default class ExternalSignup extends Page {
237
237
 
238
238
  await this.sessionUser.setAuthCookie({
239
239
  userID: loginSession.userID,
240
- id: loginSession.sessionID,
240
+ sessionID: loginSession.sessionID,
241
241
  expiry: expiry.asJSDate,
242
- version: "1.1",
243
- active: true
244
242
  });
245
243
 
246
244
  return this.json(model);
@@ -217,10 +217,8 @@ export default class extends Page {
217
217
  });
218
218
  await this.sessionUser.setAuthCookie({
219
219
  userID: session.userID,
220
- id: session.sessionID,
220
+ sessionID: session.sessionID,
221
221
  expiry: session.expiry.asJSDate,
222
- version: "1.1",
223
- active: true
224
222
  });
225
223
 
226
224
  return this.json(model);
@@ -1,17 +0,0 @@
1
- import { IAuthCookie } from "@entity-access/server-pages/dist/services/TokenService.js";
2
- import USP from "@entity-access/server-pages/dist/services/UserSessionProvider.js";
3
- export default class UserSessionProvider extends USP {
4
- getUserSession({ userID, id: sessionID, expiry }: IAuthCookie): Promise<{
5
- userID: number;
6
- sessionID: number;
7
- userName: string;
8
- expiry: Date;
9
- roles: string[];
10
- fileAccessList: {
11
- type: "create" | "read" | "write" | "delegate";
12
- path: string;
13
- }[];
14
- invalid: boolean;
15
- }>;
16
- }
17
- //# sourceMappingURL=UserInfoProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UserInfoProvider.d.ts","sourceRoot":"","sources":["../../../src/server/services/UserInfoProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAC;AACxF,OAAO,GAAG,MAAM,kEAAkE,CAAC;AAKnF,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,GAAG;IAE1C,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,WAAW;;;;;;;;;;;;CAoCtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UserInfoProvider.js","sourceRoot":"","sources":["../../../src/server/services/UserInfoProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAEhG,OAAO,GAAG,MAAM,kEAAkE,CAAC;AACnF,OAAO,iBAAiB,MAAM,+BAA+B,CAAC;AAC9D,OAAO,GAAG,MAAM,8CAA8C,CAAC;AAGhD,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,GAAG;IAEhD,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAe;;;YAE/D,mFAAmF;YAEnF,MAAM,KAAK,kCAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAA,CAAC;YAChD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAE5C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;mBAChG,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC;iBACrD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACZ,CAAC,CAAC,IAAI,CAAC,KAAK;gBACZ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5C,gFAAgF;aACnF,CAAC;iBACD,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,oBAAoB;YACpB,MAAM,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC;iBAChF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aACxC,CAAC,CAAC,CAAC;YAER,OAAO;gBACH,MAAM;gBACN,SAAS;gBACT,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;gBAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;gBAC/B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACvD,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/F,OAAO,EAAE,KAAK;aACjB,CAAC;;;;;;;;;KACL;CAEJ,CAAA;AAtCoB,mBAAmB;IADvC,iBAAiB;GACG,mBAAmB,CAsCvC;eAtCoB,mBAAmB"}
@@ -1,46 +0,0 @@
1
- import { RegisterSingleton, ServiceProvider } from "@entity-access/entity-access/dist/di/di.js";
2
- import { IAuthCookie } from "@entity-access/server-pages/dist/services/TokenService.js";
3
- import USP from "@entity-access/server-pages/dist/services/UserSessionProvider.js";
4
- import SocialMailContext from "../model/SocialMailContext.js";
5
- import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
6
-
7
- @RegisterSingleton
8
- export default class UserSessionProvider extends USP {
9
-
10
- async getUserSession({ userID, id: sessionID, expiry }: IAuthCookie) {
11
-
12
- /** The new scope will not interfere with existing DbContext for current request */
13
-
14
- using scope = ServiceProvider.createScope(this);
15
- const db = scope.resolve(SocialMailContext);
16
-
17
- const session = await db.loginSessions.where({ userID, sessionID }, (p) => (x) => x.userID === p.userID
18
- && x.sessionID === p.sessionID && x.invalid === false)
19
- .include((x) => [
20
- x.user.roles,
21
- x.user.fileAccessList.forEach((f) => f.file),
22
- // x.user.groups.forEach((g) => g.group.fileAccessList.forEach((gf) => gf.file))
23
- ])
24
- .first();
25
- if (!session?.user) {
26
- return null;
27
- }
28
-
29
- // extend session...
30
- await db.loginSessions.where({ sessionID }, (p) => (x)=> x.sessionID === p.sessionID)
31
- .update(void 0, (p) => (x) => ({
32
- expiry: Sql.date.addDays(x.expiry, 7)
33
- }));
34
-
35
- return {
36
- userID,
37
- sessionID,
38
- userName: session.user.userName,
39
- expiry: session.expiry.asJSDate,
40
- roles: session.user.roles?.map((x) => x.roleName) ?? [],
41
- fileAccessList: session.user.fileAccessList?.map(({ type, file: { path }}) => ({ type, path })),
42
- invalid: false
43
- };
44
- }
45
-
46
- }