@social-mail/social-mail-web-server 1.8.413 → 1.8.415

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;IAWpF,iBAAiB,CAAC,SAAS,EAAE,GAAG;;;;;;;;;;;;;;;;;;YAmCxB,UAAU;CAiB3B"}
@@ -63,48 +63,42 @@ 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) {
104
98
  // delete key path...
105
99
  if (user.keyPath) {
106
- await this.diskCache.deleteAt(user.keyPath);
107
- await this.diskCache.deleteAt(user.userID.toString(36));
100
+ this.cache.delete(user.keyPath);
101
+ this.userIDCache.delete(user.userID.toString(36));
108
102
  }
109
103
  }
110
104
  return super.setAuthCookie(user, authCookie);
@@ -151,18 +145,18 @@ let UserAuthorizationService = class UserAuthorizationService extends Authorizat
151
145
  async clearLogin(userID) {
152
146
  try {
153
147
  const userKey = userID.toString(36);
154
- const keyPath = await this.diskCache.getOrCreateJsonAsync(userKey, () => Promise.reject(new Error("not found")));
148
+ const keyPath = await this.userIDCache.getOrCreate(userKey, null, (c) => c);
155
149
  if (keyPath) {
156
- await this.diskCache.deleteAt(keyPath);
150
+ this.cache.delete(keyPath);
157
151
  }
158
- await this.diskCache.deleteAt(userKey);
152
+ this.userIDCache.delete(userKey);
159
153
  }
160
154
  catch (error) {
161
155
  // ignore this error...
162
156
  if (error?.message === "not found") {
163
157
  return;
164
158
  }
165
- console.error(error);
159
+ console.warn(error);
166
160
  }
167
161
  }
168
162
  };
@@ -1 +1 @@
1
- {"version":3,"file":"UserAuthorizationService.js","sourceRoot":"","sources":["../../../src/server/services/UserAuthorizationService.ts"],"names":[],"mappings":"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"}
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;AAG/D,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,UAAU,MAAM,8DAA8D,CAAC;AAGvE,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,oBAAoB;IAQtE;QACI,KAAK,EAAE,CAAC;QAPZ,UAAK,GAAG,IAAI,UAAU,CAAC,KAAK,EAAC,KAAK,CAAC,CAAC;QACpC,gBAAW,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAOxC,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,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YAC9D,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,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,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,MAAM,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,IAAY,CAAC,YAAY,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,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,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACtD,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,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5E,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,uBAAuB;YACvB,IAAI,KAAK,EAAE,OAAO,KAAK,WAAW,EAAE,CAAC;gBACjC,OAAO;YACX,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;CAEJ,CAAA;AA5FG;IADC,MAAM;8BACH,gBAAgB;oDAAC;AANJ,wBAAwB;IAD5C,iBAAiB;;GACG,wBAAwB,CAkG5C;eAlGoB,wBAAwB"}