@intuitionrobotics/user-account 0.47.59 → 1.0.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 (175) hide show
  1. package/LICENSE +3 -0
  2. package/dist/app-backend/api/_user-account.d.ts +4 -0
  3. package/dist/app-backend/api/_user-account.d.ts.map +1 -0
  4. package/dist/app-backend/api/_user-account.js +3 -0
  5. package/{app-backend → dist/app-backend}/api/_user-account.js.map +1 -1
  6. package/{app-backend → dist/app-backend}/api/v1/account/_assert.d.ts +3 -2
  7. package/dist/app-backend/api/v1/account/_assert.d.ts.map +1 -0
  8. package/dist/app-backend/api/v1/account/_assert.js +12 -0
  9. package/dist/app-backend/api/v1/account/_assert.js.map +1 -0
  10. package/dist/app-backend/api/v1/account/_imports.d.ts +5 -0
  11. package/dist/app-backend/api/v1/account/_imports.d.ts.map +1 -0
  12. package/dist/app-backend/api/v1/account/_imports.js +6 -0
  13. package/{app-backend → dist/app-backend}/api/v1/account/_imports.js.map +1 -1
  14. package/dist/app-backend/api/v1/account/create.d.ts +10 -0
  15. package/dist/app-backend/api/v1/account/create.d.ts.map +1 -0
  16. package/dist/app-backend/api/v1/account/create.js +16 -0
  17. package/dist/app-backend/api/v1/account/create.js.map +1 -0
  18. package/dist/app-backend/api/v1/account/list.d.ts +11 -0
  19. package/dist/app-backend/api/v1/account/list.d.ts.map +1 -0
  20. package/dist/app-backend/api/v1/account/list.js +14 -0
  21. package/dist/app-backend/api/v1/account/list.js.map +1 -0
  22. package/dist/app-backend/api/v1/account/login-saml.d.ts +12 -0
  23. package/dist/app-backend/api/v1/account/login-saml.d.ts.map +1 -0
  24. package/dist/app-backend/api/v1/account/login-saml.js +15 -0
  25. package/dist/app-backend/api/v1/account/login-saml.js.map +1 -0
  26. package/dist/app-backend/api/v1/account/login.d.ts +10 -0
  27. package/dist/app-backend/api/v1/account/login.d.ts.map +1 -0
  28. package/dist/app-backend/api/v1/account/login.js +15 -0
  29. package/dist/app-backend/api/v1/account/login.js.map +1 -0
  30. package/dist/app-backend/api/v1/account/logout.d.ts +10 -0
  31. package/dist/app-backend/api/v1/account/logout.d.ts.map +1 -0
  32. package/dist/app-backend/api/v1/account/logout.js +17 -0
  33. package/dist/app-backend/api/v1/account/logout.js.map +1 -0
  34. package/dist/app-backend/api/v1/account/upsert.d.ts +10 -0
  35. package/dist/app-backend/api/v1/account/upsert.d.ts.map +1 -0
  36. package/dist/app-backend/api/v1/account/upsert.js +18 -0
  37. package/dist/app-backend/api/v1/account/upsert.js.map +1 -0
  38. package/dist/app-backend/api/v1/account/validate.d.ts +13 -0
  39. package/dist/app-backend/api/v1/account/validate.d.ts.map +1 -0
  40. package/dist/app-backend/api/v1/account/validate.js +14 -0
  41. package/dist/app-backend/api/v1/account/validate.js.map +1 -0
  42. package/{app-backend → dist/app-backend}/apis/add-new-account.d.ts +4 -3
  43. package/dist/app-backend/apis/add-new-account.d.ts.map +1 -0
  44. package/dist/app-backend/apis/add-new-account.js +15 -0
  45. package/dist/app-backend/apis/add-new-account.js.map +1 -0
  46. package/dist/app-backend/core/module-pack.d.ts +4 -0
  47. package/dist/app-backend/core/module-pack.d.ts.map +1 -0
  48. package/dist/app-backend/core/module-pack.js +9 -0
  49. package/dist/app-backend/core/module-pack.js.map +1 -0
  50. package/{app-backend → dist/app-backend}/modules/AccountModule.d.ts +3 -2
  51. package/dist/app-backend/modules/AccountModule.d.ts.map +1 -0
  52. package/dist/app-backend/modules/AccountModule.js +341 -0
  53. package/dist/app-backend/modules/AccountModule.js.map +1 -0
  54. package/{app-backend → dist/app-backend}/modules/JWTBuilder.d.ts +3 -2
  55. package/dist/app-backend/modules/JWTBuilder.d.ts.map +1 -0
  56. package/dist/app-backend/modules/JWTBuilder.js +113 -0
  57. package/dist/app-backend/modules/JWTBuilder.js.map +1 -0
  58. package/{app-backend → dist/app-backend}/modules/SamlModule.d.ts +3 -2
  59. package/dist/app-backend/modules/SamlModule.d.ts.map +1 -0
  60. package/dist/app-backend/modules/SamlModule.js +47 -0
  61. package/dist/app-backend/modules/SamlModule.js.map +1 -0
  62. package/{app-backend → dist/app-backend}/modules/SecretsModule.d.ts +4 -3
  63. package/dist/app-backend/modules/SecretsModule.d.ts.map +1 -0
  64. package/dist/app-backend/modules/SecretsModule.js +131 -0
  65. package/dist/app-backend/modules/SecretsModule.js.map +1 -0
  66. package/{app-backend → dist/app-backend}/modules/_imports.d.ts +3 -2
  67. package/dist/app-backend/modules/_imports.d.ts.map +1 -0
  68. package/dist/app-backend/modules/_imports.js +3 -0
  69. package/{app-backend → dist/app-backend}/modules/_imports.js.map +1 -1
  70. package/dist/app-frontend/core/module-pack.d.ts +3 -0
  71. package/dist/app-frontend/core/module-pack.d.ts.map +1 -0
  72. package/dist/app-frontend/core/module-pack.js +6 -0
  73. package/dist/app-frontend/core/module-pack.js.map +1 -0
  74. package/{app-frontend → dist/app-frontend}/modules/AccountModule.d.ts +3 -2
  75. package/dist/app-frontend/modules/AccountModule.d.ts.map +1 -0
  76. package/dist/app-frontend/modules/AccountModule.js +151 -0
  77. package/dist/app-frontend/modules/AccountModule.js.map +1 -0
  78. package/{app-frontend → dist/app-frontend}/ui/Component_Login.d.ts +2 -1
  79. package/dist/app-frontend/ui/Component_Login.d.ts.map +1 -0
  80. package/dist/app-frontend/ui/Component_Login.js +63 -0
  81. package/dist/app-frontend/ui/Component_Login.js.map +1 -0
  82. package/{app-frontend → dist/app-frontend}/ui/Component_Register.d.ts +2 -1
  83. package/dist/app-frontend/ui/Component_Register.d.ts.map +1 -0
  84. package/dist/app-frontend/ui/Component_Register.js +69 -0
  85. package/dist/app-frontend/ui/Component_Register.js.map +1 -0
  86. package/dist/backend.d.ts +3 -0
  87. package/dist/backend.d.ts.map +1 -0
  88. package/dist/backend.js +3 -0
  89. package/dist/backend.js.map +1 -0
  90. package/dist/frontend.d.ts +4 -0
  91. package/dist/frontend.d.ts.map +1 -0
  92. package/dist/frontend.js +3 -0
  93. package/dist/frontend.js.map +1 -0
  94. package/dist/index.d.ts +3 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +3 -0
  97. package/dist/index.js.map +1 -0
  98. package/{shared → dist/shared}/api.d.ts +2 -1
  99. package/dist/shared/api.d.ts.map +1 -0
  100. package/dist/shared/api.js +14 -0
  101. package/dist/shared/api.js.map +1 -0
  102. package/dist/shared/types.d.ts +2 -0
  103. package/dist/shared/types.d.ts.map +1 -0
  104. package/dist/shared/types.js +2 -0
  105. package/{shared → dist/shared}/utils/AuthenticationConsts.d.ts +1 -0
  106. package/dist/shared/utils/AuthenticationConsts.d.ts.map +1 -0
  107. package/dist/shared/utils/AuthenticationConsts.js +3 -0
  108. package/{shared → dist/shared}/utils/AuthenticationConsts.js.map +1 -1
  109. package/dist/tsconfig.tsbuildinfo +1 -0
  110. package/package.json +64 -15
  111. package/app-backend/api/_user-account.d.ts +0 -1
  112. package/app-backend/api/_user-account.js +0 -5
  113. package/app-backend/api/v1/account/_assert.js +0 -27
  114. package/app-backend/api/v1/account/_assert.js.map +0 -1
  115. package/app-backend/api/v1/account/_imports.d.ts +0 -4
  116. package/app-backend/api/v1/account/_imports.js +0 -22
  117. package/app-backend/api/v1/account/create.d.ts +0 -1
  118. package/app-backend/api/v1/account/create.js +0 -28
  119. package/app-backend/api/v1/account/create.js.map +0 -1
  120. package/app-backend/api/v1/account/list.d.ts +0 -1
  121. package/app-backend/api/v1/account/list.js +0 -27
  122. package/app-backend/api/v1/account/list.js.map +0 -1
  123. package/app-backend/api/v1/account/login-saml.d.ts +0 -1
  124. package/app-backend/api/v1/account/login-saml.js +0 -27
  125. package/app-backend/api/v1/account/login-saml.js.map +0 -1
  126. package/app-backend/api/v1/account/login.d.ts +0 -1
  127. package/app-backend/api/v1/account/login.js +0 -27
  128. package/app-backend/api/v1/account/login.js.map +0 -1
  129. package/app-backend/api/v1/account/logout.d.ts +0 -1
  130. package/app-backend/api/v1/account/logout.js +0 -29
  131. package/app-backend/api/v1/account/logout.js.map +0 -1
  132. package/app-backend/api/v1/account/upsert.d.ts +0 -1
  133. package/app-backend/api/v1/account/upsert.js +0 -30
  134. package/app-backend/api/v1/account/upsert.js.map +0 -1
  135. package/app-backend/api/v1/account/validate.d.ts +0 -1
  136. package/app-backend/api/v1/account/validate.js +0 -27
  137. package/app-backend/api/v1/account/validate.js.map +0 -1
  138. package/app-backend/apis/add-new-account.js +0 -29
  139. package/app-backend/apis/add-new-account.js.map +0 -1
  140. package/app-backend/core/module-pack.d.ts +0 -3
  141. package/app-backend/core/module-pack.js +0 -26
  142. package/app-backend/core/module-pack.js.map +0 -1
  143. package/app-backend/modules/AccountModule.js +0 -395
  144. package/app-backend/modules/AccountModule.js.map +0 -1
  145. package/app-backend/modules/JWTBuilder.js +0 -116
  146. package/app-backend/modules/JWTBuilder.js.map +0 -1
  147. package/app-backend/modules/SamlModule.js +0 -60
  148. package/app-backend/modules/SamlModule.js.map +0 -1
  149. package/app-backend/modules/SecretsModule.js +0 -137
  150. package/app-backend/modules/SecretsModule.js.map +0 -1
  151. package/app-backend/modules/_imports.js +0 -18
  152. package/app-frontend/core/module-pack.d.ts +0 -2
  153. package/app-frontend/core/module-pack.js +0 -23
  154. package/app-frontend/core/module-pack.js.map +0 -1
  155. package/app-frontend/modules/AccountModule.js +0 -164
  156. package/app-frontend/modules/AccountModule.js.map +0 -1
  157. package/app-frontend/ui/Component_Login.js +0 -68
  158. package/app-frontend/ui/Component_Login.js.map +0 -1
  159. package/app-frontend/ui/Component_Register.js +0 -74
  160. package/app-frontend/ui/Component_Register.js.map +0 -1
  161. package/backend.d.ts +0 -2
  162. package/backend.js +0 -19
  163. package/backend.js.map +0 -1
  164. package/frontend.d.ts +0 -3
  165. package/frontend.js +0 -20
  166. package/frontend.js.map +0 -1
  167. package/index.d.ts +0 -2
  168. package/index.js +0 -19
  169. package/index.js.map +0 -1
  170. package/shared/api.js +0 -16
  171. package/shared/api.js.map +0 -1
  172. package/shared/types.d.ts +0 -0
  173. package/shared/types.js +0 -2
  174. package/shared/utils/AuthenticationConsts.js +0 -6
  175. /package/{shared → dist/shared}/types.js.map +0 -0
@@ -1,395 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.AccountModule = exports.AccountsModule_Class = exports.Collection_Accounts = exports.Collection_Sessions = exports.Header_SessionId = void 0;
13
- const ts_common_1 = require("@intuitionrobotics/ts-common");
14
- const backend_1 = require("@intuitionrobotics/firebase/backend");
15
- const _imports_1 = require("./_imports");
16
- const backend_2 = require("@intuitionrobotics/thunderstorm/backend");
17
- const SecretsModule_1 = require("./SecretsModule");
18
- const SamlModule_1 = require("./SamlModule");
19
- const thunderstorm_1 = require("@intuitionrobotics/thunderstorm");
20
- exports.Header_SessionId = new backend_2.HeaderKey(_imports_1.HeaderKey_SessionId, 404);
21
- exports.Collection_Sessions = "user-account--sessions";
22
- exports.Collection_Accounts = "user-account--accounts";
23
- const dispatch_onUserLogin = new ts_common_1.Dispatcher("__onUserLogin");
24
- const dispatch_onNewUserRegistered = new ts_common_1.Dispatcher("__onNewUserRegistered");
25
- function getUIAccount(account) {
26
- const { email, _id, createdTimestamp } = account;
27
- return { email, _id, createdTimestamp };
28
- }
29
- class AccountsModule_Class extends ts_common_1.Module {
30
- constructor() {
31
- super("AccountsModule");
32
- this.isAuthRequest = (request) => request.header(SecretsModule_1.SecretsModule.AUTHENTICATION_KEY) !== undefined;
33
- this.validateSession = (request, scopes, response) => __awaiter(this, void 0, void 0, function* () {
34
- if (this.isAuthRequest(request))
35
- return this.validateAuthenticationHeader(request, scopes, response);
36
- return yield this.validateSessionId(exports.Header_SessionId.get(request));
37
- });
38
- this.TTLExpired = (session) => {
39
- const delta = (0, ts_common_1.currentTimeMillies)() - session.timestamp;
40
- let sessionTTLms = this.config.sessionTTLms.web;
41
- if (session.frontType === _imports_1.FrontType.App)
42
- return false;
43
- return delta > sessionTTLms || delta < 0;
44
- };
45
- this.setDefaultConfig({ sessionTTLms: { web: ts_common_1.Day, app: ts_common_1.Day, jwt: 30 * ts_common_1.Minute }, jwtSecretKey: "TS_AUTH_SECRET" });
46
- }
47
- __queryRequestInfo(request) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- let data;
50
- try {
51
- data = yield this.validateSession(request, []);
52
- }
53
- catch (e) {
54
- }
55
- return {
56
- key: this.getName(),
57
- data: data
58
- };
59
- });
60
- }
61
- init() {
62
- const firestore = backend_1.FirebaseModule.createAdminSession(this.config.projectId).getFirestore();
63
- this.sessions = firestore.getCollection(exports.Collection_Sessions, ["userId"]);
64
- this.accounts = firestore.getCollection(exports.Collection_Accounts, ["email"]);
65
- }
66
- getUser(_email) {
67
- return __awaiter(this, void 0, void 0, function* () {
68
- const email = _email.toLowerCase();
69
- return this.accounts.queryUnique({
70
- where: { email },
71
- select: ["email",
72
- "_id"]
73
- });
74
- });
75
- }
76
- getUsers(_emails) {
77
- return __awaiter(this, void 0, void 0, function* () {
78
- return (0, ts_common_1.batchActionParallel)(_emails, 10, (batchedEmails) => __awaiter(this, void 0, void 0, function* () {
79
- return this.accounts.query({
80
- where: {
81
- email: {
82
- $in: batchedEmails.map(e => e.toLowerCase())
83
- }
84
- },
85
- select: ["email", "_id"]
86
- });
87
- }));
88
- });
89
- }
90
- listUsers() {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- return this.accounts.getAll(["_id",
93
- "email"]);
94
- });
95
- }
96
- listSessions() {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- return this.sessions.getAll(["userId",
99
- "timestamp"]);
100
- });
101
- }
102
- getSession(_email) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- const email = _email.toLowerCase();
105
- return this.accounts.queryUnique({ where: { email } });
106
- });
107
- }
108
- querySessions(_email) {
109
- return __awaiter(this, void 0, void 0, function* () {
110
- const account = yield this.getSession(_email);
111
- if (!account)
112
- return;
113
- const sessions = yield this.sessions.query({
114
- select: ["userId",
115
- "timestamp",
116
- "version",
117
- "frontType"], where: { userId: account._id }
118
- });
119
- return sessions.map((session) => {
120
- return Object.assign(Object.assign({}, session), { isExpired: this.TTLExpired(session) });
121
- });
122
- });
123
- }
124
- create(request, response) {
125
- return __awaiter(this, void 0, void 0, function* () {
126
- const account = yield this.createAccount(request);
127
- const session = yield this.login(request, response);
128
- yield dispatch_onNewUserRegistered.dispatchModuleAsync(getUIAccount(account));
129
- return session;
130
- });
131
- }
132
- upsert(request) {
133
- return __awaiter(this, void 0, void 0, function* () {
134
- let callback = () => Promise.resolve([]);
135
- const account = yield this.accounts.runInTransaction((transaction) => __awaiter(this, void 0, void 0, function* () {
136
- const existAccount = yield transaction.queryUnique(this.accounts, { where: { email: request.email } });
137
- if (existAccount)
138
- return this.changePassword(request.email, request.password, transaction);
139
- callback = () => __awaiter(this, void 0, void 0, function* () { return dispatch_onNewUserRegistered.dispatchModuleAsync(getUIAccount(account)); });
140
- return this.createImpl(request, transaction);
141
- }));
142
- yield this.loginValidate(request);
143
- yield callback();
144
- return getUIAccount(account);
145
- });
146
- }
147
- addNewAccount(email, password, password_check) {
148
- return __awaiter(this, void 0, void 0, function* () {
149
- let account;
150
- if (password && password_check) {
151
- account = yield this.createAccount({ password, password_check, email });
152
- yield dispatch_onNewUserRegistered.dispatchModuleAsync(getUIAccount(account));
153
- }
154
- else
155
- account = yield this.createSAML(email);
156
- return getUIAccount(account);
157
- });
158
- }
159
- changePassword(userEmail, newPassword, _transaction) {
160
- return __awaiter(this, void 0, void 0, function* () {
161
- const email = userEmail.toLowerCase();
162
- const processor = (transaction) => __awaiter(this, void 0, void 0, function* () {
163
- const account = yield transaction.queryUnique(this.accounts, { where: { email } });
164
- if (!account)
165
- throw new backend_2.ApiException(422, "User with email does not exist");
166
- if (!account.saltedPassword || !account.salt)
167
- throw new backend_2.ApiException(401, "Account login using SAML");
168
- account.saltedPassword = (0, ts_common_1.hashPasswordWithSalt)(account.salt, newPassword);
169
- account._audit = (0, ts_common_1.auditBy)(email, 'Changed password');
170
- return transaction.upsert(this.accounts, account);
171
- });
172
- if (_transaction)
173
- return processor(_transaction);
174
- return this.accounts.runInTransaction(processor);
175
- });
176
- }
177
- createAccount(request) {
178
- return __awaiter(this, void 0, void 0, function* () {
179
- request.email = request.email.toLowerCase();
180
- (0, ts_common_1.validate)(request.email, ts_common_1.validateEmail);
181
- return this.accounts.runInTransaction((transaction) => __awaiter(this, void 0, void 0, function* () {
182
- const account = yield transaction.queryUnique(this.accounts, { where: { email: request.email } });
183
- if (account)
184
- throw new backend_2.ApiException(422, "User with email already exists");
185
- return this.createImpl(request, transaction);
186
- }));
187
- });
188
- }
189
- createImpl(request, transaction) {
190
- const salt = (0, ts_common_1.generateHex)(32);
191
- const account = {
192
- _id: (0, ts_common_1.generateHex)(32),
193
- _audit: (0, ts_common_1.auditBy)(request.email),
194
- createdTimestamp: (0, ts_common_1.currentTimeMillies)(),
195
- email: request.email,
196
- salt,
197
- saltedPassword: (0, ts_common_1.hashPasswordWithSalt)(salt, request.password)
198
- };
199
- return transaction.insert(this.accounts, account);
200
- }
201
- logout(sessionId) {
202
- return __awaiter(this, void 0, void 0, function* () {
203
- const query = { where: { sessionId } };
204
- yield this.sessions.deleteUnique(query);
205
- });
206
- }
207
- logoutAccount(accountId) {
208
- return __awaiter(this, void 0, void 0, function* () {
209
- yield this.sessions.delete({ where: { userId: accountId } });
210
- });
211
- }
212
- login(request, response) {
213
- return __awaiter(this, void 0, void 0, function* () {
214
- return this.loginValidate(request, response);
215
- });
216
- }
217
- loginValidate(request, response) {
218
- return __awaiter(this, void 0, void 0, function* () {
219
- request.email = request.email.toLowerCase();
220
- const query = { where: { email: request.email } };
221
- const account = yield this.accounts.queryUnique(query);
222
- if (!account)
223
- throw new backend_2.ApiException(401, "account does not exists");
224
- if (!account.saltedPassword || !account.salt)
225
- throw new backend_2.ApiException(401, "Account login using SAML");
226
- if (account.saltedPassword !== (0, ts_common_1.hashPasswordWithSalt)(account.salt, request.password))
227
- throw new backend_2.ApiException(401, "wrong username or password");
228
- if (!account._id) {
229
- account._id = (0, ts_common_1.generateHex)(32);
230
- yield this.accounts.upsert(account);
231
- }
232
- let sessionWithAccountId;
233
- if (response) {
234
- sessionWithAccountId = yield this.upsertSession(account, request.frontType);
235
- this.setJWTinResp(response, sessionWithAccountId.jwt);
236
- }
237
- yield dispatch_onUserLogin.dispatchModuleAsync(getUIAccount(account));
238
- return sessionWithAccountId;
239
- });
240
- }
241
- loginSAML(__email) {
242
- return __awaiter(this, void 0, void 0, function* () {
243
- const _email = __email.toLowerCase();
244
- const account = yield this.createSAML(_email);
245
- const sessionWithAccountId = yield this.upsertSession(account);
246
- yield dispatch_onUserLogin.dispatchModuleAsync(getUIAccount(account));
247
- return sessionWithAccountId;
248
- });
249
- }
250
- createSAML(__email) {
251
- return __awaiter(this, void 0, void 0, function* () {
252
- const _email = __email.toLowerCase();
253
- const query = { where: { email: _email } };
254
- let dispatchEvent = false;
255
- const toRet = yield this.accounts.runInTransaction((transaction) => __awaiter(this, void 0, void 0, function* () {
256
- const account = yield transaction.queryUnique(this.accounts, query);
257
- if (account === null || account === void 0 ? void 0 : account._id)
258
- return account;
259
- const _account = Object.assign({ _id: (0, ts_common_1.generateHex)(32), _audit: (0, ts_common_1.auditBy)(_email), createdTimestamp: (0, ts_common_1.currentTimeMillies)(), email: _email }, account);
260
- dispatchEvent = true;
261
- return transaction.upsert(this.accounts, _account);
262
- }));
263
- if (dispatchEvent)
264
- yield dispatch_onNewUserRegistered.dispatchModuleAsync(getUIAccount(toRet));
265
- return toRet;
266
- });
267
- }
268
- verifyAccount(account) {
269
- if (!account)
270
- throw new backend_2.ApiException(401, 'Missing account in token payload');
271
- const email = account['email'];
272
- if (!email || typeof email !== 'string')
273
- throw new backend_2.ApiException(401, 'Missing email in token payload');
274
- const _id = account['_id'];
275
- if (!_id || typeof _id !== 'string')
276
- throw new backend_2.ApiException(401, 'Missing _id in token payload');
277
- return { _id, email };
278
- }
279
- validateAuthenticationHeader(request, scopes, response) {
280
- return __awaiter(this, void 0, void 0, function* () {
281
- const token = SecretsModule_1.SecretsModule.validateRequest(request, scopes);
282
- const payload = token.payload;
283
- const isExpired = SecretsModule_1.SecretsModule.isExpired(token);
284
- const sessionId = payload.sessionId;
285
- if (!sessionId)
286
- throw new backend_2.ApiException(401, `Missing session id in token ${JSON.stringify(payload)}`);
287
- if (!isExpired) {
288
- const account = payload.account;
289
- this.verifyAccount(account);
290
- return account;
291
- }
292
- const dbAccount = yield this.validateSessionId(sessionId);
293
- if (response) {
294
- const jwt = this.generateJWT(dbAccount, sessionId);
295
- this.setJWTinResp(response, jwt);
296
- }
297
- return dbAccount;
298
- });
299
- }
300
- setJWTinResp(response, jwt) {
301
- // Set in header response
302
- response.setHeaders({ [thunderstorm_1.HeaderKey_JWT]: jwt });
303
- }
304
- generateJWT(account, sessionId) {
305
- return SecretsModule_1.SecretsModule.generateJwt({
306
- account,
307
- sessionId,
308
- exp: (0, ts_common_1.currentTimeMillies)() + this.config.sessionTTLms.jwt
309
- }, this.config.jwtSecretKey);
310
- }
311
- validateSessionId(sessionId) {
312
- return __awaiter(this, void 0, void 0, function* () {
313
- const query = { where: { sessionId } };
314
- const session = yield this.sessions.queryUnique(query);
315
- if (!session)
316
- throw new backend_2.ApiException(401, `Invalid session id: ${sessionId}`);
317
- if (this.TTLExpired(session))
318
- throw new backend_2.ApiException(401, "Session timed out");
319
- return yield this.getUserEmailFromSession(session);
320
- });
321
- }
322
- getUserEmailFromSession(session) {
323
- return __awaiter(this, void 0, void 0, function* () {
324
- const account = yield this.accounts.queryUnique({ where: { _id: session.userId } });
325
- if (!account) {
326
- yield this.sessions.deleteItem(session);
327
- throw new backend_2.ApiException(403, `No user found for session: ${(0, ts_common_1.__stringify)(session)}`);
328
- }
329
- return getUIAccount(account);
330
- });
331
- }
332
- getUserEmailFromUserId(userId) {
333
- return __awaiter(this, void 0, void 0, function* () {
334
- const account = yield this.accounts.queryUnique({ where: { _id: userId } });
335
- if (!account)
336
- throw new backend_2.ApiException(403, `No user found for session: ${userId}`);
337
- return getUIAccount(account);
338
- });
339
- }
340
- getAccountFromParams(p) {
341
- return __awaiter(this, void 0, void 0, function* () {
342
- if (typeof p === "string")
343
- return this.getUserEmailFromUserId(p);
344
- return getUIAccount(p);
345
- });
346
- }
347
- upsertSession(p, frontType) {
348
- return __awaiter(this, void 0, void 0, function* () {
349
- const account = yield this.getAccountFromParams(p);
350
- const session = yield this.getSessionFromAccount(account, frontType);
351
- const sessionId = session.sessionId;
352
- return { sessionId, jwt: this.generateJWT(account, sessionId), email: account.email, _id: account._id, createdTimestamp: account.createdTimestamp };
353
- });
354
- }
355
- ;
356
- getSessionFromAccount(account, frontType) {
357
- return __awaiter(this, void 0, void 0, function* () {
358
- const session = yield this.sessions.queryUnique({ where: { userId: account._id } });
359
- if (session && !this.TTLExpired(session))
360
- return session;
361
- const _session = {
362
- sessionId: (0, ts_common_1.generateHex)(64),
363
- timestamp: (0, ts_common_1.currentTimeMillies)(),
364
- userId: account._id,
365
- };
366
- if (frontType)
367
- _session.frontType = frontType;
368
- return this.sessions.upsert(_session);
369
- });
370
- }
371
- assertApi(body, response) {
372
- return __awaiter(this, void 0, void 0, function* () {
373
- const options = {
374
- request_body: body
375
- };
376
- try {
377
- const data = yield SamlModule_1.SamlModule.assert(options);
378
- this.logDebug(`Got data from assertion ${(0, ts_common_1.__stringify)(data)}`);
379
- const email = data.userId;
380
- const loginData = yield exports.AccountModule.loginSAML(email);
381
- let redirectUrl = data.loginContext[_imports_1.QueryParam_RedirectUrl];
382
- redirectUrl = redirectUrl.replace(new RegExp(_imports_1.QueryParam_SessionId.toUpperCase(), "g"), loginData.sessionId);
383
- redirectUrl = redirectUrl.replace(new RegExp(_imports_1.QueryParam_Email.toUpperCase(), "g"), email);
384
- redirectUrl = redirectUrl.replace(new RegExp(_imports_1.QueryParam_JWT.toUpperCase(), "g"), loginData.jwt);
385
- return yield response.redirect(302, redirectUrl);
386
- }
387
- catch (error) {
388
- throw new backend_2.ApiException(401, 'Error authenticating user', error);
389
- }
390
- });
391
- }
392
- }
393
- exports.AccountsModule_Class = AccountsModule_Class;
394
- exports.AccountModule = new AccountsModule_Class();
395
- //# sourceMappingURL=AccountModule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AccountModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/AccountModule.ts"],"names":[],"mappings":"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"}
@@ -1,116 +0,0 @@
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_1 = require("jws");
6
- const SecretsModule_1 = require("./SecretsModule");
7
- //Header
8
- exports.ALGORITHM = "alg";
9
- exports.CONTENT_TYPE = "cty";
10
- exports.TYPE = "typ";
11
- exports.KEY_ID = "kid";
12
- //Payload
13
- exports.ISSUER = "iss";
14
- exports.SUBJECT = "sub";
15
- exports.EXPIRES_AT = "exp";
16
- exports.NOT_BEFORE = "nbf";
17
- exports.ISSUED_AT = "iat";
18
- exports.JWT_ID = "jti";
19
- exports.AUDIENCE = "aud";
20
- exports.TYP_DEFAULT = "JWT";
21
- class JWTBuilder {
22
- constructor(alg) {
23
- this.payload = {};
24
- // End Generic
25
- this.setContentType = (cty) => {
26
- this.header[exports.CONTENT_TYPE] = cty;
27
- return this;
28
- };
29
- this.setType = (typ) => {
30
- this.header[exports.TYPE] = typ;
31
- return this;
32
- };
33
- this.setKeyID = (kid) => {
34
- this.header[exports.KEY_ID] = kid;
35
- return this;
36
- };
37
- this.assertAlg(alg);
38
- this.header = {
39
- [exports.ALGORITHM]: alg
40
- };
41
- }
42
- // Generic
43
- addClaims(claims) {
44
- Object.keys(claims).forEach(k => this.addClaim(k, claims[k]));
45
- return this;
46
- }
47
- addClaim(key, value) {
48
- this.payload[key] = value;
49
- return this;
50
- }
51
- addHeader(key, value) {
52
- this.header[key] = value;
53
- return this;
54
- }
55
- // Payload
56
- setIssuer(iss) {
57
- this.payload[exports.ISSUER] = iss;
58
- return this;
59
- }
60
- setSub(iss) {
61
- this.payload[exports.SUBJECT] = iss;
62
- return this;
63
- }
64
- setExpiration(exp) {
65
- this.payload[exports.EXPIRES_AT] = exp;
66
- return this;
67
- }
68
- setNotBefore(nbf) {
69
- this.payload[exports.NOT_BEFORE] = nbf;
70
- return this;
71
- }
72
- setIssuedAt() {
73
- this.payload[exports.ISSUED_AT] = Math.floor((0, ts_common_1.currentTimeMillies)() / 1000);
74
- }
75
- setJWTID(jti) {
76
- this.payload[exports.JWT_ID] = jti;
77
- return this;
78
- }
79
- setAudience(aud) {
80
- this.payload[exports.AUDIENCE] = aud;
81
- return this;
82
- }
83
- // End Payload
84
- getIssuer() {
85
- return this.payload[exports.ISSUER];
86
- }
87
- getAlgorithm() {
88
- return this.header[exports.ALGORITHM];
89
- }
90
- getExpiration() {
91
- return this.payload[exports.EXPIRES_AT];
92
- }
93
- getType() {
94
- return this.header[exports.TYPE];
95
- }
96
- assertAlg(alg) {
97
- const foundAlg = jws_1.ALGORITHMS.find(a => a === alg);
98
- if (!foundAlg)
99
- throw new ts_common_1.BadImplementationException(`Algorithm with name ${alg} is not valid`);
100
- }
101
- build(secret) {
102
- this.setIssuedAt();
103
- if (!this.getType())
104
- this.setType(exports.TYP_DEFAULT);
105
- if (!this.getIssuer())
106
- // TODO move the config to the module which I need to create
107
- this.setIssuer(SecretsModule_1.SecretsModule.getIss());
108
- if (!this.getExpiration())
109
- throw new ts_common_1.BadImplementationException("Missing expiration, cannot build a valid JWT without this value");
110
- if (!this.getAlgorithm())
111
- throw new ts_common_1.BadImplementationException("Missing algorithm, cannot build a valid JWT without this value");
112
- return (0, jws_1.sign)({ secret, payload: this.payload, header: this.header });
113
- }
114
- }
115
- exports.JWTBuilder = JWTBuilder;
116
- //# sourceMappingURL=JWTBuilder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JWTBuilder.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/JWTBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.SamlModule = exports.SamlModule_Class = void 0;
13
- const saml2_js_1 = require("saml2-js");
14
- const ts_common_1 = require("@intuitionrobotics/ts-common");
15
- class SamlModule_Class extends ts_common_1.Module {
16
- constructor() {
17
- super("SamlModule");
18
- this.loginRequest = (loginContext) => __awaiter(this, void 0, void 0, function* () {
19
- return new Promise((resolve, rejected) => {
20
- const sp = new saml2_js_1.ServiceProvider(this.config.spConfig);
21
- const options = {
22
- relay_state: (0, ts_common_1.__stringify)(loginContext)
23
- };
24
- sp.create_login_request_url(this.identityProvider, options, (error, loginUrl, requestId) => {
25
- if (error)
26
- return rejected(error);
27
- resolve(loginUrl);
28
- });
29
- });
30
- });
31
- this.assert = (options) => __awaiter(this, void 0, void 0, function* () {
32
- return new Promise((resolve, rejected) => {
33
- const sp = new saml2_js_1.ServiceProvider(this.config.spConfig);
34
- sp.post_assert(this.identityProvider, options, (error, response) => __awaiter(this, void 0, void 0, function* () {
35
- if (error)
36
- return rejected(error);
37
- const userId = response.user.name_id;
38
- const relay_state = options.request_body.RelayState;
39
- if (!relay_state)
40
- return rejected(`LoginContext lost along the way for userId '${userId}'`);
41
- resolve({
42
- userId: userId,
43
- loginContext: JSON.parse(relay_state),
44
- fullResponse: response
45
- });
46
- }));
47
- });
48
- });
49
- }
50
- init() {
51
- if (!this.config.idConfig)
52
- throw new ts_common_1.ImplementationMissingException("Config must contain idConfig");
53
- if (!this.config.spConfig)
54
- throw new ts_common_1.ImplementationMissingException("Config must contain spConfig");
55
- this.identityProvider = new saml2_js_1.IdentityProvider(this.config.idConfig);
56
- }
57
- }
58
- exports.SamlModule_Class = SamlModule_Class;
59
- exports.SamlModule = new SamlModule_Class();
60
- //# sourceMappingURL=SamlModule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SamlModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/SamlModule.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uCAMkB;AAClB,4DAIsC;AAgCtC,MAAa,gBACZ,SAAQ,kBAAkB;IAI1B;QACC,KAAK,CAAC,YAAY,CAAC,CAAC;QAarB,iBAAY,GAAG,CAAO,YAAqC,EAAE,EAAE;YAC9D,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBAChD,MAAM,EAAE,GAAG,IAAI,0BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG;oBACf,WAAW,EAAE,IAAA,uBAAW,EAAC,YAAY,CAAC;iBACtC,CAAC;gBACF,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;oBAC1F,IAAI,KAAK;wBACR,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAExB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QAEJ,CAAC,CAAA,CAAC;QAEF,WAAM,GAAG,CAAO,OAAsC,EAA+B,EAAE;YAAC,OAAA,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBAC7I,MAAM,EAAE,GAAG,IAAI,0BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACrD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAO,KAAK,EAAE,QAA4B,EAAE,EAAE;oBAC5F,IAAI,KAAK;wBACR,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAExB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;oBACrC,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;oBACpD,IAAI,CAAC,WAAW;wBACf,OAAO,QAAQ,CAAC,+CAA+C,MAAM,GAAG,CAAC,CAAC;oBAE3E,OAAO,CAAC;wBACC,MAAM,EAAE,MAAM;wBACd,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;wBACrC,YAAY,EAAE,QAAQ;qBACtB,CAAC,CAAC;gBACZ,CAAC,CAAA,CAAC,CAAC;YACJ,CAAC,CAAC,CAAA;UAAA,CAAC;IA7CH,CAAC;IAES,IAAI;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;YACxB,MAAM,IAAI,0CAA8B,CAAC,8BAA8B,CAAC,CAAC;QAE1E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;YACxB,MAAM,IAAI,0CAA8B,CAAC,8BAA8B,CAAC,CAAC;QAE1E,IAAI,CAAC,gBAAgB,GAAG,IAAI,2BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpE,CAAC;CAoCD;AArDD,4CAqDC;AAEY,QAAA,UAAU,GAAG,IAAI,gBAAgB,EAAE,CAAC"}