@intuitionrobotics/user-account 0.41.74 → 0.42.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.
@@ -1,7 +1,7 @@
1
1
  import { Module } from "@intuitionrobotics/ts-common";
2
2
  import { FirestoreTransaction } from "@intuitionrobotics/firebase/backend";
3
- import { DB_Account, DB_Session, FrontType, Request_CreateAccount, Request_LoginAccount, Request_UpsertAccount, Response_Auth, UI_Account, UI_Session } from "./_imports";
4
- import { ExpressRequest, HeaderKey, QueryRequestInfo } from "@intuitionrobotics/thunderstorm/backend";
3
+ import { DB_Account, DB_Session, FrontType, Request_CreateAccount, Request_LoginAccount, Request_UpsertAccount, Response_Auth, Response_Validation, UI_Account, UI_Session } from "./_imports";
4
+ import { ApiResponse, ExpressRequest, HeaderKey, QueryRequestInfo } from "@intuitionrobotics/thunderstorm/backend";
5
5
  export declare const Header_SessionId: HeaderKey;
6
6
  declare type Config = {
7
7
  projectId: string;
@@ -9,6 +9,7 @@ declare type Config = {
9
9
  web: number;
10
10
  app: number;
11
11
  };
12
+ jwtSecretKey: string;
12
13
  };
13
14
  export declare const Collection_Sessions = "user-account--sessions";
14
15
  export declare const Collection_Accounts = "user-account--accounts";
@@ -46,6 +47,11 @@ export declare class AccountsModule_Class extends Module<Config> implements Quer
46
47
  private loginValidate;
47
48
  loginSAML(__email: string): Promise<Response_Auth>;
48
49
  private createSAML;
50
+ private isAuthRequest;
51
+ private verifyAccount;
52
+ validateAuthenticationHeader(request: ExpressRequest, response?: ApiResponse): Promise<Response_Validation>;
53
+ generateJWT(account: UI_Account, sessionId: string): string;
54
+ validateRequest: (request: ExpressRequest, response?: ApiResponse | undefined) => Promise<UI_Account>;
49
55
  validateSession(request: ExpressRequest): Promise<UI_Account>;
50
56
  validateSessionId(sessionId: string): Promise<UI_Account>;
51
57
  private getUserEmailFromSession;
@@ -33,6 +33,7 @@ const backend_1 = require("@intuitionrobotics/firebase/backend");
33
33
  const _imports_1 = require("./_imports");
34
34
  const backend_2 = require("@intuitionrobotics/thunderstorm/backend");
35
35
  const backend_3 = require("@intuitionrobotics/db-api-generator/backend");
36
+ const SecretsModule_1 = require("../../shared/modules/SecretsModule");
36
37
  exports.Header_SessionId = new backend_2.HeaderKey(_imports_1.HeaderKey_SessionId);
37
38
  exports.Collection_Sessions = "user-account--sessions";
38
39
  exports.Collection_Accounts = "user-account--accounts";
@@ -45,6 +46,12 @@ function getUIAccount(account) {
45
46
  class AccountsModule_Class extends ts_common_1.Module {
46
47
  constructor() {
47
48
  super();
49
+ this.isAuthRequest = (request) => request.header(SecretsModule_1.SecretsModule.AUTHENTICATION_KEY) !== undefined;
50
+ this.validateRequest = (request, response) => __awaiter(this, void 0, void 0, function* () {
51
+ if (this.isAuthRequest(request))
52
+ return this.validateAuthenticationHeader(request, response);
53
+ return yield this.validateSession(request);
54
+ });
48
55
  this.TTLExpired = (session) => {
49
56
  const delta = ts_common_1.currentTimeMillies() - session.timestamp;
50
57
  let sessionTTLms = this.config.sessionTTLms.web;
@@ -65,9 +72,9 @@ class AccountsModule_Class extends ts_common_1.Module {
65
72
  yield this.sessions.upsert(session);
66
73
  }
67
74
  const account = yield this.getUserEmailFromSession(session);
68
- return { sessionId: session.sessionId, email: account.email };
75
+ return { sessionId: session.sessionId, email: account.email, _id: account._id };
69
76
  });
70
- this.setDefaultConfig({ sessionTTLms: { web: ts_common_1.Day, app: ts_common_1.Day } });
77
+ this.setDefaultConfig({ sessionTTLms: { web: ts_common_1.Day, app: ts_common_1.Day }, jwtSecretKey: "TS_AUTH_SECRET" });
71
78
  }
72
79
  __queryRequestInfo(request) {
73
80
  return __awaiter(this, void 0, void 0, function* () {
@@ -91,17 +98,23 @@ class AccountsModule_Class extends ts_common_1.Module {
91
98
  getUser(_email) {
92
99
  return __awaiter(this, void 0, void 0, function* () {
93
100
  const email = _email.toLowerCase();
94
- return this.accounts.queryUnique({ where: { email }, select: ["email", "_id"] });
101
+ return this.accounts.queryUnique({
102
+ where: { email },
103
+ select: ["email",
104
+ "_id"]
105
+ });
95
106
  });
96
107
  }
97
108
  listUsers() {
98
109
  return __awaiter(this, void 0, void 0, function* () {
99
- return this.accounts.getAll(["_id", "email"]);
110
+ return this.accounts.getAll(["_id",
111
+ "email"]);
100
112
  });
101
113
  }
102
114
  listSessions() {
103
115
  return __awaiter(this, void 0, void 0, function* () {
104
- return this.sessions.getAll(["userId", "timestamp"]);
116
+ return this.sessions.getAll(["userId",
117
+ "timestamp"]);
105
118
  });
106
119
  }
107
120
  getSession(_email) {
@@ -115,7 +128,11 @@ class AccountsModule_Class extends ts_common_1.Module {
115
128
  const account = yield this.getSession(_email);
116
129
  if (!account)
117
130
  return;
118
- const sessions = yield this.sessions.query({ select: ["userId", "timestamp", "frontType"], where: { userId: account._id } });
131
+ const sessions = yield this.sessions.query({
132
+ select: ["userId",
133
+ "timestamp",
134
+ "frontType"], where: { userId: account._id }
135
+ });
119
136
  return sessions.map((session) => {
120
137
  return Object.assign(Object.assign({}, session), { isExpired: this.TTLExpired(session) });
121
138
  });
@@ -223,20 +240,20 @@ class AccountsModule_Class extends ts_common_1.Module {
223
240
  account._id = ts_common_1.generateHex(32);
224
241
  yield this.accounts.upsert(account);
225
242
  }
226
- let session;
243
+ let sessionWithAccountId;
227
244
  if (doCreateSession)
228
- session = yield this.upsertSession(account._id, request.frontType);
245
+ sessionWithAccountId = yield this.upsertSession(account._id, request.frontType);
229
246
  yield dispatch_onUserLogin.dispatchModuleAsync([getUIAccount(account)]);
230
- return session;
247
+ return sessionWithAccountId;
231
248
  });
232
249
  }
233
250
  loginSAML(__email) {
234
251
  return __awaiter(this, void 0, void 0, function* () {
235
252
  const _email = __email.toLowerCase();
236
253
  const account = yield this.createSAML(_email);
237
- const session = yield this.upsertSession(account._id);
254
+ const sessionWithAccountId = yield this.upsertSession(account._id);
238
255
  yield dispatch_onUserLogin.dispatchModuleAsync([getUIAccount(account)]);
239
- return session;
256
+ return sessionWithAccountId;
240
257
  });
241
258
  }
242
259
  createSAML(__email) {
@@ -257,6 +274,40 @@ class AccountsModule_Class extends ts_common_1.Module {
257
274
  return toRet;
258
275
  });
259
276
  }
277
+ verifyAccount(account) {
278
+ if (!account)
279
+ throw new ts_common_1.BadImplementationException('Missing account in token payload');
280
+ const email = account['email'];
281
+ if (!email || typeof email !== 'string')
282
+ throw new ts_common_1.BadImplementationException('Missing email in token payload');
283
+ const _id = account['_id'];
284
+ if (!_id || typeof _id !== 'string')
285
+ throw new ts_common_1.BadImplementationException('Missing _id in token payload');
286
+ return { _id, email };
287
+ }
288
+ validateAuthenticationHeader(request, response) {
289
+ return __awaiter(this, void 0, void 0, function* () {
290
+ const token = SecretsModule_1.SecretsModule.validateRequest(request);
291
+ const payload = token.payload;
292
+ const isExpired = SecretsModule_1.SecretsModule.isExpired(token);
293
+ const sessionId = payload.sessionId;
294
+ if (!sessionId)
295
+ throw new ts_common_1.BadImplementationException(`Missing session id in token ${JSON.stringify(payload)}`);
296
+ if (!isExpired) {
297
+ const account = payload.account;
298
+ this.verifyAccount(account);
299
+ return account;
300
+ }
301
+ const resp = yield this.validateSession(sessionId);
302
+ // Set in header response
303
+ if (response)
304
+ response.setHeaders({ "jwt": this.generateJWT(resp, sessionId) });
305
+ return resp;
306
+ });
307
+ }
308
+ generateJWT(account, sessionId) {
309
+ return SecretsModule_1.SecretsModule.generateJwt({ account, sessionId, exp: ts_common_1.currentTimeMillies() + (30 * ts_common_1.Minute) }, this.config.jwtSecretKey);
310
+ }
260
311
  validateSession(request) {
261
312
  return __awaiter(this, void 0, void 0, function* () {
262
313
  const sessionId = exports.Header_SessionId.get(request);
@@ -1 +1 @@
1
- {"version":3,"file":"AccountModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/AccountModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/AccountModule.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,4DAYsC;AAGtC,iEAI6C;AAC7C,yCAYoB;AACpB,qEAMiD;AACjD,yEAA0E;AAC1E,sEAAiE;AAEpD,QAAA,gBAAgB,GAAG,IAAI,mBAAS,CAAC,8BAAmB,CAAC,CAAC;AAQtD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAC/C,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAU5D,MAAM,oBAAoB,GAAG,IAAI,sBAAU,CAA+B,eAAe,CAAC,CAAC;AAC3F,MAAM,4BAA4B,GAAG,IAAI,sBAAU,CAA+C,uBAAuB,CAAC,CAAC;AAE3H,SAAS,YAAY,CAAC,OAAmB;IACxC,MAAM,EAAC,KAAK,EAAE,GAAG,EAAC,GAAG,OAAO,CAAC;IAC7B,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC;AACrB,CAAC;AAED,MAAa,oBACZ,SAAQ,kBAAc;IAEtB;QACC,KAAK,EAAE,CAAC;QA+ND,kBAAa,GAAG,CAAC,OAAuB,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,6BAAa,CAAC,kBAAkB,CAAC,KAAK,SAAS,CAAC;QA2CpH,oBAAe,GAAG,CAAO,OAAuB,EAAE,QAAsB,EAAgC,EAAE;YACzG,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;gBAC9B,OAAO,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAE5D,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAA,CAAC;QAiCM,eAAU,GAAG,CAAC,OAAmB,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,8BAAkB,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;YACvD,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;YAEhD,IAAI,OAAO,CAAC,SAAS,KAAK,oBAAS,CAAC,GAAG;gBACtC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;YAE7C,OAAO,KAAK,GAAG,YAAY,IAAI,KAAK,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEK,kBAAa,GAAG,CAAO,MAAc,EAAE,SAAqB,EAA0B,EAAE;YAC9F,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,EAAC,MAAM,EAAC,EAAC,CAAC,CAAC;YACjE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACzC,OAAO,GAAG;oBACT,SAAS,EAAE,uBAAW,CAAC,EAAE,CAAC;oBAC1B,SAAS,EAAE,8BAAkB,EAAE;oBAC/B,MAAM;iBACN,CAAC;gBAEF,IAAI,SAAS;oBACZ,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;gBAE/B,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACpC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAC5D,OAAO,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAC,CAAC;QAC/E,CAAC,CAAA,CAAC;QA1UD,IAAI,CAAC,gBAAgB,CAAC,EAAC,YAAY,EAAE,EAAC,GAAG,EAAE,eAAG,EAAE,GAAG,EAAE,eAAG,EAAC,EAAE,YAAY,EAAE,gBAAgB,EAAC,CAAC,CAAC;IAC7F,CAAC;IAEK,kBAAkB,CAAC,OAAuB;;YAC/C,IAAI,IAA4B,CAAC;YACjC,IAAI;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aAC3C;YAAC,OAAO,CAAC,EAAE;aACX;YAED,OAAO;gBACN,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;gBACnB,IAAI,EAAE,IAAI;aACV,CAAC;QACH,CAAC;KAAA;IAKS,IAAI;QACb,MAAM,SAAS,GAAG,wBAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC;QAC1F,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAa,2BAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAa,2BAAmB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,CAAC;IAEK,OAAO,CAAC,MAAc;;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACC,KAAK,EAAE,EAAC,KAAK,EAAC;gBACd,MAAM,EAAE,CAAC,OAAO;oBACP,KAAK,CAAC;aACf,CAAC,CAAC;QACrC,CAAC;KAAA;IAEK,SAAS;;YACd,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK;gBACL,OAAO,CAAC,CAA8C,CAAC;QACrF,CAAC;KAAA;IAEK,YAAY;;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ;gBACR,WAAW,CAAC,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,UAAU,CAAC,MAAc;;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,EAAC,KAAK,EAAC,EAAC,CAAC,CAAC;QACpD,CAAC;KAAA;IAEK,aAAa,CAAC,MAAc;;YACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBACX,OAAO;YAER,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACC,MAAM,EAAE,CAAC,QAAQ;oBACR,WAAW;oBACX,WAAW,CAAC,EAAE,KAAK,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAC;aACnD,CAAC,CAAC;YAC9C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAmB,EAAE,EAAE;gBAC3C,uCACI,OAAO,KACV,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IACnC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;KAAA;IAEK,MAAM,CAAC,OAA8B;;YAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChF,OAAO,OAAO,CAAC;QAChB,CAAC;KAAA;IAEK,MAAM,CAAC,OAA8B;;YAC1C,IAAI,QAAQ,GAA4B,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAO,WAAW,EAAE,EAAE;gBAC1E,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,CAAC,CAAC;gBACnG,IAAI,YAAY;oBACf,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAE1E,QAAQ,GAAG,GAAS,EAAE,gDAAC,OAAA,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,GAAA,CAAC;gBACjG,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC9C,CAAC,CAAA,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,QAAQ,EAAE,CAAA;YAChB,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;KAAA;IAEK,aAAa,CAAC,KAAa,EAAE,QAAiB,EAAE,cAAuB;;YAC5E,IAAI,OAAmB,CAAC;YACxB,IAAI,QAAQ,IAAI,cAAc,EAAE;gBAC/B,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAC,CAAC,CAAC;gBACtE,MAAM,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAChF;;gBACA,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAExC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;KAAA;IAEK,cAAc,CAAC,SAAiB,EAAE,WAAmB,EAAE,YAAmC;;YAC/F,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,CAAO,WAAiC,EAAE,EAAE;gBAC7D,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,EAAC,KAAK,EAAC,EAAC,CAAC,CAAC;gBAC/E,IAAI,CAAC,OAAO;oBACX,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;gBAE/D,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI;oBAC3C,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;gBAEzD,OAAO,CAAC,cAAc,GAAG,gCAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACzE,OAAO,CAAC,MAAM,GAAG,mBAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;gBAEpD,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC,CAAA,CAAC;YAEF,IAAI,YAAY;gBACf,OAAO,SAAS,CAAC,YAAY,CAAC,CAAA;YAE/B,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;KAAA;IAEK,aAAa,CAAC,OAA8B;;YACjD,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC5C,oBAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,uBAAa,CAAC,CAAC;YAEvC,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAO,WAAiC,EAAE,EAAE;gBACjF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,CAAC,CAAC;gBAC9F,IAAI,OAAO;oBACV,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;gBAE/D,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAC7C,CAAC,CAAA,CAAC,CAAC;QACJ,CAAC;KAAA;IAEO,UAAU,CAAC,OAA8B,EAAE,WAAiC;QACnF,MAAM,IAAI,GAAG,uBAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG;YACf,GAAG,EAAE,uBAAW,CAAC,EAAE,CAAC;YACpB,MAAM,EAAE,mBAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI;YACJ,cAAc,EAAE,gCAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;SAC5D,CAAC;QAEF,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAEK,MAAM,CAAC,SAAiB;;YAC7B,MAAM,KAAK,GAAG,EAAC,KAAK,EAAE,EAAC,SAAS,EAAC,EAAC,CAAC;YACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;KAAA;IAEK,KAAK,CAAC,OAA6B;;YACxC,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;KAAA;IAIa,aAAa,CAAC,OAA6B,EAAE,eAAe,GAAG,IAAI;;YAChF,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBACX,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YAExD,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI;gBAC3C,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;YAEzD,IAAI,OAAO,CAAC,cAAc,KAAK,gCAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;gBAClF,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;YAE3D,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBACjB,OAAO,CAAC,GAAG,GAAG,uBAAW,CAAC,EAAE,CAAC,CAAC;gBAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACpC;YAED,IAAI,oBAA+C,CAAA;YACnD,IAAI,eAAe;gBAClB,oBAAoB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAEjF,MAAM,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,oBAAoB,CAAC;QAC7B,CAAC;KAAA;IAEK,SAAS,CAAC,OAAe;;YAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnE,MAAM,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,oBAAoB,CAAC;QAC7B,CAAC;KAAA;IAEa,UAAU,CAAC,OAAe;;YACvC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAC,EAAC,CAAC;YACvC,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAa,CAAO,WAAW,EAAE,EAAE;gBACpF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACpE,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG;oBACf,OAAO,OAAO,CAAC;gBAEhB,MAAM,QAAQ,mBACb,GAAG,EAAE,uBAAW,CAAC,EAAE,CAAC,EACpB,MAAM,EAAE,mBAAO,CAAC,MAAM,CAAC,EACvB,KAAK,EAAE,MAAM,IACV,OAAO,CACV,CAAC;gBAEF,aAAa,GAAG,IAAI,CAAC;gBACrB,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC,CAAA,CAAC,CAAC;YAEH,IAAI,aAAa;gBAChB,MAAM,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE/E,OAAO,KAAK,CAAC;QACd,CAAC;KAAA;IAIO,aAAa,CAAC,OAAY;QACjC,IAAI,CAAC,OAAO;YACX,MAAM,IAAI,sCAA0B,CAAC,kCAAkC,CAAC,CAAA;QAEzE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YACtC,MAAM,IAAI,sCAA0B,CAAC,gCAAgC,CAAC,CAAA;QAEvE,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAClC,MAAM,IAAI,sCAA0B,CAAC,8BAA8B,CAAC,CAAA;QAErE,OAAO,EAAC,GAAG,EAAE,KAAK,EAAC,CAAA;IACpB,CAAC;IAEK,4BAA4B,CAAC,OAAuB,EAAE,QAAsB;;YACjF,MAAM,KAAK,GAAG,6BAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,MAAM,SAAS,GAAG,6BAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,IAAI,CAAC,SAAS;gBACb,MAAM,IAAI,sCAA0B,CAAC,+BAA+B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAE/F,IAAI,CAAC,SAAS,EAAE;gBACf,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gBAChC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5B,OAAO,OAAO,CAAA;aACd;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACnD,yBAAyB;YACzB,IAAI,QAAQ;gBACX,QAAQ,CAAC,UAAU,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,EAAC,CAAC,CAAA;YAEhE,OAAO,IAAI,CAAC;QACb,CAAC;KAAA;IAEM,WAAW,CAAC,OAAmB,EAAE,SAAiB;QACxD,OAAO,6BAAa,CAAC,WAAW,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,8BAAkB,EAAE,GAAG,CAAC,EAAE,GAAG,kBAAM,CAAC,EAAC,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAC5H,CAAC;IASK,eAAe,CAAC,OAAuB;;YAC5C,MAAM,SAAS,GAAG,wBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS;gBACb,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAElD,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEK,iBAAiB,CAAC,SAAiB;;YACxC,MAAM,KAAK,GAAG,EAAC,KAAK,EAAE,EAAC,SAAS,EAAC,EAAC,CAAC;YAEnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBACX,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,uBAAuB,SAAS,EAAE,CAAC,CAAC;YAEjE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC3B,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAElD,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;KAAA;IAEa,uBAAuB,CAAC,OAAmB;;YACxD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,EAAC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAC,EAAC,CAAC,CAAC;YAChF,IAAI,CAAC,OAAO,EAAE;gBACb,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACxC,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,8BAA8B,uBAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aAClF;YAED,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;KAAA;CA+BD;AAjVD,oDAiVC;AAGY,QAAA,aAAa,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intuitionrobotics/user-account",
3
- "version": "0.41.74",
3
+ "version": "0.42.0",
4
4
  "description": "User Account",
5
5
  "keywords": [
6
6
  "IR",
@@ -30,28 +30,28 @@
30
30
  "build": "tsc"
31
31
  },
32
32
  "dependencies": {
33
- "@intuitionrobotics/ts-common": "~0.41.0",
33
+ "@intuitionrobotics/ts-common": "~0.42.0",
34
+ "@types/jws": "^3.2.4",
35
+ "@types/saml2-js": "^1.6.8",
36
+ "jws": "^4.0.0",
34
37
  "moment": "^2.24.0",
35
38
  "saml2-js": "^2.0.5",
36
39
  "xmlbuilder": "^15.1.1"
37
40
  },
38
41
  "devDependencies": {
39
- "@intuitionrobotics/db-api-generator": "~0.41.0",
40
- "@intuitionrobotics/firebase": "~0.41.0",
41
- "@intuitionrobotics/storm": "~0.41.0",
42
- "@intuitionrobotics/testelot": "~0.41.0",
43
- "@intuitionrobotics/thunderstorm": "~0.41.0",
42
+ "@intuitionrobotics/db-api-generator": "~0.42.0",
43
+ "@intuitionrobotics/firebase": "~0.42.0",
44
+ "@intuitionrobotics/storm": "~0.42.0",
45
+ "@intuitionrobotics/testelot": "~0.42.0",
46
+ "@intuitionrobotics/thunderstorm": "~0.42.0",
44
47
  "@types/express": "^4.16.1",
45
48
  "@types/history": "^4.7.2",
46
49
  "@types/react": "^16.8.7",
47
- "@types/request": "^2.48.1",
48
- "@types/saml2-js": "^1.6.8",
49
50
  "express": "^4.16.4",
50
51
  "firebase": "^9.9.1",
51
52
  "firebase-admin": "^11.0.0",
52
53
  "firebase-functions": "^3.22.0",
53
54
  "react": "^16.0.0",
54
- "request": "^2.88.0",
55
55
  "ts-node": "^8.6.2",
56
56
  "tslint": "^5.16.0",
57
57
  "typescript": "~4.1.0",
package/shared/api.d.ts CHANGED
@@ -15,9 +15,8 @@ export declare type DB_Session = {
15
15
  timestamp: number;
16
16
  frontType?: FrontType;
17
17
  };
18
- export declare type Response_Auth = {
18
+ export declare type Response_Auth = UI_Account & {
19
19
  sessionId: string;
20
- email: string;
21
20
  };
22
21
  export declare type Request_UpsertAccount = {
23
22
  email: string;
@@ -0,0 +1,38 @@
1
+ import { Module, ObjectTS } from "@intuitionrobotics/ts-common";
2
+ import { ExpressRequest } from "@intuitionrobotics/thunderstorm/backend";
3
+ import * as jws from "jws";
4
+ import { Algorithm, Signature } from "jws";
5
+ import { CustomException } from "@intuitionrobotics/ts-common/core/exceptions";
6
+ export declare class TokenExpiredException extends CustomException {
7
+ constructor(message: string, cause?: Error);
8
+ }
9
+ declare type Config = {
10
+ secrets?: {
11
+ [k: string]: any;
12
+ };
13
+ authSecretKey: string;
14
+ issuer: string;
15
+ };
16
+ declare type Secret = {
17
+ kid: string;
18
+ value: string;
19
+ };
20
+ export declare class SecretsModule_Class extends Module<Config> {
21
+ private DEFAULT_ISS;
22
+ AUTHENTICATION_PREFIX: string;
23
+ AUTHENTICATION_KEY: string;
24
+ constructor(tag?: string, name?: string);
25
+ getSecret(k: string): Secret;
26
+ getAuthSecret: (kid: string) => Secret;
27
+ private getConfig;
28
+ validateRequestAndCheckExpiration(request: ExpressRequest, keyId?: string): any;
29
+ validateRequest(request: ExpressRequest, keyId?: string): jws.Signature;
30
+ extractAuthToken(request: ExpressRequest): string;
31
+ isExpired: (token: Signature) => boolean;
32
+ getExpiration(token: Signature): any;
33
+ generateJwt: (payload: ObjectTS, kid: string, algorithm?: Algorithm) => string;
34
+ getIss: () => string;
35
+ decodeJwt: (jwt: string) => jws.Signature;
36
+ }
37
+ export declare const SecretsModule: SecretsModule_Class;
38
+ export {};
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SecretsModule = exports.SecretsModule_Class = exports.TokenExpiredException = void 0;
4
+ const ts_common_1 = require("@intuitionrobotics/ts-common");
5
+ const jws = require("jws");
6
+ const JWTBuilder_1 = require("../utils/JWTBuilder");
7
+ const exceptions_1 = require("@intuitionrobotics/ts-common/core/exceptions");
8
+ class TokenExpiredException extends exceptions_1.CustomException {
9
+ constructor(message, cause) {
10
+ super(TokenExpiredException, message, cause);
11
+ }
12
+ }
13
+ exports.TokenExpiredException = TokenExpiredException;
14
+ class SecretsModule_Class extends ts_common_1.Module {
15
+ constructor(tag, name) {
16
+ super(tag, name);
17
+ this.DEFAULT_ISS = "TOOLS";
18
+ this.AUTHENTICATION_PREFIX = "Bearer";
19
+ this.AUTHENTICATION_KEY = "Authorization";
20
+ this.getAuthSecret = (kid) => {
21
+ return this.getSecret(kid);
22
+ };
23
+ this.getConfig = () => {
24
+ if (!this.config)
25
+ throw new ts_common_1.BadImplementationException(`Missing config, check SecretsModule's config`);
26
+ if (!this.config.secrets)
27
+ throw new ts_common_1.BadImplementationException(`Missing 'secrets' key in config, check SecretsModule's config`);
28
+ return this.config.secrets;
29
+ };
30
+ this.isExpired = (token) => {
31
+ return this.getExpiration(token) < ts_common_1.currentTimeMillies();
32
+ };
33
+ this.generateJwt = (payload, kid, algorithm = "HS256") => {
34
+ const secret = this.getAuthSecret(kid);
35
+ return new JWTBuilder_1.JWTBuilder(algorithm)
36
+ // This is a default that can be overwritten by the claims
37
+ .setExpiration(ts_common_1.currentTimeMillies() + ts_common_1.Day)
38
+ .addClaims(payload)
39
+ .setIssuer(this.getIss())
40
+ .setKeyID(secret.kid)
41
+ .build(secret.value);
42
+ };
43
+ this.getIss = () => {
44
+ const issuer = this.config.issuer;
45
+ if (!issuer)
46
+ return this.DEFAULT_ISS;
47
+ return issuer;
48
+ };
49
+ this.decodeJwt = (jwt) => {
50
+ return jws.decode(jwt);
51
+ };
52
+ this.setDefaultConfig({ authSecretKey: "AUTH_SECRET" });
53
+ }
54
+ getSecret(k) {
55
+ var _a, _b;
56
+ const secret = ((_a = this.getConfig()) === null || _a === void 0 ? void 0 : _a[k]) || ((_b = process.env) === null || _b === void 0 ? void 0 : _b[k]);
57
+ if (!secret)
58
+ throw new ts_common_1.BadImplementationException(`Missing secret with key ${k} in SecretsModule`);
59
+ return {
60
+ kid: k,
61
+ value: secret
62
+ };
63
+ }
64
+ validateRequestAndCheckExpiration(request, keyId) {
65
+ const token = this.validateRequest(request, keyId);
66
+ if (this.isExpired(token)) {
67
+ const cause = `The JWT passed is not valid, check. With payload: ${ts_common_1.__stringify(token.payload)}. The JWT passed is expired`;
68
+ throw new TokenExpiredException(cause);
69
+ }
70
+ return token.payload;
71
+ }
72
+ // Specify a kid to force the usage of it
73
+ validateRequest(request, keyId) {
74
+ var _a;
75
+ const authToken = this.extractAuthToken(request);
76
+ const token = this.decodeJwt(authToken);
77
+ const kid = keyId || token.header.kid;
78
+ if (!kid)
79
+ throw new ts_common_1.BadImplementationException("Could not deduce which key to use in order to verify the token, please specify a key ID");
80
+ const secret = this.getAuthSecret(kid);
81
+ const verified = jws.verify(authToken, token.header.alg, secret.value);
82
+ let cause = `The JWT passed is not valid, check. With payload: ${ts_common_1.__stringify(token.payload)}.`;
83
+ if (!verified || !token)
84
+ throw new ts_common_1.BadImplementationException(cause);
85
+ if (!((_a = token.payload) === null || _a === void 0 ? void 0 : _a[JWTBuilder_1.EXPIRES_AT])) {
86
+ cause += ` The JWT is missing the expiration claim`;
87
+ throw new ts_common_1.BadImplementationException(cause);
88
+ }
89
+ return token;
90
+ }
91
+ extractAuthToken(request) {
92
+ const authHead = request.header(this.AUTHENTICATION_KEY);
93
+ if (authHead === undefined)
94
+ throw new ts_common_1.BadImplementationException("Missing Authorization header");
95
+ if (!authHead)
96
+ throw new ts_common_1.BadImplementationException('The Authorization header is empty');
97
+ const parts = authHead.split(" ");
98
+ if (parts.length !== 2 || parts[0] !== this.AUTHENTICATION_PREFIX)
99
+ throw new ts_common_1.BadImplementationException(`The Authorization header is malformed` + "\n"
100
+ + `Value: ${authHead}` + "\n"
101
+ + `Expected Value: ${this.AUTHENTICATION_PREFIX} [token]`);
102
+ const authToken = parts[1].trim();
103
+ if (!authToken)
104
+ throw new ts_common_1.BadImplementationException(`The token provided is empty`);
105
+ return authToken;
106
+ }
107
+ getExpiration(token) {
108
+ let exp = token.payload[JWTBuilder_1.EXPIRES_AT];
109
+ if (!exp)
110
+ return exp;
111
+ const now = ts_common_1.currentTimeMillies();
112
+ const cutOff = 1000000000000; // 3-3-1973 in milliseconds
113
+ const isInSeconds = exp < cutOff;
114
+ if (isInSeconds)
115
+ exp = exp * 1000;
116
+ const year = 365 * ts_common_1.Day;
117
+ if (exp < now - year || exp > now + (year))
118
+ throw new ts_common_1.BadImplementationException(`The JWT passed is not valid. Payload: ${ts_common_1.__stringify(token.payload)}.` +
119
+ `Malformed JWT, expiry date is not valid, check the exp format, assumed to be in ${isInSeconds ? "seconds" : "milliseconds"}`);
120
+ return exp;
121
+ }
122
+ }
123
+ exports.SecretsModule_Class = SecretsModule_Class;
124
+ exports.SecretsModule = new SecretsModule_Class();
125
+ //# sourceMappingURL=SecretsModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretsModule.js","sourceRoot":"","sources":["../../../src/main/shared/modules/SecretsModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { ObjectTS } from "@intuitionrobotics/ts-common";
2
+ import { Algorithm } from "jws";
3
+ export declare type AlgType = 'alg';
4
+ export declare const ALGORITHM: AlgType;
5
+ export declare const CONTENT_TYPE = "cty";
6
+ export declare const TYPE = "typ";
7
+ export declare const KEY_ID = "kid";
8
+ export declare const ISSUER = "iss";
9
+ export declare const SUBJECT = "sub";
10
+ export declare const EXPIRES_AT = "exp";
11
+ export declare const NOT_BEFORE = "nbf";
12
+ export declare const ISSUED_AT = "iat";
13
+ export declare const JWT_ID = "jti";
14
+ export declare const AUDIENCE = "aud";
15
+ export declare const TYP_DEFAULT: string;
16
+ export declare class JWTBuilder {
17
+ private payload;
18
+ private readonly header;
19
+ constructor(alg: Algorithm);
20
+ addClaims(claims: ObjectTS): this;
21
+ addClaim(key: string, value: any): this;
22
+ addHeader(key: string, value: any): this;
23
+ setAlgorithm: (alg: Algorithm) => this;
24
+ setContentType: (cty: string) => this;
25
+ setType: (typ: string) => this;
26
+ setKeyID: (kid: string) => this;
27
+ setIssuer(iss: string): this;
28
+ setSub(iss: string): this;
29
+ setExpiration(exp: number): this;
30
+ setNotBefore(nbf: string): this;
31
+ setIssuedAt(iat: string): this;
32
+ setJWTID(jti: string): this;
33
+ setAudience(aud: string): this;
34
+ private getIssuer;
35
+ private getAlgorithm;
36
+ private getExpiration;
37
+ private getType;
38
+ private assertAlg;
39
+ build(secret: string): string;
40
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JWTBuilder = exports.TYP_DEFAULT = exports.AUDIENCE = exports.JWT_ID = exports.ISSUED_AT = exports.NOT_BEFORE = exports.EXPIRES_AT = exports.SUBJECT = exports.ISSUER = exports.KEY_ID = exports.TYPE = exports.CONTENT_TYPE = exports.ALGORITHM = void 0;
4
+ const ts_common_1 = require("@intuitionrobotics/ts-common");
5
+ const jws = require("jws");
6
+ const jws_1 = require("jws");
7
+ const SecretsModule_1 = require("../modules/SecretsModule");
8
+ //Header
9
+ exports.ALGORITHM = "alg";
10
+ exports.CONTENT_TYPE = "cty";
11
+ exports.TYPE = "typ";
12
+ exports.KEY_ID = "kid";
13
+ //Payload
14
+ exports.ISSUER = "iss";
15
+ exports.SUBJECT = "sub";
16
+ exports.EXPIRES_AT = "exp";
17
+ exports.NOT_BEFORE = "nbf";
18
+ exports.ISSUED_AT = "iat";
19
+ exports.JWT_ID = "jti";
20
+ exports.AUDIENCE = "aud";
21
+ exports.TYP_DEFAULT = "JWT";
22
+ class JWTBuilder {
23
+ constructor(alg) {
24
+ this.payload = {};
25
+ // End Generic
26
+ this.setAlgorithm = (alg) => {
27
+ this.assertAlg(alg);
28
+ this.header[exports.ALGORITHM] = alg;
29
+ return this;
30
+ };
31
+ this.setContentType = (cty) => {
32
+ this.header[exports.CONTENT_TYPE] = cty;
33
+ return this;
34
+ };
35
+ this.setType = (typ) => {
36
+ this.header[exports.TYPE] = typ;
37
+ return this;
38
+ };
39
+ this.setKeyID = (kid) => {
40
+ this.header[exports.KEY_ID] = kid;
41
+ return this;
42
+ };
43
+ this.assertAlg(alg);
44
+ this.header = {
45
+ [exports.ALGORITHM]: alg
46
+ };
47
+ }
48
+ // Generic
49
+ addClaims(claims) {
50
+ Object.keys(claims).forEach(k => this.addClaim(k, claims[k]));
51
+ return this;
52
+ }
53
+ addClaim(key, value) {
54
+ this.payload[key] = value;
55
+ return this;
56
+ }
57
+ addHeader(key, value) {
58
+ this.header[key] = value;
59
+ return this;
60
+ }
61
+ // Payload
62
+ setIssuer(iss) {
63
+ this.payload[exports.ISSUER] = iss;
64
+ return this;
65
+ }
66
+ setSub(iss) {
67
+ this.payload[exports.SUBJECT] = iss;
68
+ return this;
69
+ }
70
+ setExpiration(exp) {
71
+ this.payload[exports.EXPIRES_AT] = exp;
72
+ return this;
73
+ }
74
+ setNotBefore(nbf) {
75
+ this.payload[exports.NOT_BEFORE] = nbf;
76
+ return this;
77
+ }
78
+ setIssuedAt(iat) {
79
+ this.payload[exports.ISSUED_AT] = iat;
80
+ return this;
81
+ }
82
+ setJWTID(jti) {
83
+ this.payload[exports.JWT_ID] = jti;
84
+ return this;
85
+ }
86
+ setAudience(aud) {
87
+ this.payload[exports.AUDIENCE] = aud;
88
+ return this;
89
+ }
90
+ // End Payload
91
+ getIssuer() {
92
+ return this.payload[exports.ISSUER];
93
+ }
94
+ getAlgorithm() {
95
+ return this.header[exports.ALGORITHM];
96
+ }
97
+ getExpiration() {
98
+ return this.payload[exports.EXPIRES_AT];
99
+ }
100
+ getType() {
101
+ return this.header[exports.TYPE];
102
+ }
103
+ assertAlg(alg) {
104
+ const foundAlg = jws_1.ALGORITHMS.find(a => a === alg);
105
+ if (!foundAlg)
106
+ throw new ts_common_1.BadImplementationException(`Algorithm with name ${alg} is not valid`);
107
+ }
108
+ build(secret) {
109
+ if (!this.getType())
110
+ this.setType(exports.TYP_DEFAULT);
111
+ if (!this.getIssuer())
112
+ // TODO move the config to the module which I need to create
113
+ this.setIssuer(SecretsModule_1.SecretsModule.getIss());
114
+ if (!this.getExpiration())
115
+ throw new ts_common_1.BadImplementationException("Missing expiration, cannot build a valid JWT without this value");
116
+ if (!this.getAlgorithm())
117
+ throw new ts_common_1.BadImplementationException("Missing algorithm, cannot build a valid JWT without this value");
118
+ return jws.sign({ secret, payload: this.payload, header: this.header });
119
+ }
120
+ }
121
+ exports.JWTBuilder = JWTBuilder;
122
+ //# sourceMappingURL=JWTBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JWTBuilder.js","sourceRoot":"","sources":["../../../src/main/shared/utils/JWTBuilder.ts"],"names":[],"mappings":"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"}