@owlmeans/server-auth 0.1.0

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 (182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +490 -0
  3. package/build/.gitkeep +0 -0
  4. package/build/actions/index.d.ts +2 -0
  5. package/build/actions/index.d.ts.map +1 -0
  6. package/build/actions/index.js +2 -0
  7. package/build/actions/index.js.map +1 -0
  8. package/build/actions/service.d.ts +4 -0
  9. package/build/actions/service.d.ts.map +1 -0
  10. package/build/actions/service.js +7 -0
  11. package/build/actions/service.js.map +1 -0
  12. package/build/consts.d.ts +5 -0
  13. package/build/consts.d.ts.map +1 -0
  14. package/build/consts.js +5 -0
  15. package/build/consts.js.map +1 -0
  16. package/build/index.d.ts +6 -0
  17. package/build/index.d.ts.map +1 -0
  18. package/build/index.js +5 -0
  19. package/build/index.js.map +1 -0
  20. package/build/manager/actions/index.d.ts +2 -0
  21. package/build/manager/actions/index.d.ts.map +1 -0
  22. package/build/manager/actions/index.js +2 -0
  23. package/build/manager/actions/index.js.map +1 -0
  24. package/build/manager/actions/manager.d.ts +6 -0
  25. package/build/manager/actions/manager.d.ts.map +1 -0
  26. package/build/manager/actions/manager.js +10 -0
  27. package/build/manager/actions/manager.js.map +1 -0
  28. package/build/manager/consts.d.ts +3 -0
  29. package/build/manager/consts.d.ts.map +1 -0
  30. package/build/manager/consts.js +3 -0
  31. package/build/manager/consts.js.map +1 -0
  32. package/build/manager/context.d.ts +3 -0
  33. package/build/manager/context.d.ts.map +1 -0
  34. package/build/manager/context.js +26 -0
  35. package/build/manager/context.js.map +1 -0
  36. package/build/manager/exports.d.ts +16 -0
  37. package/build/manager/exports.d.ts.map +1 -0
  38. package/build/manager/exports.js +13 -0
  39. package/build/manager/exports.js.map +1 -0
  40. package/build/manager/index.d.ts +11 -0
  41. package/build/manager/index.d.ts.map +1 -0
  42. package/build/manager/index.js +10 -0
  43. package/build/manager/index.js.map +1 -0
  44. package/build/manager/main.d.ts +3 -0
  45. package/build/manager/main.d.ts.map +1 -0
  46. package/build/manager/main.js +7 -0
  47. package/build/manager/main.js.map +1 -0
  48. package/build/manager/model.d.ts +3 -0
  49. package/build/manager/model.d.ts.map +1 -0
  50. package/build/manager/model.js +68 -0
  51. package/build/manager/model.js.map +1 -0
  52. package/build/manager/modules.d.ts +2 -0
  53. package/build/manager/modules.d.ts.map +1 -0
  54. package/build/manager/modules.js +21 -0
  55. package/build/manager/modules.js.map +1 -0
  56. package/build/manager/plugins/basic-ed25519.d.ts +4 -0
  57. package/build/manager/plugins/basic-ed25519.d.ts.map +1 -0
  58. package/build/manager/plugins/basic-ed25519.js +42 -0
  59. package/build/manager/plugins/basic-ed25519.js.map +1 -0
  60. package/build/manager/plugins/basic-rely.d.ts +4 -0
  61. package/build/manager/plugins/basic-rely.d.ts.map +1 -0
  62. package/build/manager/plugins/basic-rely.js +152 -0
  63. package/build/manager/plugins/basic-rely.js.map +1 -0
  64. package/build/manager/plugins/export.d.ts +6 -0
  65. package/build/manager/plugins/export.d.ts.map +1 -0
  66. package/build/manager/plugins/export.js +5 -0
  67. package/build/manager/plugins/export.js.map +1 -0
  68. package/build/manager/plugins/index.d.ts +4 -0
  69. package/build/manager/plugins/index.d.ts.map +1 -0
  70. package/build/manager/plugins/index.js +9 -0
  71. package/build/manager/plugins/index.js.map +1 -0
  72. package/build/manager/plugins/re-captcha.d.ts +4 -0
  73. package/build/manager/plugins/re-captcha.d.ts.map +1 -0
  74. package/build/manager/plugins/re-captcha.js +49 -0
  75. package/build/manager/plugins/re-captcha.js.map +1 -0
  76. package/build/manager/plugins/types.d.ts +25 -0
  77. package/build/manager/plugins/types.d.ts.map +1 -0
  78. package/build/manager/plugins/types.js +2 -0
  79. package/build/manager/plugins/types.js.map +1 -0
  80. package/build/manager/plugins/utils.d.ts +8 -0
  81. package/build/manager/plugins/utils.d.ts.map +1 -0
  82. package/build/manager/plugins/utils.js +18 -0
  83. package/build/manager/plugins/utils.js.map +1 -0
  84. package/build/manager/rely/flow.d.ts +5 -0
  85. package/build/manager/rely/flow.d.ts.map +1 -0
  86. package/build/manager/rely/flow.js +127 -0
  87. package/build/manager/rely/flow.js.map +1 -0
  88. package/build/manager/rely/index.d.ts +2 -0
  89. package/build/manager/rely/index.d.ts.map +1 -0
  90. package/build/manager/rely/index.js +2 -0
  91. package/build/manager/rely/index.js.map +1 -0
  92. package/build/manager/rely.d.ts +3 -0
  93. package/build/manager/rely.d.ts.map +1 -0
  94. package/build/manager/rely.js +63 -0
  95. package/build/manager/rely.js.map +1 -0
  96. package/build/manager/types.d.ts +33 -0
  97. package/build/manager/types.d.ts.map +1 -0
  98. package/build/manager/types.js +2 -0
  99. package/build/manager/types.js.map +1 -0
  100. package/build/manager/utils/index.d.ts +2 -0
  101. package/build/manager/utils/index.d.ts.map +1 -0
  102. package/build/manager/utils/index.js +2 -0
  103. package/build/manager/utils/index.js.map +1 -0
  104. package/build/manager/utils/trusted.d.ts +5 -0
  105. package/build/manager/utils/trusted.d.ts.map +1 -0
  106. package/build/manager/utils/trusted.js +11 -0
  107. package/build/manager/utils/trusted.js.map +1 -0
  108. package/build/model/index.d.ts +2 -0
  109. package/build/model/index.d.ts.map +1 -0
  110. package/build/model/index.js +2 -0
  111. package/build/model/index.js.map +1 -0
  112. package/build/model/rely/consumer.d.ts +3 -0
  113. package/build/model/rely/consumer.d.ts.map +1 -0
  114. package/build/model/rely/consumer.js +9 -0
  115. package/build/model/rely/consumer.js.map +1 -0
  116. package/build/model/rely/index.d.ts +5 -0
  117. package/build/model/rely/index.d.ts.map +1 -0
  118. package/build/model/rely/index.js +4 -0
  119. package/build/model/rely/index.js.map +1 -0
  120. package/build/model/rely/peer.d.ts +5 -0
  121. package/build/model/rely/peer.d.ts.map +1 -0
  122. package/build/model/rely/peer.js +36 -0
  123. package/build/model/rely/peer.js.map +1 -0
  124. package/build/model/rely/provider.d.ts +3 -0
  125. package/build/model/rely/provider.d.ts.map +1 -0
  126. package/build/model/rely/provider.js +6 -0
  127. package/build/model/rely/provider.js.map +1 -0
  128. package/build/model/rely/types.d.ts +8 -0
  129. package/build/model/rely/types.d.ts.map +1 -0
  130. package/build/model/rely/types.js +2 -0
  131. package/build/model/rely/types.js.map +1 -0
  132. package/build/modules.d.ts +3 -0
  133. package/build/modules.d.ts.map +1 -0
  134. package/build/modules.js +11 -0
  135. package/build/modules.js.map +1 -0
  136. package/build/service.d.ts +7 -0
  137. package/build/service.d.ts.map +1 -0
  138. package/build/service.js +90 -0
  139. package/build/service.js.map +1 -0
  140. package/build/types.d.ts +13 -0
  141. package/build/types.d.ts.map +1 -0
  142. package/build/types.js +2 -0
  143. package/build/types.js.map +1 -0
  144. package/package.json +76 -0
  145. package/src/actions/index.ts +2 -0
  146. package/src/actions/service.ts +16 -0
  147. package/src/consts.ts +8 -0
  148. package/src/index.ts +6 -0
  149. package/src/manager/README.md +507 -0
  150. package/src/manager/actions/index.ts +2 -0
  151. package/src/manager/actions/manager.ts +23 -0
  152. package/src/manager/consts.ts +4 -0
  153. package/src/manager/context.ts +33 -0
  154. package/src/manager/exports.ts +17 -0
  155. package/src/manager/index.ts +11 -0
  156. package/src/manager/main.ts +9 -0
  157. package/src/manager/model.ts +93 -0
  158. package/src/manager/modules.ts +29 -0
  159. package/src/manager/plugins/basic-ed25519.ts +56 -0
  160. package/src/manager/plugins/basic-rely.ts +167 -0
  161. package/src/manager/plugins/export.ts +6 -0
  162. package/src/manager/plugins/index.ts +13 -0
  163. package/src/manager/plugins/re-captcha.ts +62 -0
  164. package/src/manager/plugins/types.ts +27 -0
  165. package/src/manager/plugins/utils.ts +21 -0
  166. package/src/manager/rely/flow.ts +135 -0
  167. package/src/manager/rely/index.ts +2 -0
  168. package/src/manager/rely.ts +90 -0
  169. package/src/manager/types.ts +42 -0
  170. package/src/manager/utils/index.ts +2 -0
  171. package/src/manager/utils/trusted.ts +16 -0
  172. package/src/model/index.ts +2 -0
  173. package/src/model/rely/consumer.ts +11 -0
  174. package/src/model/rely/index.ts +5 -0
  175. package/src/model/rely/peer.ts +43 -0
  176. package/src/model/rely/provider.ts +9 -0
  177. package/src/model/rely/types.ts +8 -0
  178. package/src/modules.ts +17 -0
  179. package/src/service.ts +126 -0
  180. package/src/types.ts +15 -0
  181. package/tsconfig.json +15 -0
  182. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,90 @@
1
+ import { TRUSTED } from '@owlmeans/config';
2
+ import { AUTH_CACHE, AUTH_SRV_KEY, AUTHEN_TIMEFRAME, DEFAULT_ALIAS } from './consts.js';
3
+ import { assertContext, createService } from '@owlmeans/context';
4
+ import { EnvelopeKind, makeEnvelopeModel } from '@owlmeans/basic-envelope';
5
+ import { AuthenFailed, AuthorizationError, AuthroizationType } from '@owlmeans/auth';
6
+ import { createStaticResource } from '@owlmeans/static-resource';
7
+ import { trust, extractAuthToken } from '@owlmeans/auth-common/utils';
8
+ export const makeAuthService = (alias = DEFAULT_ALIAS) => {
9
+ const location = `server-auth:${alias}`;
10
+ const cache = (context) => context.resource(AUTH_CACHE);
11
+ const service = createService(alias, {
12
+ match: async (req) => extractAuthToken(req, AuthroizationType.Ed25519BasicToken) != null,
13
+ handle: async (req, res) => {
14
+ const context = assertContext(service.ctx);
15
+ const authorization = extractAuthToken(req, AuthroizationType.Ed25519BasicToken);
16
+ if (authorization == null) {
17
+ return false;
18
+ }
19
+ const envelope = makeEnvelopeModel(authorization, EnvelopeKind.Token);
20
+ const trusted = await trust(context, TRUSTED, context.cfg.alias ?? context.cfg.service);
21
+ if (!await envelope.verify(trusted.key)) {
22
+ return false;
23
+ }
24
+ res.resolve(envelope.message());
25
+ return true;
26
+ },
27
+ unpack: async (token) => {
28
+ const context = service.assertCtx();
29
+ const [, authorization] = token.split(' ');
30
+ const envelope = makeEnvelopeModel(authorization, EnvelopeKind.Token);
31
+ const trusted = await trust(context, TRUSTED, context.cfg.alias ?? context.cfg.service);
32
+ if (!await envelope.verify(trusted.key)) {
33
+ throw new AuthorizationError('unpack');
34
+ }
35
+ return envelope.message();
36
+ },
37
+ authenticated: async () => {
38
+ return null;
39
+ },
40
+ authenticate: async (token) => {
41
+ const context = assertContext(service.ctx, location);
42
+ const envelope = makeEnvelopeModel(token.token, EnvelopeKind.Token);
43
+ const authService = await trust(context, TRUSTED, AUTH_SRV_KEY);
44
+ if (!await envelope.verify(authService.key)) {
45
+ throw new AuthenFailed();
46
+ }
47
+ const credentials = envelope.message();
48
+ const msg = credentials.challenge;
49
+ // @TODO This operation is not atomic in case of redis store usage and scling
50
+ try {
51
+ await cache(context).create({ id: msg }, { ttl: AUTHEN_TIMEFRAME / 1000 });
52
+ }
53
+ catch {
54
+ throw new AuthenFailed();
55
+ }
56
+ if (credentials.credential !== authService.user.id) {
57
+ throw new AuthenFailed();
58
+ }
59
+ // @TODO Move to a plugin
60
+ const auth = {
61
+ token: credentials.challenge,
62
+ userId: credentials.userId,
63
+ scopes: credentials.scopes,
64
+ role: credentials.role,
65
+ type: AuthroizationType.Ed25519BasicToken,
66
+ source: context.cfg.service,
67
+ profileId: credentials.profileId,
68
+ entityId: credentials.entityId,
69
+ isUser: true,
70
+ createdAt: new Date()
71
+ };
72
+ const trusted = await trust(context, TRUSTED, context.cfg.alias ?? context.cfg.service);
73
+ const authorization = await makeEnvelopeModel(AuthroizationType.Ed25519BasicToken)
74
+ .send(auth, null).sign(trusted.key, EnvelopeKind.Token);
75
+ return { token: `${AuthroizationType.Ed25519BasicToken.toUpperCase()} ${authorization}` };
76
+ }
77
+ });
78
+ return service;
79
+ };
80
+ export const appendAuthService = (ctx, alias = DEFAULT_ALIAS) => {
81
+ if (!ctx.hasResource(AUTH_CACHE)) {
82
+ ctx.registerResource(createStaticResource(AUTH_CACHE));
83
+ }
84
+ const service = makeAuthService(alias);
85
+ const context = ctx;
86
+ context.registerService(service);
87
+ context.auth = () => ctx.service(service.alias);
88
+ return context;
89
+ };
90
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEvF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAGpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAKrE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAgB,aAAa,EAAe,EAAE;IAC5E,MAAM,QAAQ,GAAG,eAAe,KAAK,EAAE,CAAA;IAEvC,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAuB,EAAE,CACtD,OAAO,CAAC,QAAQ,CAAsB,UAAU,CAAC,CAAA;IAEnD,MAAM,OAAO,GAAgB,aAAa,CAAc,KAAK,EAAE;QAC7D,KAAK,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,IAAI;QAEtF,MAAM,EAAE,KAAK,EAAK,GAAoB,EAAE,GAA2B,EAAE,EAAE;YACrE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAY,CAAA;YACrD,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;YAChF,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC1B,OAAO,KAAU,CAAA;YACnB,CAAC;YAED,MAAM,QAAQ,GAAG,iBAAiB,CAAO,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAE3E,MAAM,OAAO,GAAG,MAAM,KAAK,CAAkB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxG,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,KAAU,CAAA;YACnB,CAAC;YAED,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;YAE/B,OAAO,IAAS,CAAA;QAClB,CAAC;QAED,MAAM,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YACpB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAmB,CAAA;YACpD,MAAM,CAAC,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC1C,MAAM,QAAQ,GAAG,iBAAiB,CAAO,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAE3E,MAAM,OAAO,GAAG,MAAM,KAAK,CAAkB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxG,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAA;YACxC,CAAC;YAED,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAA;QAC3B,CAAC;QAED,aAAa,EAAE,KAAK,IAAI,EAAE;YACxB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,YAAY,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YAC1B,MAAM,OAAO,GAAG,aAAa,CAAkB,OAAO,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;YAChF,MAAM,QAAQ,GAAG,iBAAiB,CAAkB,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAEpF,MAAM,WAAW,GAAG,MAAM,KAAK,CAAkB,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;YAChF,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,YAAY,EAAE,CAAA;YAC1B,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;YACtC,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAA;YAEjC,6EAA6E;YAE7E,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,gBAAgB,GAAG,IAAI,EAAE,CAAC,CAAA;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,YAAY,EAAE,CAAA;YAC1B,CAAC;YAED,IAAI,WAAW,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,IAAI,YAAY,EAAE,CAAA;YAC1B,CAAC;YAED,yBAAyB;YACzB,MAAM,IAAI,GAAS;gBACjB,KAAK,EAAE,WAAW,CAAC,SAAS;gBAC5B,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,iBAAiB,CAAC,iBAAiB;gBACzC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;gBAC3B,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAA;YAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAkB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxG,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAO,iBAAiB,CAAC,iBAAiB,CAAC;iBACrF,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAEzD,OAAO,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,aAAa,EAAE,EAAE,CAAA;QAC3F,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,GAAM,EAAE,QAAgB,aAAa,EACd,EAAE;IAEzB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,GAA4B,CAAA;IAE5C,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAChC,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAE/C,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { Auth, AuthToken } from '@owlmeans/auth';
2
+ import type { GuardService } from '@owlmeans/module';
3
+ import type { ResourceRecord } from '@owlmeans/resource';
4
+ export interface AuthService extends GuardService {
5
+ authenticate: (token: AuthToken) => Promise<AuthToken>;
6
+ unpack: (token: string) => Promise<Auth>;
7
+ }
8
+ export interface AuthServiceAppend {
9
+ auth: () => AuthService;
10
+ }
11
+ export interface AuthSpent extends ResourceRecord {
12
+ }
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IACtD,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,WAAW,CAAA;CACxB;AAED,MAAM,WAAW,SAAU,SAAQ,cAAc;CAChD"}
package/build/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@owlmeans/server-auth",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "scripts": {
6
+ "build": "tsc -b",
7
+ "dev": "sleep 276 && nodemon -e ts,tsx,json --watch src --exec \"tsc -p ./tsconfig.json\"",
8
+ "watch": "tsc -b -w --preserveWatchOutput --pretty"
9
+ },
10
+ "main": "build/index.js",
11
+ "module": "build/index.js",
12
+ "types": "build/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "import": "./build/index.js",
16
+ "require": "./build/index.js",
17
+ "default": "./build/index.js",
18
+ "module": "./build/index.js",
19
+ "types": "./build/index.d.ts"
20
+ },
21
+ "./manager": {
22
+ "import": "./build/manager/index.js",
23
+ "require": "./build/manager/index.js",
24
+ "default": "./build/manager/index.js",
25
+ "module": "./build/manager/index.js",
26
+ "types": "./build/manager/index.d.ts"
27
+ },
28
+ "./manager/plugins": {
29
+ "import": "./build/manager/plugins/export.js",
30
+ "require": "./build/manager/plugins/export.js",
31
+ "default": "./build/manager/plugins/export.js",
32
+ "module": "./build/manager/plugins/export.js",
33
+ "types": "./build/manager/plugins/export.d.ts"
34
+ }
35
+ },
36
+ "dependencies": {
37
+ "@noble/hashes": "^1.5.0",
38
+ "@owlmeans/api": "^0.1.0",
39
+ "@owlmeans/api-config-server": "^0.1.0",
40
+ "@owlmeans/auth": "^0.1.0",
41
+ "@owlmeans/auth-common": "^0.1.0",
42
+ "@owlmeans/basic-envelope": "^0.1.0",
43
+ "@owlmeans/basic-ids": "^0.1.0",
44
+ "@owlmeans/basic-keys": "^0.1.0",
45
+ "@owlmeans/client-config": "^0.1.0",
46
+ "@owlmeans/client-module": "^0.1.0",
47
+ "@owlmeans/config": "^0.1.0",
48
+ "@owlmeans/context": "^0.1.0",
49
+ "@owlmeans/kluster": "^0.1.0",
50
+ "@owlmeans/module": "^0.1.0",
51
+ "@owlmeans/redis-resource": "^0.1.0",
52
+ "@owlmeans/resource": "^0.1.0",
53
+ "@owlmeans/route": "^0.1.0",
54
+ "@owlmeans/server-api": "^0.1.0",
55
+ "@owlmeans/server-context": "^0.1.0",
56
+ "@owlmeans/server-module": "^0.1.0",
57
+ "@owlmeans/server-route": "^0.1.0",
58
+ "@owlmeans/server-socket": "^0.1.0",
59
+ "@owlmeans/socket": "^0.1.0",
60
+ "@owlmeans/static-resource": "^0.1.0",
61
+ "@scure/base": "^1.1.9"
62
+ },
63
+ "peerDependencies": {
64
+ "ajv": "*"
65
+ },
66
+ "devDependencies": {
67
+ "@types/node": "^22.7.8",
68
+ "nodemon": "^3.1.7",
69
+ "npm-check": "^6.0.1",
70
+ "typescript": "^5.6.3"
71
+ },
72
+ "private": false,
73
+ "publishConfig": {
74
+ "access": "public"
75
+ }
76
+ }
@@ -0,0 +1,2 @@
1
+
2
+ export * from './service.js'
@@ -0,0 +1,16 @@
1
+ import type { RefedModuleHandler } from '@owlmeans/server-module'
2
+ import type { AuthToken } from '@owlmeans/auth'
3
+ import { handleBody } from '@owlmeans/server-api'
4
+ import { AuthServiceAppend } from '../types.js'
5
+ import type { ServerConfig, ServerContext } from '@owlmeans/server-context'
6
+ import { assertContext } from '@owlmeans/context'
7
+
8
+ type Config = ServerConfig
9
+ type Context = ServerContext<Config> & AuthServiceAppend
10
+
11
+ export const authenticate: RefedModuleHandler<AuthToken> = handleBody(
12
+ async (payload: AuthToken, ctx) => {
13
+ const context = assertContext(ctx, 'authenticate') as Context
14
+ return await context.auth().authenticate(payload)
15
+ }
16
+ )
package/src/consts.ts ADDED
@@ -0,0 +1,8 @@
1
+
2
+ export const AUTHEN_TIMEFRAME = 10 * 60 * 1000
3
+
4
+ export const AUTH_SRV_KEY = 'auth-service'
5
+
6
+ export const DEFAULT_ALIAS = 'auth'
7
+
8
+ export const AUTH_CACHE = 'auth-cache'
package/src/index.ts ADDED
@@ -0,0 +1,6 @@
1
+
2
+ export type * from './types.js'
3
+ export * from './model/index.js'
4
+ export * from './consts.js'
5
+ export * from './modules.js'
6
+ export * from './service.js'