@entity-access/server-pages 1.1.548 → 1.1.552

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 (52) hide show
  1. package/dist/ServerPages.js +3 -3
  2. package/dist/ServerPages.js.map +1 -1
  3. package/dist/core/SessionUser.d.ts +2 -3
  4. package/dist/core/SessionUser.d.ts.map +1 -1
  5. package/dist/core/SessionUser.js +4 -12
  6. package/dist/core/SessionUser.js.map +1 -1
  7. package/dist/services/{AuthenticationService.d.ts → AuthorizationService.d.ts} +9 -3
  8. package/dist/services/AuthorizationService.d.ts.map +1 -0
  9. package/dist/services/AuthorizationService.js +65 -0
  10. package/dist/services/AuthorizationService.js.map +1 -0
  11. package/dist/services/CookieService.d.ts +1 -8
  12. package/dist/services/CookieService.d.ts.map +1 -1
  13. package/dist/services/CookieService.js +82 -154
  14. package/dist/services/CookieService.js.map +1 -1
  15. package/dist/services/IAuthKey.d.ts +7 -0
  16. package/dist/services/IAuthKey.d.ts.map +1 -0
  17. package/dist/services/IAuthKey.js +2 -0
  18. package/dist/services/IAuthKey.js.map +1 -0
  19. package/dist/services/IAuthorizationCookie.d.ts +2 -4
  20. package/dist/services/IAuthorizationCookie.d.ts.map +1 -1
  21. package/dist/services/KeyProvider.d.ts +1 -0
  22. package/dist/services/KeyProvider.d.ts.map +1 -1
  23. package/dist/services/KeyProvider.js +1 -0
  24. package/dist/services/KeyProvider.js.map +1 -1
  25. package/dist/socket/SocketService.d.ts +0 -1
  26. package/dist/socket/SocketService.d.ts.map +1 -1
  27. package/dist/socket/SocketService.js +4 -18
  28. package/dist/socket/SocketService.js.map +1 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +1 -1
  31. package/src/ServerPages.ts +3 -3
  32. package/src/core/SessionUser.ts +5 -8
  33. package/src/services/AuthorizationService.ts +73 -0
  34. package/src/services/CookieService.ts +89 -157
  35. package/src/services/IAuthKey.ts +7 -0
  36. package/src/services/IAuthorizationCookie.ts +2 -4
  37. package/src/services/KeyProvider.ts +2 -0
  38. package/src/socket/SocketService.ts +4 -12
  39. package/dist/services/AuthenticationService.d.ts.map +0 -1
  40. package/dist/services/AuthenticationService.js +0 -40
  41. package/dist/services/AuthenticationService.js.map +0 -1
  42. package/dist/services/TokenService.d.ts +0 -31
  43. package/dist/services/TokenService.d.ts.map +0 -1
  44. package/dist/services/TokenService.js +0 -60
  45. package/dist/services/TokenService.js.map +0 -1
  46. package/dist/services/UserSessionProvider.d.ts +0 -6
  47. package/dist/services/UserSessionProvider.d.ts.map +0 -1
  48. package/dist/services/UserSessionProvider.js +0 -10
  49. package/dist/services/UserSessionProvider.js.map +0 -1
  50. package/src/services/AuthenticationService.ts +0 -44
  51. package/src/services/TokenService.ts +0 -81
  52. package/src/services/UserSessionProvider.ts +0 -16
@@ -1,81 +0,0 @@
1
- import Inject, { RegisterSingleton, ServiceProvider } from "@entity-access/entity-access/dist/di/di.js";
2
- import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
3
- import { createSign, createVerify, generateKeyPair } from "node:crypto";
4
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
- import { join } from "node:path";
6
- import KeyProvider from "./KeyProvider.js";
7
-
8
- export interface IAuthCookie {
9
- id: number;
10
- userID: number;
11
- expiry: Date;
12
- sign: string;
13
- version: string;
14
- active?: boolean;
15
- }
16
-
17
- export interface IAuthKey {
18
- publicKey: string,
19
- privateKey: string,
20
- expires: DateTime
21
- }
22
-
23
- export type ISignedContent<T> = T & {
24
- sign: string;
25
- };
26
-
27
- @RegisterSingleton
28
- export default class TokenService {
29
-
30
- public authCookieName = "ea-c1";
31
-
32
- public shareCookieName = "ea-ca1";
33
-
34
- private keyProvider: KeyProvider;
35
-
36
- public async getAuthToken(authCookie: Omit<IAuthCookie, "sign">): Promise<{ cookieName: string, cookie: string}> {
37
- const cookie = await this.signContent(authCookie);
38
- return { cookieName: this.authCookieName, cookie: JSON.stringify(cookie) };
39
- }
40
-
41
- public async signContent<T>(content: T): Promise<ISignedContent<T>> {
42
- this.keyProvider ??= ServiceProvider.resolve(this, KeyProvider, true) ?? new KeyProvider();
43
- const [key] = await this.keyProvider.getKeys();
44
- const sign = this.sign(JSON.stringify(content), key);
45
- return { ... content, sign};
46
- }
47
-
48
- public async verifyContent<T>(content: ISignedContent<T>, fail = true) {
49
- this.keyProvider ??= ServiceProvider.resolve(this, KeyProvider, true) ?? new KeyProvider();
50
- const { sign , ... c } = content;
51
- const keys = await this.keyProvider.getKeys();
52
- for (const iterator of keys) {
53
- if(this.verify(JSON.stringify(c), sign, iterator, false)) {
54
- return true;
55
- }
56
- }
57
- if (fail) {
58
- throw new Error("Signature verification failed");
59
- }
60
- }
61
-
62
- public verify(content: string | Buffer, signature: string, key: IAuthKey, fail = true) {
63
- const verify = createVerify("SHA256");
64
- verify.write(content);
65
- verify.end();
66
- if(verify.verify(key.publicKey, signature, "hex")) {
67
- return true;
68
- }
69
- if (fail) {
70
- throw new Error("Invalid signature");
71
- }
72
- }
73
-
74
- private sign(content: string, key: IAuthKey) {
75
- const sign = createSign("SHA256");
76
- sign.write(content);
77
- sign.end();
78
- return sign.sign(key.privateKey, "hex");
79
- }
80
-
81
- }
@@ -1,16 +0,0 @@
1
- import { RegisterScoped, RegisterSingleton } from "@entity-access/entity-access/dist/di/di.js";
2
- import { SessionUser } from "../core/SessionUser.js";
3
- import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
4
- import { IAuthCookie } from "./TokenService.js";
5
-
6
- export default class UserSessionProvider {
7
-
8
- async getUserSession({ userID, id: sessionID, expiry}: IAuthCookie): Promise<Partial<SessionUser>> {
9
- return {
10
- sessionID,
11
- userID,
12
- expiry
13
- }
14
- }
15
-
16
- }