@social-mail/social-mail-web-server 1.8.414 → 1.8.416

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.
@@ -1,10 +1,11 @@
1
1
  import AuthorizationService, { ICookie } from "@entity-access/server-pages/dist/services/AuthorizationService.js";
2
2
  import { SessionUser } from "@entity-access/server-pages/dist/core/SessionUser.js";
3
- import BaseDiskCache from "../../common/BaseDiskCache.js";
4
3
  import { IAuthorizationCookie } from "@entity-access/server-pages/dist/services/IAuthorizationCookie.js";
5
4
  import MessagingService from "./message-events/MessagingService.js";
5
+ import TimedCache from "@entity-access/entity-access/dist/common/cache/TimedCache.js";
6
6
  export default class UserAuthorizationService extends AuthorizationService {
7
- diskCache: BaseDiskCache;
7
+ cache: TimedCache<any, any>;
8
+ userIDCache: TimedCache<any, any>;
8
9
  ms: MessagingService;
9
10
  constructor();
10
11
  loadUserSessionFromCookie(cookie: string, user: SessionUser): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"UserAuthorizationService.d.ts","sourceRoot":"","sources":["../../../src/server/services/UserAuthorizationService.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,EAAE,EAAE,OAAO,EAAE,MAAM,mEAAmE,CAAC;AAGlH,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AACnF,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAG1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mEAAmE,CAAC;AACzG,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AAGpE,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,oBAAoB;IAEtE,SAAS,gBAIN;IAGH,EAAE,EAAE,gBAAgB,CAAC;;IASf,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;IAqB3D,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAWpF,iBAAiB,CAAC,SAAS,EAAE,GAAG;;;;;;;;;;;;;;;;;;YAmCxB,UAAU;CAiB3B"}
1
+ {"version":3,"file":"UserAuthorizationService.d.ts","sourceRoot":"","sources":["../../../src/server/services/UserAuthorizationService.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,EAAE,EAAE,OAAO,EAAE,MAAM,mEAAmE,CAAC;AAGlH,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mEAAmE,CAAC;AACzG,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,UAAU,MAAM,8DAA8D,CAAC;AAGtF,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,oBAAoB;IAEtE,KAAK,uBAA+B;IACpC,WAAW,uBAAiC;IAG5C,EAAE,EAAE,gBAAgB,CAAC;;IASf,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;IAoB3D,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAepF,iBAAiB,CAAC,SAAS,EAAE,GAAG;;;;;;;;;;;;;;;;;;YAmCxB,UAAU;CAiB3B"}
@@ -63,48 +63,46 @@ import Inject, { RegisterSingleton, ServiceProvider } from "@entity-access/entit
63
63
  import AuthorizationService from "@entity-access/server-pages/dist/services/AuthorizationService.js";
64
64
  import SocialMailContext from "../model/SocialMailContext.js";
65
65
  import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
66
- import BaseDiskCache from "../../common/BaseDiskCache.js";
67
- import { join } from "path";
68
- import { globalEnv } from "../../common/globalEnv.js";
69
66
  import MessagingService from "./message-events/MessagingService.js";
67
+ import TimedCache from "@entity-access/entity-access/dist/common/cache/TimedCache.js";
70
68
  let UserAuthorizationService = class UserAuthorizationService extends AuthorizationService {
71
69
  constructor() {
72
70
  super();
73
- this.diskCache = new BaseDiskCache({
74
- root: join(globalEnv.cacheDir, globalEnv.serverID, "user-sessions"),
75
- keepTTLSeconds: 60 * 60 * 1000,
76
- maxAge: 24 * 60 * 60 * 1000
77
- });
71
+ this.cache = new TimedCache(60000, 90000);
72
+ this.userIDCache = new TimedCache(90000, 180000);
78
73
  process.nextTick(() => {
79
74
  this.ms.removeUserLoginSessions.on(({ userID }) => this.clearLogin(userID));
80
75
  });
81
76
  }
82
77
  async loadUserSessionFromCookie(cookie, user) {
83
- const keyPath = cookie.replaceAll(":", "-");
84
- const info = await this.diskCache.getOrCreateJsonAsync(keyPath, async () => {
78
+ const info = await this.cache.getOrCreateAsync(cookie, async () => {
85
79
  const sessionID = await this.decode(cookie);
86
80
  return await this.loadSessionFromDb(sessionID);
87
81
  });
88
82
  user.sessionID = info.sessionID;
89
83
  if (!info.userID) {
90
84
  // delete cache. cache is invalid...
91
- await this.diskCache.deleteAt(keyPath);
85
+ this.cache.delete(cookie);
92
86
  return;
93
87
  }
94
88
  user.userID = info.userID;
95
89
  user.roles = info.roles;
96
90
  user.expiry = info.expiry;
97
- user.keyPath = keyPath;
91
+ user.keyPath = cookie;
98
92
  user.fileAccessList = info.fileAccessList;
99
93
  user.isAuthorized = true;
100
- await this.diskCache.getOrCreateJsonAsync(user.userID.toString(36), () => Promise.resolve(keyPath));
94
+ this.userIDCache.getOrCreate(user.userID.toString(36), cookie, (c) => c);
101
95
  }
102
96
  async setAuthCookie(user, authCookie) {
103
97
  if (authCookie === null) {
98
+ const { userID } = user;
99
+ if (userID) {
100
+ this.ms.removeUserLoginSessions.notify({ userID });
101
+ }
104
102
  // delete key path...
105
103
  if (user.keyPath) {
106
- await this.diskCache.deleteAt(user.keyPath);
107
- await this.diskCache.deleteAt(user.userID.toString(36));
104
+ this.cache.delete(user.keyPath);
105
+ this.userIDCache.delete(user.userID.toString(36));
108
106
  }
109
107
  }
110
108
  return super.setAuthCookie(user, authCookie);
@@ -151,18 +149,18 @@ let UserAuthorizationService = class UserAuthorizationService extends Authorizat
151
149
  async clearLogin(userID) {
152
150
  try {
153
151
  const userKey = userID.toString(36);
154
- const keyPath = await this.diskCache.getOrCreateJsonAsync(userKey, () => Promise.reject(new Error("not found")));
152
+ const keyPath = await this.userIDCache.getOrCreate(userKey, null, (c) => c);
155
153
  if (keyPath) {
156
- await this.diskCache.deleteAt(keyPath);
154
+ this.cache.delete(keyPath);
157
155
  }
158
- await this.diskCache.deleteAt(userKey);
156
+ this.userIDCache.delete(userKey);
159
157
  }
160
158
  catch (error) {
161
159
  // ignore this error...
162
160
  if (error?.message === "not found") {
163
161
  return;
164
162
  }
165
- console.error(error);
163
+ console.warn(error);
166
164
  }
167
165
  }
168
166
  };
@@ -1 +1 @@
1
- {"version":3,"file":"UserAuthorizationService.js","sourceRoot":"","sources":["../../../src/server/services/UserAuthorizationService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,MAAM,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AACxG,OAAO,oBAAiC,MAAM,mEAAmE,CAAC;AAClH,OAAO,iBAAiB,MAAM,+BAA+B,CAAC;AAC9D,OAAO,GAAG,MAAM,8CAA8C,CAAC;AAE/D,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AAGrD,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,oBAAoB;IAWtE;QACI,KAAK,EAAE,CAAC;QAVZ,cAAS,GAAG,IAAI,aAAa,CAAC;YAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC;YACnE,cAAc,EAAE,EAAE,GAAC,EAAE,GAAC,IAAI;YAC1B,MAAM,EAAE,EAAE,GAAC,EAAE,GAAC,EAAE,GAAC,IAAI;SACxB,CAAC,CAAC;QAOC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,MAAc,EAAE,IAAiB;QAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,oCAAoC;YACpC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO;QACX,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,IAAY,CAAC,YAAY,GAAG,IAAI,CAAC;QAClC,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAChH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAiB,EAAE,UAAgC;QACnE,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACtB,qBAAqB;YACrB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,SAAc;;;YAElC,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,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;mBAC9F,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC;iBACtB,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,EAAE,SAAS,EAAE,CAAC;YACzB,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,SAAS;gBACT,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,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;IAEO,KAAK,CAAC,UAAU,CAAC,MAAM;QAC3B,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAS,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzH,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,uBAAuB;YACvB,IAAI,KAAK,EAAE,OAAO,KAAK,WAAW,EAAE,CAAC;gBACjC,OAAO;YACX,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;CAEJ,CAAA;AA7FG;IADC,MAAM;8BACH,gBAAgB;oDAAC;AATJ,wBAAwB;IAD5C,iBAAiB;;GACG,wBAAwB,CAsG5C;eAtGoB,wBAAwB"}
1
+ {"version":3,"file":"UserAuthorizationService.js","sourceRoot":"","sources":["../../../src/server/services/UserAuthorizationService.ts"],"names":[],"mappings":"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"}