@flink-app/generic-auth-plugin 2.0.0-alpha.72 → 2.0.0-alpha.74

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 (48) hide show
  1. package/.flink/generatedAgents.ts +1 -1
  2. package/.flink/generatedHandlers.ts +1 -1
  3. package/.flink/generatedJobs.ts +1 -1
  4. package/.flink/generatedRepos.ts +1 -1
  5. package/.flink/generatedTools.ts +1 -1
  6. package/.flink/start.ts +1 -1
  7. package/CHANGELOG.md +23 -0
  8. package/dist/.flink/generatedAgents.js +1 -1
  9. package/dist/.flink/generatedAgents.js.map +1 -1
  10. package/dist/.flink/generatedHandlers.js +1 -1
  11. package/dist/.flink/generatedHandlers.js.map +1 -1
  12. package/dist/.flink/generatedJobs.js +1 -1
  13. package/dist/.flink/generatedJobs.js.map +1 -1
  14. package/dist/.flink/generatedRepos.js +1 -1
  15. package/dist/.flink/generatedRepos.js.map +1 -1
  16. package/dist/.flink/generatedTools.js +1 -1
  17. package/dist/.flink/generatedTools.js.map +1 -1
  18. package/dist/.flink/schema-manifest.json +1 -1
  19. package/dist/.flink/start.js +1 -1
  20. package/dist/.flink/start.js.map +1 -1
  21. package/dist/src/coreFunctions.js +3 -3
  22. package/dist/src/coreFunctions.js.map +1 -1
  23. package/dist/src/handlers/Management/PutUserPasswordByUserid.js +1 -1
  24. package/dist/src/handlers/Management/PutUserPasswordByUserid.js.map +1 -1
  25. package/dist/src/handlers/Management/PutUserProfileByUserid.js +1 -1
  26. package/dist/src/handlers/Management/PutUserProfileByUserid.js.map +1 -1
  27. package/dist/src/handlers/Management/PutUserProfileByUseridAppend.js +1 -1
  28. package/dist/src/handlers/Management/PutUserProfileByUseridAppend.js.map +1 -1
  29. package/dist/src/handlers/Management/PutUserRolesByUserid.js +1 -1
  30. package/dist/src/handlers/Management/PutUserRolesByUserid.js.map +1 -1
  31. package/dist/src/handlers/Management/PutUserUsernameByUserid.js +1 -1
  32. package/dist/src/handlers/Management/PutUserUsernameByUserid.js.map +1 -1
  33. package/dist/src/handlers/UserProfilePut.js +1 -1
  34. package/dist/src/handlers/UserProfilePut.js.map +1 -1
  35. package/dist/src/handlers/UserPushRegisterToken.js +2 -2
  36. package/dist/src/handlers/UserPushRegisterToken.js.map +1 -1
  37. package/dist/src/handlers/UserPushRemoveToken.js +1 -1
  38. package/dist/src/handlers/UserPushRemoveToken.js.map +1 -1
  39. package/package.json +7 -7
  40. package/src/coreFunctions.ts +3 -3
  41. package/src/handlers/Management/PutUserPasswordByUserid.ts +1 -1
  42. package/src/handlers/Management/PutUserProfileByUserid.ts +1 -1
  43. package/src/handlers/Management/PutUserProfileByUseridAppend.ts +1 -1
  44. package/src/handlers/Management/PutUserRolesByUserid.ts +1 -1
  45. package/src/handlers/Management/PutUserUsernameByUserid.ts +1 -1
  46. package/src/handlers/UserProfilePut.ts +1 -1
  47. package/src/handlers/UserPushRegisterToken.ts +2 -2
  48. package/src/handlers/UserPushRemoveToken.ts +1 -1
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  import { autoRegisteredAgents } from "@flink-app/flink";
3
3
  export const agents = [];
4
4
  autoRegisteredAgents.push(...agents);
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  import { autoRegisteredHandlers, HttpMethod } from "@flink-app/flink";
3
3
  import * as UserCreate_0 from "../src/handlers/UserCreate";
4
4
  import * as UserLogin_1 from "../src/handlers/UserLogin";
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  import { autoRegisteredJobs } from "@flink-app/flink";
3
3
  export const jobs = [];
4
4
  autoRegisteredJobs.push(...jobs);
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  import { autoRegisteredRepos } from "@flink-app/flink";
3
3
  export const repos = [];
4
4
  autoRegisteredRepos.push(...repos);
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  import { autoRegisteredTools } from "@flink-app/flink";
3
3
  export const tools = [];
4
4
  autoRegisteredTools.push(...tools);
package/.flink/start.ts CHANGED
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  import "./generatedHandlers";
3
3
  import "./generatedRepos";
4
4
  import "./generatedTools";
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @flink-app/generic-auth-plugin
2
2
 
3
+ ## 2.0.0-alpha.74
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - Updated dependencies
9
+ - @flink-app/flink@2.0.0-alpha.74
10
+ - @flink-app/email-plugin@2.0.0-alpha.74
11
+ - @flink-app/jwt-auth-plugin@2.0.0-alpha.74
12
+ - @flink-app/management-api-plugin@2.0.0-alpha.74
13
+ - @flink-app/sms-plugin@2.0.0-alpha.74
14
+
15
+ ## 2.0.0-alpha.73
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+ - @flink-app/flink@2.0.0-alpha.73
21
+ - @flink-app/email-plugin@2.0.0-alpha.73
22
+ - @flink-app/jwt-auth-plugin@2.0.0-alpha.73
23
+ - @flink-app/management-api-plugin@2.0.0-alpha.73
24
+ - @flink-app/sms-plugin@2.0.0-alpha.73
25
+
3
26
  ## 2.0.0-alpha.72
4
27
 
5
28
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/generatedAgents.ts"],"sourcesContent":["// Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)\nimport { autoRegisteredAgents } from \"@flink-app/flink\";\nexport const agents = [];\nautoRegisteredAgents.push(...agents);\n "],"names":["agents","autoRegisteredAgents","push"],"mappings":"AAAA,+EAA+E;;;;;+BAElEA;;;eAAAA;;;uBADwB;AAC9B,MAAMA,SAAS,EAAE;AACxBC,2BAAoB,CAACC,IAAI,IAAIF"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/generatedAgents.ts"],"sourcesContent":["// Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)\nimport { autoRegisteredAgents } from \"@flink-app/flink\";\nexport const agents = [];\nautoRegisteredAgents.push(...agents);\n "],"names":["agents","autoRegisteredAgents","push"],"mappings":"AAAA,+EAA+E;;;;;+BAElEA;;;eAAAA;;;uBADwB;AAC9B,MAAMA,SAAS,EAAE;AACxBC,2BAAoB,CAACC,IAAI,IAAIF"}
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/generatedHandlers.ts"],"sourcesContent":["// Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)\nimport { autoRegisteredHandlers, HttpMethod } from \"@flink-app/flink\";\nimport * as UserCreate_0 from \"../src/handlers/UserCreate\";\nimport * as UserLogin_1 from \"../src/handlers/UserLogin\";\nimport * as UserLoginByToken_2 from \"../src/handlers/UserLoginByToken\";\nimport * as UserPasswordPut_3 from \"../src/handlers/UserPasswordPut\";\nimport * as UserPasswordResetComplete_4 from \"../src/handlers/UserPasswordResetComplete\";\nimport * as UserPasswordResetForm_5 from \"../src/handlers/UserPasswordResetForm\";\nimport * as UserPasswordResetStart_6 from \"../src/handlers/UserPasswordResetStart\";\nimport * as UserProfileGet_7 from \"../src/handlers/UserProfileGet\";\nimport * as UserProfilePut_8 from \"../src/handlers/UserProfilePut\";\nimport * as UserPushRegisterToken_9 from \"../src/handlers/UserPushRegisterToken\";\nimport * as UserPushRemoveToken_10 from \"../src/handlers/UserPushRemoveToken\";\nimport * as UserToken_11 from \"../src/handlers/UserToken\";\nimport * as DeleteUserByUserid_12 from \"../src/handlers/Management/DeleteUserByUserid\";\nimport * as GetSchema_13 from \"../src/handlers/Management/GetSchema\";\nimport * as GetUser_14 from \"../src/handlers/Management/GetUser\";\nimport * as GetUserByUserid_15 from \"../src/handlers/Management/GetUserByUserid\";\nimport * as GetUserViewByUserid_16 from \"../src/handlers/Management/GetUserViewByUserid\";\nimport * as PutUserPasswordByUserid_17 from \"../src/handlers/Management/PutUserPasswordByUserid\";\nimport * as PutUserProfileByUserid_18 from \"../src/handlers/Management/PutUserProfileByUserid\";\nimport * as PutUserProfileByUseridAppend_19 from \"../src/handlers/Management/PutUserProfileByUseridAppend\";\nimport * as PutUserRolesByUserid_20 from \"../src/handlers/Management/PutUserRolesByUserid\";\nimport * as PutUserUsernameByUserid_21 from \"../src/handlers/Management/PutUserUsernameByUserid\";\n\nexport const handlers = [];\nautoRegisteredHandlers.push(...handlers);\n "],"names":["handlers","autoRegisteredHandlers","push"],"mappings":"AAAA,+EAA+E;;;;;+BAyBlEA;;;eAAAA;;;uBAxBsC;AAwB5C,MAAMA,WAAW,EAAE;AAC1BC,6BAAsB,CAACC,IAAI,IAAIF"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/generatedHandlers.ts"],"sourcesContent":["// Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)\nimport { autoRegisteredHandlers, HttpMethod } from \"@flink-app/flink\";\nimport * as UserCreate_0 from \"../src/handlers/UserCreate\";\nimport * as UserLogin_1 from \"../src/handlers/UserLogin\";\nimport * as UserLoginByToken_2 from \"../src/handlers/UserLoginByToken\";\nimport * as UserPasswordPut_3 from \"../src/handlers/UserPasswordPut\";\nimport * as UserPasswordResetComplete_4 from \"../src/handlers/UserPasswordResetComplete\";\nimport * as UserPasswordResetForm_5 from \"../src/handlers/UserPasswordResetForm\";\nimport * as UserPasswordResetStart_6 from \"../src/handlers/UserPasswordResetStart\";\nimport * as UserProfileGet_7 from \"../src/handlers/UserProfileGet\";\nimport * as UserProfilePut_8 from \"../src/handlers/UserProfilePut\";\nimport * as UserPushRegisterToken_9 from \"../src/handlers/UserPushRegisterToken\";\nimport * as UserPushRemoveToken_10 from \"../src/handlers/UserPushRemoveToken\";\nimport * as UserToken_11 from \"../src/handlers/UserToken\";\nimport * as DeleteUserByUserid_12 from \"../src/handlers/Management/DeleteUserByUserid\";\nimport * as GetSchema_13 from \"../src/handlers/Management/GetSchema\";\nimport * as GetUser_14 from \"../src/handlers/Management/GetUser\";\nimport * as GetUserByUserid_15 from \"../src/handlers/Management/GetUserByUserid\";\nimport * as GetUserViewByUserid_16 from \"../src/handlers/Management/GetUserViewByUserid\";\nimport * as PutUserPasswordByUserid_17 from \"../src/handlers/Management/PutUserPasswordByUserid\";\nimport * as PutUserProfileByUserid_18 from \"../src/handlers/Management/PutUserProfileByUserid\";\nimport * as PutUserProfileByUseridAppend_19 from \"../src/handlers/Management/PutUserProfileByUseridAppend\";\nimport * as PutUserRolesByUserid_20 from \"../src/handlers/Management/PutUserRolesByUserid\";\nimport * as PutUserUsernameByUserid_21 from \"../src/handlers/Management/PutUserUsernameByUserid\";\n\nexport const handlers = [];\nautoRegisteredHandlers.push(...handlers);\n "],"names":["handlers","autoRegisteredHandlers","push"],"mappings":"AAAA,+EAA+E;;;;;+BAyBlEA;;;eAAAA;;;uBAxBsC;AAwB5C,MAAMA,WAAW,EAAE;AAC1BC,6BAAsB,CAACC,IAAI,IAAIF"}
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/generatedJobs.ts"],"sourcesContent":["// Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)\nimport { autoRegisteredJobs } from \"@flink-app/flink\";\nexport const jobs = [];\nautoRegisteredJobs.push(...jobs);\n "],"names":["jobs","autoRegisteredJobs","push"],"mappings":"AAAA,+EAA+E;;;;;+BAElEA;;;eAAAA;;;uBADsB;AAC5B,MAAMA,OAAO,EAAE;AACtBC,yBAAkB,CAACC,IAAI,IAAIF"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/generatedJobs.ts"],"sourcesContent":["// Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)\nimport { autoRegisteredJobs } from \"@flink-app/flink\";\nexport const jobs = [];\nautoRegisteredJobs.push(...jobs);\n "],"names":["jobs","autoRegisteredJobs","push"],"mappings":"AAAA,+EAA+E;;;;;+BAElEA;;;eAAAA;;;uBADsB;AAC5B,MAAMA,OAAO,EAAE;AACtBC,yBAAkB,CAACC,IAAI,IAAIF"}
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/generatedRepos.ts"],"sourcesContent":["// Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)\n import { autoRegisteredRepos } from \"@flink-app/flink\";\n export const repos = [];\n autoRegisteredRepos.push(...repos);\n "],"names":["repos","autoRegisteredRepos","push"],"mappings":"AAAA,+EAA+E;;;;;+BAEhEA;;;eAAAA;;;uBADuB;AAC7B,MAAMA,QAAQ,EAAE;AACvBC,0BAAmB,CAACC,IAAI,IAAIF"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/generatedRepos.ts"],"sourcesContent":["// Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)\n import { autoRegisteredRepos } from \"@flink-app/flink\";\n export const repos = [];\n autoRegisteredRepos.push(...repos);\n "],"names":["repos","autoRegisteredRepos","push"],"mappings":"AAAA,+EAA+E;;;;;+BAEhEA;;;eAAAA;;;uBADuB;AAC7B,MAAMA,QAAQ,EAAE;AACvBC,0BAAmB,CAACC,IAAI,IAAIF"}
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/generatedTools.ts"],"sourcesContent":["// Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)\nimport { autoRegisteredTools } from \"@flink-app/flink\";\nexport const tools = [];\nautoRegisteredTools.push(...tools);\n "],"names":["tools","autoRegisteredTools","push"],"mappings":"AAAA,+EAA+E;;;;;+BAElEA;;;eAAAA;;;uBADuB;AAC7B,MAAMA,QAAQ,EAAE;AACvBC,0BAAmB,CAACC,IAAI,IAAIF"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/generatedTools.ts"],"sourcesContent":["// Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)\nimport { autoRegisteredTools } from \"@flink-app/flink\";\nexport const tools = [];\nautoRegisteredTools.push(...tools);\n "],"names":["tools","autoRegisteredTools","push"],"mappings":"AAAA,+EAA+E;;;;;+BAElEA;;;eAAAA;;;uBADuB;AAC7B,MAAMA,QAAQ,EAAE;AACvBC,0BAAmB,CAACC,IAAI,IAAIF"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "2.0",
3
- "generated": "2026-03-10T23:29:30.676Z",
3
+ "generated": "2026-03-23T10:57:44.465Z",
4
4
  "schemas": {
5
5
  "Management.DeleteUserByUseridReq.DeleteManagementUserByUseridReq": {
6
6
  "type": "object",
@@ -1,4 +1,4 @@
1
- // Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)
1
+ // Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/start.ts"],"sourcesContent":["// Generated Wed Mar 11 2026 00:29:30 GMT+0100 (Central European Standard Time)\nimport \"./generatedHandlers\";\nimport \"./generatedRepos\";\nimport \"./generatedTools\";\nimport \"./generatedAgents\";\nimport \"./generatedJobs\";\nimport \"../src/index\";\nexport default {}; // Export an empty object to make it a module\n"],"names":[],"mappings":"AAAA,+EAA+E;;;;;+BAO/E,UAAmB,6CAA6C;;;;eAAhE;;;QANO;QACA;QACA;QACA;QACA;QACA;MACP,WAAe,CAAC"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/.flink/start.ts"],"sourcesContent":["// Generated Mon Mar 23 2026 11:57:44 GMT+0100 (Central European Standard Time)\nimport \"./generatedHandlers\";\nimport \"./generatedRepos\";\nimport \"./generatedTools\";\nimport \"./generatedAgents\";\nimport \"./generatedJobs\";\nimport \"../src/index\";\nexport default {}; // Export an empty object to make it a module\n"],"names":[],"mappings":"AAAA,+EAA+E;;;;;+BAO/E,UAAmB,6CAA6C;;;;eAAhE;;;QANO;QACA;QACA;QACA;QACA;QACA;MACP,WAAe,CAAC"}
@@ -270,7 +270,7 @@ async function changePassword(repo, auth, userId, newPassword, createPasswordHas
270
270
  status: "passwordError"
271
271
  };
272
272
  }
273
- await repo.updateOne(userId, {
273
+ await repo.updateById(userId, {
274
274
  password: passwordAndSalt.hash,
275
275
  salt: passwordAndSalt.salt
276
276
  });
@@ -314,7 +314,7 @@ async function passwordResetStart(repo, auth, jwtSecret, username, numberOfDigit
314
314
  secret = jwtSecret + ":" + code;
315
315
  } else {
316
316
  secret = jwtSecret + ":" + code + ":" + pwdResetStartedAt;
317
- await repo.updateOne(user._id, {
317
+ await repo.updateById(user._id, {
318
318
  pwdResetStartedAt
319
319
  });
320
320
  }
@@ -371,7 +371,7 @@ async function passwordResetComplete(repo, auth, jwtSecret, passwordResetToken,
371
371
  status: "passwordError"
372
372
  };
373
373
  }
374
- await repo.updateOne(user._id, {
374
+ await repo.updateById(user._id, {
375
375
  password: passwordAndSalt.hash,
376
376
  salt: passwordAndSalt.salt,
377
377
  pwdResetStartedAt: null
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/coreFunctions.ts"],"sourcesContent":["import { FlinkRepo, FlinkAuthUser, log, FlinkRequest } from \"@flink-app/flink\";\nimport { JwtAuthPlugin, jwtAuthPlugin } from \"@flink-app/jwt-auth-plugin\";\n\nimport { User } from \"./schemas/User\";\nimport { UserCreateRes } from \"./schemas/UserCreateRes\";\nimport { UserLoginRes } from \"./schemas/UserLoginRes\";\nimport { UserProfile } from \"./schemas/UserProfile\";\nimport { UserPasswordChangeRes } from \"./schemas/UserPasswordChangeRes\";\nimport { UserPasswordResetStartRes } from \"./schemas/UserPasswordResetStartRes\";\nimport { UserPasswordResetCompleteRes } from \"./schemas/UserPasswordResetCompleteRes\";\n\nimport jsonwebtoken from \"jsonwebtoken\";\nimport { GenericAuthsmsOptions } from \"./genericAuthPluginOptions\";\n\nexport function getJtwTokenPlugin(secret: string, rolePermissions?: { [role: string]: string[] }, passwordPolicy?: RegExp, tokenTTL?: number) {\n if (passwordPolicy == undefined) {\n passwordPolicy = /.{1,}$/;\n }\n if (rolePermissions == undefined) {\n rolePermissions = {};\n }\n if (rolePermissions[\"user\"] == null) {\n rolePermissions[\"user\"] = [];\n }\n if (!rolePermissions[\"user\"].includes(\"authenticated\")) rolePermissions[\"user\"].push(\"authenticated\");\n\n return jwtAuthPlugin({\n secret,\n getUser: (tokenData: any) => {\n return new Promise<FlinkAuthUser>((res) => {\n res({\n username: tokenData.username,\n _id: tokenData._id,\n });\n });\n },\n passwordPolicy,\n rolePermissions,\n tokenTTL,\n });\n}\n\nexport async function createUser(\n repo: FlinkRepo<any, User>,\n auth: JwtAuthPlugin,\n username: string,\n password: string,\n authentificationMethod: \"password\" | \"sms\" | \"bankid\",\n roles: string[],\n profile: UserProfile,\n createPasswordHashAndSaltMethod?: {\n (password: string): Promise<{ hash: string; salt: string } | null>;\n },\n onUserCreated?: {\n (user: User): Promise<void>;\n },\n personalNumber?: string\n): Promise<UserCreateRes> {\n if (!roles.includes(\"user\")) roles.push(\"user\");\n\n const existingUser = await repo.getOne({ username: username.toLowerCase() });\n if (existingUser != null) {\n return {\n status: \"userExists\",\n };\n }\n let userData: Omit<User, \"_id\"> = {\n username: username.toLowerCase(),\n roles,\n profile,\n authentificationMethod,\n pushNotificationTokens: [],\n };\n\n if (personalNumber) {\n userData.personalNumber = personalNumber;\n }\n\n if (authentificationMethod == \"bankid\") {\n if (!personalNumber) {\n log.warn(\"BankID login requested but no personal number found for user\");\n return { status: \"error\" };\n }\n }\n\n if (authentificationMethod == \"password\") {\n let passwordAndSalt = null;\n if (createPasswordHashAndSaltMethod != null) {\n passwordAndSalt = await createPasswordHashAndSaltMethod(password);\n } else {\n passwordAndSalt = await auth.createPasswordHashAndSalt(password);\n }\n\n if (passwordAndSalt == null) {\n return {\n status: \"passwordError\",\n };\n }\n userData.password = passwordAndSalt.hash;\n userData.salt = passwordAndSalt.salt;\n }\n\n const user = await repo.create(userData);\n\n if (onUserCreated) {\n await onUserCreated(user);\n }\n\n const token = await auth.createToken({ username: username.toLowerCase(), _id: user._id }, roles);\n\n if (user.authentificationMethod == \"sms\") {\n return {\n status: \"success\",\n };\n }\n\n return {\n status: \"success\",\n user: {\n _id: user._id,\n token: token,\n username: username.toLowerCase(),\n },\n };\n}\n\nexport async function loginByToken(repo: FlinkRepo<any, User>, auth: JwtAuthPlugin, token: string, code: string, jwtSecret: string): Promise<UserLoginRes> {\n let payload: { type: string; userId: string };\n try {\n payload = jsonwebtoken.verify(token, jwtSecret + \":\" + code) as { type: string; userId: string };\n } catch (ex) {\n return { status: \"failed\" };\n }\n\n if (payload.type != \"smsLogin\") {\n return { status: \"failed\" };\n }\n\n const user = await repo.getById(payload.userId);\n if (user == null) {\n return { status: \"failed\" };\n }\n\n const authToken = await auth.createToken({ username: user.username.toLowerCase(), _id: user._id }, user.roles);\n\n return {\n status: \"success\",\n user: {\n _id: user._id,\n username: user.username,\n token: authToken,\n profile: user.profile,\n },\n };\n}\n\nexport async function loginUser(\n repo: FlinkRepo<any, User>,\n auth: JwtAuthPlugin,\n username: string,\n password: string | undefined,\n validatePasswordMethod?: {\n (password: string, hash: string, salt: string): Promise<boolean>;\n },\n smsOptions?: GenericAuthsmsOptions,\n onSuccessfulLogin?: {\n (user: User, req?: FlinkRequest): Promise<void>;\n },\n req?: FlinkRequest\n): Promise<UserLoginRes> {\n const user = await repo.getOne({ username: username.toLowerCase() });\n if (user == null) {\n return { status: \"failed\" };\n }\n\n let valid: boolean = false;\n\n if (user.authentificationMethod == \"password\") {\n if (password == null) password = \"\";\n\n if (validatePasswordMethod) {\n valid = await validatePasswordMethod(password, <string>user.password, <string>user.salt);\n\n //If not valid, try to use default auth\n if (!valid) {\n try {\n valid = await auth.validatePassword(password, <string>user.password, <string>user.salt);\n } catch (ex) {}\n }\n } else {\n valid = await auth.validatePassword(password, <string>user.password, <string>user.salt);\n }\n }\n if (user.authentificationMethod == \"sms\") {\n if (!smsOptions) throw \"SMS options must be specified to use SMS login\";\n let code = smsOptions.codeType == \"numeric\" ? generate(smsOptions.codeLength) : generateString(smsOptions.codeLength);\n smsOptions.smsClient.send({\n to: [user.username],\n from: smsOptions.smsFrom,\n message: smsOptions.smsMessage.replace(\"{{code}}\", code),\n });\n\n const payload = {\n type: \"smsLogin\",\n userId: user._id,\n };\n\n const secret = smsOptions.jwtToken + \":\" + code;\n\n const options: jsonwebtoken.SignOptions = {\n expiresIn: \"1h\",\n };\n\n const token = jsonwebtoken.sign(payload, secret, options);\n\n return {\n status: \"success\",\n validationToken: token,\n };\n }\n if (user.authentificationMethod == \"bankid\") {\n if (!user.personalNumber) {\n log.warn(\"BankID login requested but no personal number found for user\");\n return { status: \"failed\" };\n }\n\n log.warn(\"BankID login required to be handled in other way, i.e. using flink bankid plugin\");\n return { status: \"failed\" };\n }\n\n if (valid) {\n const token = await auth.createToken({ username: username.toLowerCase(), _id: user._id }, user.roles);\n\n if (onSuccessfulLogin) {\n await onSuccessfulLogin(user, req);\n }\n\n return {\n status: \"success\",\n user: {\n _id: user._id,\n username: user.username,\n token,\n profile: user.profile,\n },\n };\n } else {\n return { status: \"failed\" };\n }\n}\n\nexport async function changePassword(\n repo: FlinkRepo<any, User>,\n auth: JwtAuthPlugin,\n userId: string,\n newPassword: string,\n createPasswordHashAndSaltMethod?: {\n (password: string): Promise<{ hash: string; salt: string } | null>;\n }\n): Promise<UserPasswordChangeRes> {\n const user = await repo.getById(userId);\n if (user == null) {\n return { status: \"failed\" };\n }\n\n if (user.authentificationMethod != \"password\") {\n return { status: \"failed\" };\n }\n\n let passwordAndSalt = null;\n\n if (createPasswordHashAndSaltMethod == null) {\n passwordAndSalt = await auth.createPasswordHashAndSalt(newPassword);\n } else {\n passwordAndSalt = await createPasswordHashAndSaltMethod(newPassword);\n }\n\n if (passwordAndSalt == null) {\n return {\n status: \"passwordError\",\n };\n }\n\n await repo.updateOne(userId, {\n password: passwordAndSalt.hash,\n salt: passwordAndSalt.salt,\n });\n\n return { status: \"success\" };\n}\n\nexport async function passwordResetStart(\n repo: FlinkRepo<any, User>,\n auth: JwtAuthPlugin,\n jwtSecret: string,\n username: string,\n numberOfDigits?: number,\n lifeTime?: string,\n passwordResetReusableTokens: boolean = true\n): Promise<UserPasswordResetStartRes> {\n const user = await repo.getOne({ username: username.toLowerCase() });\n\n const fakepayload = {\n type: \"passwordReset\",\n username: username.toLocaleLowerCase(),\n };\n const fakeToken = jsonwebtoken.sign(fakepayload, \"fake_payload\", { expiresIn: lifeTime });\n\n if (user == null) {\n return { status: \"userNotFound\", passwordResetToken: fakeToken };\n }\n\n if (user.authentificationMethod != \"password\") {\n return { status: \"userNotFound\", passwordResetToken: fakeToken };\n }\n\n if (numberOfDigits == null) numberOfDigits = 6;\n if (lifeTime == null) lifeTime = \"1h\";\n\n const payload = {\n type: \"passwordReset\",\n username: username.toLocaleLowerCase(),\n };\n const code = generate(numberOfDigits);\n\n const pwdResetStartedAt = new Date().toISOString();\n let secret;\n if (passwordResetReusableTokens) {\n secret = jwtSecret + \":\" + code;\n } else {\n secret = jwtSecret + \":\" + code + \":\" + pwdResetStartedAt;\n await repo.updateOne(user._id, { pwdResetStartedAt });\n }\n\n const options: jsonwebtoken.SignOptions = {\n expiresIn: lifeTime,\n };\n\n const token = jsonwebtoken.sign(payload, secret, options);\n\n return {\n status: \"success\",\n passwordResetToken: token,\n code,\n profile: user.profile,\n };\n}\n\nexport async function passwordResetComplete(\n repo: FlinkRepo<any, User>,\n auth: JwtAuthPlugin,\n jwtSecret: string,\n passwordResetToken: string,\n code: string,\n newPassword: string,\n createPasswordHashAndSaltMethod?: {\n (password: string): Promise<{ hash: string; salt: string } | null>;\n },\n passwordResetReusableTokens: boolean = true\n): Promise<UserPasswordResetCompleteRes> {\n const payload = <{ username: string }>jsonwebtoken.decode(passwordResetToken);\n\n if (!payload || !payload.username) return { status: \"invalidCode\" };\n\n const user = await repo.getOne({ username: payload.username });\n\n if (!user || user == null || user.authentificationMethod != \"password\") {\n return { status: \"userNotFound\" };\n }\n\n let secret;\n if (passwordResetReusableTokens === true) {\n secret = jwtSecret + \":\" + code;\n } else {\n if (!user.pwdResetStartedAt || user.pwdResetStartedAt === null) {\n return { status: \"userNotFound\" };\n }\n secret = jwtSecret + \":\" + code + \":\" + user.pwdResetStartedAt;\n }\n\n try {\n jsonwebtoken.verify(passwordResetToken, secret);\n } catch (ex) {\n return { status: \"invalidCode\" };\n }\n\n let passwordAndSalt = null;\n\n if (createPasswordHashAndSaltMethod == null) {\n passwordAndSalt = await auth.createPasswordHashAndSalt(newPassword);\n } else {\n passwordAndSalt = await createPasswordHashAndSaltMethod(newPassword);\n }\n\n if (passwordAndSalt == null) {\n return {\n status: \"passwordError\",\n };\n }\n\n await repo.updateOne(user._id, {\n password: passwordAndSalt.hash,\n salt: passwordAndSalt.salt,\n pwdResetStartedAt: null,\n });\n\n return { status: \"success\", user };\n}\n\nfunction generate(n: number): string {\n var add = 1,\n max = 12 - add;\n\n if (n > max) {\n return generate(max) + generate(n - max);\n }\n\n max = Math.pow(10, n + add);\n var min = max / 10;\n var number = Math.floor(Math.random() * (max - min + 1)) + min;\n\n return (\"\" + number).substring(add);\n}\n\nfunction generateString(length: number) {\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n let result = \" \";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n}\n"],"names":["changePassword","createUser","getJtwTokenPlugin","loginByToken","loginUser","passwordResetComplete","passwordResetStart","secret","rolePermissions","passwordPolicy","tokenTTL","undefined","includes","push","jwtAuthPlugin","getUser","tokenData","Promise","res","username","_id","repo","auth","password","authentificationMethod","roles","profile","createPasswordHashAndSaltMethod","onUserCreated","personalNumber","existingUser","getOne","toLowerCase","status","userData","pushNotificationTokens","log","warn","passwordAndSalt","createPasswordHashAndSalt","hash","salt","user","create","token","createToken","code","jwtSecret","payload","jsonwebtoken","verify","ex","type","getById","userId","authToken","validatePasswordMethod","smsOptions","onSuccessfulLogin","req","valid","validatePassword","codeType","generate","codeLength","generateString","smsClient","send","to","from","smsFrom","message","smsMessage","replace","jwtToken","options","expiresIn","sign","validationToken","newPassword","updateOne","numberOfDigits","lifeTime","passwordResetReusableTokens","fakepayload","toLocaleLowerCase","fakeToken","passwordResetToken","pwdResetStartedAt","Date","toISOString","decode","n","add","max","Math","pow","min","number","floor","random","substring","length","characters","result","charactersLength","i","charAt"],"mappings":";;;;;;;;;;;QA2PsBA;eAAAA;;QAjNAC;eAAAA;;QA5BNC;eAAAA;;QAgHMC;eAAAA;;QA8BAC;eAAAA;;QAgMAC;eAAAA;;QAzDAC;eAAAA;;;uBAnSsC;+BACf;qEAUpB;;;;;;AAGlB,SAASJ,kBAAkBK,MAAc,EAAEC,eAA8C,EAAEC,cAAuB,EAAEC,QAAiB;IACxI,IAAID,kBAAkBE,WAAW;QAC7BF,iBAAiB;IACrB;IACA,IAAID,mBAAmBG,WAAW;QAC9BH,kBAAkB,CAAC;IACvB;IACA,IAAIA,eAAe,CAAC,OAAO,IAAI,MAAM;QACjCA,eAAe,CAAC,OAAO,GAAG,EAAE;IAChC;IACA,IAAI,CAACA,eAAe,CAAC,OAAO,CAACI,QAAQ,CAAC,kBAAkBJ,eAAe,CAAC,OAAO,CAACK,IAAI,CAAC;IAErF,OAAOC,IAAAA,4BAAa,EAAC;QACjBP;QACAQ,SAAS,CAACC;YACN,OAAO,IAAIC,QAAuB,CAACC;gBAC/BA,IAAI;oBACAC,UAAUH,UAAUG,QAAQ;oBAC5BC,KAAKJ,UAAUI,GAAG;gBACtB;YACJ;QACJ;QACAX;QACAD;QACAE;IACJ;AACJ;AAEO,eAAeT,WAClBoB,IAA0B,EAC1BC,IAAmB,EACnBH,QAAgB,EAChBI,QAAgB,EAChBC,sBAAqD,EACrDC,KAAe,EACfC,OAAoB,EACpBC,+BAEC,EACDC,aAEC,EACDC,cAAuB;IAEvB,IAAI,CAACJ,MAAMb,QAAQ,CAAC,SAASa,MAAMZ,IAAI,CAAC;IAExC,MAAMiB,eAAe,MAAMT,KAAKU,MAAM,CAAC;QAAEZ,UAAUA,SAASa,WAAW;IAAG;IAC1E,IAAIF,gBAAgB,MAAM;QACtB,OAAO;YACHG,QAAQ;QACZ;IACJ;IACA,IAAIC,WAA8B;QAC9Bf,UAAUA,SAASa,WAAW;QAC9BP;QACAC;QACAF;QACAW,wBAAwB,EAAE;IAC9B;IAEA,IAAIN,gBAAgB;QAChBK,SAASL,cAAc,GAAGA;IAC9B;IAEA,IAAIL,0BAA0B,UAAU;QACpC,IAAI,CAACK,gBAAgB;YACjBO,UAAG,CAACC,IAAI,CAAC;YACT,OAAO;gBAAEJ,QAAQ;YAAQ;QAC7B;IACJ;IAEA,IAAIT,0BAA0B,YAAY;QACtC,IAAIc,kBAAkB;QACtB,IAAIX,mCAAmC,MAAM;YACzCW,kBAAkB,MAAMX,gCAAgCJ;QAC5D,OAAO;YACHe,kBAAkB,MAAMhB,KAAKiB,yBAAyB,CAAChB;QAC3D;QAEA,IAAIe,mBAAmB,MAAM;YACzB,OAAO;gBACHL,QAAQ;YACZ;QACJ;QACAC,SAASX,QAAQ,GAAGe,gBAAgBE,IAAI;QACxCN,SAASO,IAAI,GAAGH,gBAAgBG,IAAI;IACxC;IAEA,MAAMC,OAAO,MAAMrB,KAAKsB,MAAM,CAACT;IAE/B,IAAIN,eAAe;QACf,MAAMA,cAAcc;IACxB;IAEA,MAAME,QAAQ,MAAMtB,KAAKuB,WAAW,CAAC;QAAE1B,UAAUA,SAASa,WAAW;QAAIZ,KAAKsB,KAAKtB,GAAG;IAAC,GAAGK;IAE1F,IAAIiB,KAAKlB,sBAAsB,IAAI,OAAO;QACtC,OAAO;YACHS,QAAQ;QACZ;IACJ;IAEA,OAAO;QACHA,QAAQ;QACRS,MAAM;YACFtB,KAAKsB,KAAKtB,GAAG;YACbwB,OAAOA;YACPzB,UAAUA,SAASa,WAAW;QAClC;IACJ;AACJ;AAEO,eAAe7B,aAAakB,IAA0B,EAAEC,IAAmB,EAAEsB,KAAa,EAAEE,IAAY,EAAEC,SAAiB;IAC9H,IAAIC;IACJ,IAAI;QACAA,UAAUC,qBAAY,CAACC,MAAM,CAACN,OAAOG,YAAY,MAAMD;IAC3D,EAAE,OAAOK,IAAI;QACT,OAAO;YAAElB,QAAQ;QAAS;IAC9B;IAEA,IAAIe,QAAQI,IAAI,IAAI,YAAY;QAC5B,OAAO;YAAEnB,QAAQ;QAAS;IAC9B;IAEA,MAAMS,OAAO,MAAMrB,KAAKgC,OAAO,CAACL,QAAQM,MAAM;IAC9C,IAAIZ,QAAQ,MAAM;QACd,OAAO;YAAET,QAAQ;QAAS;IAC9B;IAEA,MAAMsB,YAAY,MAAMjC,KAAKuB,WAAW,CAAC;QAAE1B,UAAUuB,KAAKvB,QAAQ,CAACa,WAAW;QAAIZ,KAAKsB,KAAKtB,GAAG;IAAC,GAAGsB,KAAKjB,KAAK;IAE7G,OAAO;QACHQ,QAAQ;QACRS,MAAM;YACFtB,KAAKsB,KAAKtB,GAAG;YACbD,UAAUuB,KAAKvB,QAAQ;YACvByB,OAAOW;YACP7B,SAASgB,KAAKhB,OAAO;QACzB;IACJ;AACJ;AAEO,eAAetB,UAClBiB,IAA0B,EAC1BC,IAAmB,EACnBH,QAAgB,EAChBI,QAA4B,EAC5BiC,sBAEC,EACDC,UAAkC,EAClCC,iBAEC,EACDC,GAAkB;IAElB,MAAMjB,OAAO,MAAMrB,KAAKU,MAAM,CAAC;QAAEZ,UAAUA,SAASa,WAAW;IAAG;IAClE,IAAIU,QAAQ,MAAM;QACd,OAAO;YAAET,QAAQ;QAAS;IAC9B;IAEA,IAAI2B,QAAiB;IAErB,IAAIlB,KAAKlB,sBAAsB,IAAI,YAAY;QAC3C,IAAID,YAAY,MAAMA,WAAW;QAEjC,IAAIiC,wBAAwB;YACxBI,QAAQ,MAAMJ,uBAAuBjC,UAAkBmB,KAAKnB,QAAQ,EAAUmB,KAAKD,IAAI;YAEvF,uCAAuC;YACvC,IAAI,CAACmB,OAAO;gBACR,IAAI;oBACAA,QAAQ,MAAMtC,KAAKuC,gBAAgB,CAACtC,UAAkBmB,KAAKnB,QAAQ,EAAUmB,KAAKD,IAAI;gBAC1F,EAAE,OAAOU,IAAI,CAAC;YAClB;QACJ,OAAO;YACHS,QAAQ,MAAMtC,KAAKuC,gBAAgB,CAACtC,UAAkBmB,KAAKnB,QAAQ,EAAUmB,KAAKD,IAAI;QAC1F;IACJ;IACA,IAAIC,KAAKlB,sBAAsB,IAAI,OAAO;QACtC,IAAI,CAACiC,YAAY,MAAM;QACvB,IAAIX,OAAOW,WAAWK,QAAQ,IAAI,YAAYC,SAASN,WAAWO,UAAU,IAAIC,eAAeR,WAAWO,UAAU;QACpHP,WAAWS,SAAS,CAACC,IAAI,CAAC;YACtBC,IAAI;gBAAC1B,KAAKvB,QAAQ;aAAC;YACnBkD,MAAMZ,WAAWa,OAAO;YACxBC,SAASd,WAAWe,UAAU,CAACC,OAAO,CAAC,YAAY3B;QACvD;QAEA,MAAME,UAAU;YACZI,MAAM;YACNE,QAAQZ,KAAKtB,GAAG;QACpB;QAEA,MAAMb,SAASkD,WAAWiB,QAAQ,GAAG,MAAM5B;QAE3C,MAAM6B,UAAoC;YACtCC,WAAW;QACf;QAEA,MAAMhC,QAAQK,qBAAY,CAAC4B,IAAI,CAAC7B,SAASzC,QAAQoE;QAEjD,OAAO;YACH1C,QAAQ;YACR6C,iBAAiBlC;QACrB;IACJ;IACA,IAAIF,KAAKlB,sBAAsB,IAAI,UAAU;QACzC,IAAI,CAACkB,KAAKb,cAAc,EAAE;YACtBO,UAAG,CAACC,IAAI,CAAC;YACT,OAAO;gBAAEJ,QAAQ;YAAS;QAC9B;QAEAG,UAAG,CAACC,IAAI,CAAC;QACT,OAAO;YAAEJ,QAAQ;QAAS;IAC9B;IAEA,IAAI2B,OAAO;QACP,MAAMhB,QAAQ,MAAMtB,KAAKuB,WAAW,CAAC;YAAE1B,UAAUA,SAASa,WAAW;YAAIZ,KAAKsB,KAAKtB,GAAG;QAAC,GAAGsB,KAAKjB,KAAK;QAEpG,IAAIiC,mBAAmB;YACnB,MAAMA,kBAAkBhB,MAAMiB;QAClC;QAEA,OAAO;YACH1B,QAAQ;YACRS,MAAM;gBACFtB,KAAKsB,KAAKtB,GAAG;gBACbD,UAAUuB,KAAKvB,QAAQ;gBACvByB;gBACAlB,SAASgB,KAAKhB,OAAO;YACzB;QACJ;IACJ,OAAO;QACH,OAAO;YAAEO,QAAQ;QAAS;IAC9B;AACJ;AAEO,eAAejC,eAClBqB,IAA0B,EAC1BC,IAAmB,EACnBgC,MAAc,EACdyB,WAAmB,EACnBpD,+BAEC;IAED,MAAMe,OAAO,MAAMrB,KAAKgC,OAAO,CAACC;IAChC,IAAIZ,QAAQ,MAAM;QACd,OAAO;YAAET,QAAQ;QAAS;IAC9B;IAEA,IAAIS,KAAKlB,sBAAsB,IAAI,YAAY;QAC3C,OAAO;YAAES,QAAQ;QAAS;IAC9B;IAEA,IAAIK,kBAAkB;IAEtB,IAAIX,mCAAmC,MAAM;QACzCW,kBAAkB,MAAMhB,KAAKiB,yBAAyB,CAACwC;IAC3D,OAAO;QACHzC,kBAAkB,MAAMX,gCAAgCoD;IAC5D;IAEA,IAAIzC,mBAAmB,MAAM;QACzB,OAAO;YACHL,QAAQ;QACZ;IACJ;IAEA,MAAMZ,KAAK2D,SAAS,CAAC1B,QAAQ;QACzB/B,UAAUe,gBAAgBE,IAAI;QAC9BC,MAAMH,gBAAgBG,IAAI;IAC9B;IAEA,OAAO;QAAER,QAAQ;IAAU;AAC/B;AAEO,eAAe3B,mBAClBe,IAA0B,EAC1BC,IAAmB,EACnByB,SAAiB,EACjB5B,QAAgB,EAChB8D,cAAuB,EACvBC,QAAiB,EACjBC,8BAAuC,IAAI;IAE3C,MAAMzC,OAAO,MAAMrB,KAAKU,MAAM,CAAC;QAAEZ,UAAUA,SAASa,WAAW;IAAG;IAElE,MAAMoD,cAAc;QAChBhC,MAAM;QACNjC,UAAUA,SAASkE,iBAAiB;IACxC;IACA,MAAMC,YAAYrC,qBAAY,CAAC4B,IAAI,CAACO,aAAa,gBAAgB;QAAER,WAAWM;IAAS;IAEvF,IAAIxC,QAAQ,MAAM;QACd,OAAO;YAAET,QAAQ;YAAgBsD,oBAAoBD;QAAU;IACnE;IAEA,IAAI5C,KAAKlB,sBAAsB,IAAI,YAAY;QAC3C,OAAO;YAAES,QAAQ;YAAgBsD,oBAAoBD;QAAU;IACnE;IAEA,IAAIL,kBAAkB,MAAMA,iBAAiB;IAC7C,IAAIC,YAAY,MAAMA,WAAW;IAEjC,MAAMlC,UAAU;QACZI,MAAM;QACNjC,UAAUA,SAASkE,iBAAiB;IACxC;IACA,MAAMvC,OAAOiB,SAASkB;IAEtB,MAAMO,oBAAoB,IAAIC,OAAOC,WAAW;IAChD,IAAInF;IACJ,IAAI4E,6BAA6B;QAC7B5E,SAASwC,YAAY,MAAMD;IAC/B,OAAO;QACHvC,SAASwC,YAAY,MAAMD,OAAO,MAAM0C;QACxC,MAAMnE,KAAK2D,SAAS,CAACtC,KAAKtB,GAAG,EAAE;YAAEoE;QAAkB;IACvD;IAEA,MAAMb,UAAoC;QACtCC,WAAWM;IACf;IAEA,MAAMtC,QAAQK,qBAAY,CAAC4B,IAAI,CAAC7B,SAASzC,QAAQoE;IAEjD,OAAO;QACH1C,QAAQ;QACRsD,oBAAoB3C;QACpBE;QACApB,SAASgB,KAAKhB,OAAO;IACzB;AACJ;AAEO,eAAerB,sBAClBgB,IAA0B,EAC1BC,IAAmB,EACnByB,SAAiB,EACjBwC,kBAA0B,EAC1BzC,IAAY,EACZiC,WAAmB,EACnBpD,+BAEC,EACDwD,8BAAuC,IAAI;IAE3C,MAAMnC,UAAgCC,qBAAY,CAAC0C,MAAM,CAACJ;IAE1D,IAAI,CAACvC,WAAW,CAACA,QAAQ7B,QAAQ,EAAE,OAAO;QAAEc,QAAQ;IAAc;IAElE,MAAMS,OAAO,MAAMrB,KAAKU,MAAM,CAAC;QAAEZ,UAAU6B,QAAQ7B,QAAQ;IAAC;IAE5D,IAAI,CAACuB,QAAQA,QAAQ,QAAQA,KAAKlB,sBAAsB,IAAI,YAAY;QACpE,OAAO;YAAES,QAAQ;QAAe;IACpC;IAEA,IAAI1B;IACJ,IAAI4E,gCAAgC,MAAM;QACtC5E,SAASwC,YAAY,MAAMD;IAC/B,OAAO;QACH,IAAI,CAACJ,KAAK8C,iBAAiB,IAAI9C,KAAK8C,iBAAiB,KAAK,MAAM;YAC5D,OAAO;gBAAEvD,QAAQ;YAAe;QACpC;QACA1B,SAASwC,YAAY,MAAMD,OAAO,MAAMJ,KAAK8C,iBAAiB;IAClE;IAEA,IAAI;QACAvC,qBAAY,CAACC,MAAM,CAACqC,oBAAoBhF;IAC5C,EAAE,OAAO4C,IAAI;QACT,OAAO;YAAElB,QAAQ;QAAc;IACnC;IAEA,IAAIK,kBAAkB;IAEtB,IAAIX,mCAAmC,MAAM;QACzCW,kBAAkB,MAAMhB,KAAKiB,yBAAyB,CAACwC;IAC3D,OAAO;QACHzC,kBAAkB,MAAMX,gCAAgCoD;IAC5D;IAEA,IAAIzC,mBAAmB,MAAM;QACzB,OAAO;YACHL,QAAQ;QACZ;IACJ;IAEA,MAAMZ,KAAK2D,SAAS,CAACtC,KAAKtB,GAAG,EAAE;QAC3BG,UAAUe,gBAAgBE,IAAI;QAC9BC,MAAMH,gBAAgBG,IAAI;QAC1B+C,mBAAmB;IACvB;IAEA,OAAO;QAAEvD,QAAQ;QAAWS;IAAK;AACrC;AAEA,SAASqB,SAAS6B,CAAS;IACvB,IAAIC,MAAM,GACNC,MAAM,KAAKD;IAEf,IAAID,IAAIE,KAAK;QACT,OAAO/B,SAAS+B,OAAO/B,SAAS6B,IAAIE;IACxC;IAEAA,MAAMC,KAAKC,GAAG,CAAC,IAAIJ,IAAIC;IACvB,IAAII,MAAMH,MAAM;IAChB,IAAII,SAASH,KAAKI,KAAK,CAACJ,KAAKK,MAAM,KAAMN,CAAAA,MAAMG,MAAM,CAAA,KAAMA;IAE3D,OAAO,AAAC,CAAA,KAAKC,MAAK,EAAGG,SAAS,CAACR;AACnC;AAEA,SAAS5B,eAAeqC,MAAc;IAClC,MAAMC,aAAa;IACnB,IAAIC,SAAS;IACb,MAAMC,mBAAmBF,WAAWD,MAAM;IAC1C,IAAK,IAAII,IAAI,GAAGA,IAAIJ,QAAQI,IAAK;QAC7BF,UAAUD,WAAWI,MAAM,CAACZ,KAAKI,KAAK,CAACJ,KAAKK,MAAM,KAAKK;IAC3D;IAEA,OAAOD;AACX"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/coreFunctions.ts"],"sourcesContent":["import { FlinkRepo, FlinkAuthUser, log, FlinkRequest } from \"@flink-app/flink\";\nimport { JwtAuthPlugin, jwtAuthPlugin } from \"@flink-app/jwt-auth-plugin\";\n\nimport { User } from \"./schemas/User\";\nimport { UserCreateRes } from \"./schemas/UserCreateRes\";\nimport { UserLoginRes } from \"./schemas/UserLoginRes\";\nimport { UserProfile } from \"./schemas/UserProfile\";\nimport { UserPasswordChangeRes } from \"./schemas/UserPasswordChangeRes\";\nimport { UserPasswordResetStartRes } from \"./schemas/UserPasswordResetStartRes\";\nimport { UserPasswordResetCompleteRes } from \"./schemas/UserPasswordResetCompleteRes\";\n\nimport jsonwebtoken from \"jsonwebtoken\";\nimport { GenericAuthsmsOptions } from \"./genericAuthPluginOptions\";\n\nexport function getJtwTokenPlugin(secret: string, rolePermissions?: { [role: string]: string[] }, passwordPolicy?: RegExp, tokenTTL?: number) {\n if (passwordPolicy == undefined) {\n passwordPolicy = /.{1,}$/;\n }\n if (rolePermissions == undefined) {\n rolePermissions = {};\n }\n if (rolePermissions[\"user\"] == null) {\n rolePermissions[\"user\"] = [];\n }\n if (!rolePermissions[\"user\"].includes(\"authenticated\")) rolePermissions[\"user\"].push(\"authenticated\");\n\n return jwtAuthPlugin({\n secret,\n getUser: (tokenData: any) => {\n return new Promise<FlinkAuthUser>((res) => {\n res({\n username: tokenData.username,\n _id: tokenData._id,\n });\n });\n },\n passwordPolicy,\n rolePermissions,\n tokenTTL,\n });\n}\n\nexport async function createUser(\n repo: FlinkRepo<any, User>,\n auth: JwtAuthPlugin,\n username: string,\n password: string,\n authentificationMethod: \"password\" | \"sms\" | \"bankid\",\n roles: string[],\n profile: UserProfile,\n createPasswordHashAndSaltMethod?: {\n (password: string): Promise<{ hash: string; salt: string } | null>;\n },\n onUserCreated?: {\n (user: User): Promise<void>;\n },\n personalNumber?: string\n): Promise<UserCreateRes> {\n if (!roles.includes(\"user\")) roles.push(\"user\");\n\n const existingUser = await repo.getOne({ username: username.toLowerCase() });\n if (existingUser != null) {\n return {\n status: \"userExists\",\n };\n }\n let userData: Omit<User, \"_id\"> = {\n username: username.toLowerCase(),\n roles,\n profile,\n authentificationMethod,\n pushNotificationTokens: [],\n };\n\n if (personalNumber) {\n userData.personalNumber = personalNumber;\n }\n\n if (authentificationMethod == \"bankid\") {\n if (!personalNumber) {\n log.warn(\"BankID login requested but no personal number found for user\");\n return { status: \"error\" };\n }\n }\n\n if (authentificationMethod == \"password\") {\n let passwordAndSalt = null;\n if (createPasswordHashAndSaltMethod != null) {\n passwordAndSalt = await createPasswordHashAndSaltMethod(password);\n } else {\n passwordAndSalt = await auth.createPasswordHashAndSalt(password);\n }\n\n if (passwordAndSalt == null) {\n return {\n status: \"passwordError\",\n };\n }\n userData.password = passwordAndSalt.hash;\n userData.salt = passwordAndSalt.salt;\n }\n\n const user = await repo.create(userData);\n\n if (onUserCreated) {\n await onUserCreated(user);\n }\n\n const token = await auth.createToken({ username: username.toLowerCase(), _id: user._id }, roles);\n\n if (user.authentificationMethod == \"sms\") {\n return {\n status: \"success\",\n };\n }\n\n return {\n status: \"success\",\n user: {\n _id: user._id,\n token: token,\n username: username.toLowerCase(),\n },\n };\n}\n\nexport async function loginByToken(repo: FlinkRepo<any, User>, auth: JwtAuthPlugin, token: string, code: string, jwtSecret: string): Promise<UserLoginRes> {\n let payload: { type: string; userId: string };\n try {\n payload = jsonwebtoken.verify(token, jwtSecret + \":\" + code) as { type: string; userId: string };\n } catch (ex) {\n return { status: \"failed\" };\n }\n\n if (payload.type != \"smsLogin\") {\n return { status: \"failed\" };\n }\n\n const user = await repo.getById(payload.userId);\n if (user == null) {\n return { status: \"failed\" };\n }\n\n const authToken = await auth.createToken({ username: user.username.toLowerCase(), _id: user._id }, user.roles);\n\n return {\n status: \"success\",\n user: {\n _id: user._id,\n username: user.username,\n token: authToken,\n profile: user.profile,\n },\n };\n}\n\nexport async function loginUser(\n repo: FlinkRepo<any, User>,\n auth: JwtAuthPlugin,\n username: string,\n password: string | undefined,\n validatePasswordMethod?: {\n (password: string, hash: string, salt: string): Promise<boolean>;\n },\n smsOptions?: GenericAuthsmsOptions,\n onSuccessfulLogin?: {\n (user: User, req?: FlinkRequest): Promise<void>;\n },\n req?: FlinkRequest\n): Promise<UserLoginRes> {\n const user = await repo.getOne({ username: username.toLowerCase() });\n if (user == null) {\n return { status: \"failed\" };\n }\n\n let valid: boolean = false;\n\n if (user.authentificationMethod == \"password\") {\n if (password == null) password = \"\";\n\n if (validatePasswordMethod) {\n valid = await validatePasswordMethod(password, <string>user.password, <string>user.salt);\n\n //If not valid, try to use default auth\n if (!valid) {\n try {\n valid = await auth.validatePassword(password, <string>user.password, <string>user.salt);\n } catch (ex) {}\n }\n } else {\n valid = await auth.validatePassword(password, <string>user.password, <string>user.salt);\n }\n }\n if (user.authentificationMethod == \"sms\") {\n if (!smsOptions) throw \"SMS options must be specified to use SMS login\";\n let code = smsOptions.codeType == \"numeric\" ? generate(smsOptions.codeLength) : generateString(smsOptions.codeLength);\n smsOptions.smsClient.send({\n to: [user.username],\n from: smsOptions.smsFrom,\n message: smsOptions.smsMessage.replace(\"{{code}}\", code),\n });\n\n const payload = {\n type: \"smsLogin\",\n userId: user._id,\n };\n\n const secret = smsOptions.jwtToken + \":\" + code;\n\n const options: jsonwebtoken.SignOptions = {\n expiresIn: \"1h\",\n };\n\n const token = jsonwebtoken.sign(payload, secret, options);\n\n return {\n status: \"success\",\n validationToken: token,\n };\n }\n if (user.authentificationMethod == \"bankid\") {\n if (!user.personalNumber) {\n log.warn(\"BankID login requested but no personal number found for user\");\n return { status: \"failed\" };\n }\n\n log.warn(\"BankID login required to be handled in other way, i.e. using flink bankid plugin\");\n return { status: \"failed\" };\n }\n\n if (valid) {\n const token = await auth.createToken({ username: username.toLowerCase(), _id: user._id }, user.roles);\n\n if (onSuccessfulLogin) {\n await onSuccessfulLogin(user, req);\n }\n\n return {\n status: \"success\",\n user: {\n _id: user._id,\n username: user.username,\n token,\n profile: user.profile,\n },\n };\n } else {\n return { status: \"failed\" };\n }\n}\n\nexport async function changePassword(\n repo: FlinkRepo<any, User>,\n auth: JwtAuthPlugin,\n userId: string,\n newPassword: string,\n createPasswordHashAndSaltMethod?: {\n (password: string): Promise<{ hash: string; salt: string } | null>;\n }\n): Promise<UserPasswordChangeRes> {\n const user = await repo.getById(userId);\n if (user == null) {\n return { status: \"failed\" };\n }\n\n if (user.authentificationMethod != \"password\") {\n return { status: \"failed\" };\n }\n\n let passwordAndSalt = null;\n\n if (createPasswordHashAndSaltMethod == null) {\n passwordAndSalt = await auth.createPasswordHashAndSalt(newPassword);\n } else {\n passwordAndSalt = await createPasswordHashAndSaltMethod(newPassword);\n }\n\n if (passwordAndSalt == null) {\n return {\n status: \"passwordError\",\n };\n }\n\n await repo.updateById(userId, {\n password: passwordAndSalt.hash,\n salt: passwordAndSalt.salt,\n });\n\n return { status: \"success\" };\n}\n\nexport async function passwordResetStart(\n repo: FlinkRepo<any, User>,\n auth: JwtAuthPlugin,\n jwtSecret: string,\n username: string,\n numberOfDigits?: number,\n lifeTime?: string,\n passwordResetReusableTokens: boolean = true\n): Promise<UserPasswordResetStartRes> {\n const user = await repo.getOne({ username: username.toLowerCase() });\n\n const fakepayload = {\n type: \"passwordReset\",\n username: username.toLocaleLowerCase(),\n };\n const fakeToken = jsonwebtoken.sign(fakepayload, \"fake_payload\", { expiresIn: lifeTime });\n\n if (user == null) {\n return { status: \"userNotFound\", passwordResetToken: fakeToken };\n }\n\n if (user.authentificationMethod != \"password\") {\n return { status: \"userNotFound\", passwordResetToken: fakeToken };\n }\n\n if (numberOfDigits == null) numberOfDigits = 6;\n if (lifeTime == null) lifeTime = \"1h\";\n\n const payload = {\n type: \"passwordReset\",\n username: username.toLocaleLowerCase(),\n };\n const code = generate(numberOfDigits);\n\n const pwdResetStartedAt = new Date().toISOString();\n let secret;\n if (passwordResetReusableTokens) {\n secret = jwtSecret + \":\" + code;\n } else {\n secret = jwtSecret + \":\" + code + \":\" + pwdResetStartedAt;\n await repo.updateById(user._id, { pwdResetStartedAt });\n }\n\n const options: jsonwebtoken.SignOptions = {\n expiresIn: lifeTime,\n };\n\n const token = jsonwebtoken.sign(payload, secret, options);\n\n return {\n status: \"success\",\n passwordResetToken: token,\n code,\n profile: user.profile,\n };\n}\n\nexport async function passwordResetComplete(\n repo: FlinkRepo<any, User>,\n auth: JwtAuthPlugin,\n jwtSecret: string,\n passwordResetToken: string,\n code: string,\n newPassword: string,\n createPasswordHashAndSaltMethod?: {\n (password: string): Promise<{ hash: string; salt: string } | null>;\n },\n passwordResetReusableTokens: boolean = true\n): Promise<UserPasswordResetCompleteRes> {\n const payload = <{ username: string }>jsonwebtoken.decode(passwordResetToken);\n\n if (!payload || !payload.username) return { status: \"invalidCode\" };\n\n const user = await repo.getOne({ username: payload.username });\n\n if (!user || user == null || user.authentificationMethod != \"password\") {\n return { status: \"userNotFound\" };\n }\n\n let secret;\n if (passwordResetReusableTokens === true) {\n secret = jwtSecret + \":\" + code;\n } else {\n if (!user.pwdResetStartedAt || user.pwdResetStartedAt === null) {\n return { status: \"userNotFound\" };\n }\n secret = jwtSecret + \":\" + code + \":\" + user.pwdResetStartedAt;\n }\n\n try {\n jsonwebtoken.verify(passwordResetToken, secret);\n } catch (ex) {\n return { status: \"invalidCode\" };\n }\n\n let passwordAndSalt = null;\n\n if (createPasswordHashAndSaltMethod == null) {\n passwordAndSalt = await auth.createPasswordHashAndSalt(newPassword);\n } else {\n passwordAndSalt = await createPasswordHashAndSaltMethod(newPassword);\n }\n\n if (passwordAndSalt == null) {\n return {\n status: \"passwordError\",\n };\n }\n\n await repo.updateById(user._id, {\n password: passwordAndSalt.hash,\n salt: passwordAndSalt.salt,\n pwdResetStartedAt: null,\n });\n\n return { status: \"success\", user };\n}\n\nfunction generate(n: number): string {\n var add = 1,\n max = 12 - add;\n\n if (n > max) {\n return generate(max) + generate(n - max);\n }\n\n max = Math.pow(10, n + add);\n var min = max / 10;\n var number = Math.floor(Math.random() * (max - min + 1)) + min;\n\n return (\"\" + number).substring(add);\n}\n\nfunction generateString(length: number) {\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n let result = \" \";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n}\n"],"names":["changePassword","createUser","getJtwTokenPlugin","loginByToken","loginUser","passwordResetComplete","passwordResetStart","secret","rolePermissions","passwordPolicy","tokenTTL","undefined","includes","push","jwtAuthPlugin","getUser","tokenData","Promise","res","username","_id","repo","auth","password","authentificationMethod","roles","profile","createPasswordHashAndSaltMethod","onUserCreated","personalNumber","existingUser","getOne","toLowerCase","status","userData","pushNotificationTokens","log","warn","passwordAndSalt","createPasswordHashAndSalt","hash","salt","user","create","token","createToken","code","jwtSecret","payload","jsonwebtoken","verify","ex","type","getById","userId","authToken","validatePasswordMethod","smsOptions","onSuccessfulLogin","req","valid","validatePassword","codeType","generate","codeLength","generateString","smsClient","send","to","from","smsFrom","message","smsMessage","replace","jwtToken","options","expiresIn","sign","validationToken","newPassword","updateById","numberOfDigits","lifeTime","passwordResetReusableTokens","fakepayload","toLocaleLowerCase","fakeToken","passwordResetToken","pwdResetStartedAt","Date","toISOString","decode","n","add","max","Math","pow","min","number","floor","random","substring","length","characters","result","charactersLength","i","charAt"],"mappings":"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"}
@@ -28,7 +28,7 @@ const PutManagementUserPasswordByUserid = async ({ ctx, req, origin })=>{
28
28
  if (passwordAndSalt == null) {
29
29
  return (0, _flink.badRequest)("Password not accepted");
30
30
  }
31
- await repo.updateOne(req.params.userid, {
31
+ await repo.updateById(req.params.userid, {
32
32
  password: passwordAndSalt.hash,
33
33
  salt: passwordAndSalt.salt
34
34
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/Management/PutUserPasswordByUserid.ts"],"sourcesContent":["import { badRequest, FlinkContext, Handler, notFound } from \"@flink-app/flink\";\nimport { JwtAuthPlugin } from \"@flink-app/jwt-auth-plugin\";\nimport { PutManagementUserPasswordByUseridReq } from \"../../schemas/Management/PutUserPasswordByUseridReq\";\nimport { PutManagementUserPasswordByUseridRes } from \"../../schemas/Management/PutUserPasswordByUseridRes\";\n\nconst PutManagementUserPasswordByUserid: Handler<FlinkContext, PutManagementUserPasswordByUseridReq, PutManagementUserPasswordByUseridRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = await repo.getById(req.params.userid);\n if (user == null) {\n return notFound();\n }\n\n const resp = await ctx.plugins.genericAuthPlugin.changePassword(repo, <JwtAuthPlugin>ctx.auth, user._id, req.body.password);\n\n const auth = <JwtAuthPlugin>ctx.auth;\n\n const createPasswordHashAndSaltMethod = ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod;\n let passwordAndSalt = null;\n\n if (createPasswordHashAndSaltMethod == null) {\n passwordAndSalt = await auth.createPasswordHashAndSalt(req.body.password);\n } else {\n passwordAndSalt = await createPasswordHashAndSaltMethod(req.body.password);\n }\n\n if (passwordAndSalt == null) {\n return badRequest(\"Password not accepted\");\n }\n\n await repo.updateOne(req.params.userid, {\n password: passwordAndSalt.hash,\n salt: passwordAndSalt.salt,\n });\n\n return {\n data: {},\n status: 200,\n };\n};\nexport default PutManagementUserPasswordByUserid;\n"],"names":["PutManagementUserPasswordByUserid","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","params","userid","notFound","resp","genericAuthPlugin","changePassword","auth","_id","body","password","createPasswordHashAndSaltMethod","passwordAndSalt","createPasswordHashAndSalt","badRequest","updateOne","hash","salt","data","status"],"mappings":";;;;+BA6CA;;;eAAA;;;uBA7C4D;AAK5D,MAAMA,oCAAuI,OAAO,EAChJC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;IACG,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAO,MAAMJ,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IACjD,IAAIH,QAAQ,MAAM;QACd,OAAOI,IAAAA,eAAQ;IACnB;IAEA,MAAMC,OAAO,MAAMb,IAAIM,OAAO,CAACQ,iBAAiB,CAACC,cAAc,CAACX,MAAqBJ,IAAIgB,IAAI,EAAER,KAAKS,GAAG,EAAEhB,IAAIiB,IAAI,CAACC,QAAQ;IAE1H,MAAMH,OAAsBhB,IAAIgB,IAAI;IAEpC,MAAMI,kCAAkCpB,IAAIM,OAAO,CAACQ,iBAAiB,CAACM,+BAA+B;IACrG,IAAIC,kBAAkB;IAEtB,IAAID,mCAAmC,MAAM;QACzCC,kBAAkB,MAAML,KAAKM,yBAAyB,CAACrB,IAAIiB,IAAI,CAACC,QAAQ;IAC5E,OAAO;QACHE,kBAAkB,MAAMD,gCAAgCnB,IAAIiB,IAAI,CAACC,QAAQ;IAC7E;IAEA,IAAIE,mBAAmB,MAAM;QACzB,OAAOE,IAAAA,iBAAU,EAAC;IACtB;IAEA,MAAMnB,KAAKoB,SAAS,CAACvB,IAAIS,MAAM,CAACC,MAAM,EAAE;QACpCQ,UAAUE,gBAAgBI,IAAI;QAC9BC,MAAML,gBAAgBK,IAAI;IAC9B;IAEA,OAAO;QACHC,MAAM,CAAC;QACPC,QAAQ;IACZ;AACJ;MACA,WAAe7B"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/Management/PutUserPasswordByUserid.ts"],"sourcesContent":["import { badRequest, FlinkContext, Handler, notFound } from \"@flink-app/flink\";\nimport { JwtAuthPlugin } from \"@flink-app/jwt-auth-plugin\";\nimport { PutManagementUserPasswordByUseridReq } from \"../../schemas/Management/PutUserPasswordByUseridReq\";\nimport { PutManagementUserPasswordByUseridRes } from \"../../schemas/Management/PutUserPasswordByUseridRes\";\n\nconst PutManagementUserPasswordByUserid: Handler<FlinkContext, PutManagementUserPasswordByUseridReq, PutManagementUserPasswordByUseridRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = await repo.getById(req.params.userid);\n if (user == null) {\n return notFound();\n }\n\n const resp = await ctx.plugins.genericAuthPlugin.changePassword(repo, <JwtAuthPlugin>ctx.auth, user._id, req.body.password);\n\n const auth = <JwtAuthPlugin>ctx.auth;\n\n const createPasswordHashAndSaltMethod = ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod;\n let passwordAndSalt = null;\n\n if (createPasswordHashAndSaltMethod == null) {\n passwordAndSalt = await auth.createPasswordHashAndSalt(req.body.password);\n } else {\n passwordAndSalt = await createPasswordHashAndSaltMethod(req.body.password);\n }\n\n if (passwordAndSalt == null) {\n return badRequest(\"Password not accepted\");\n }\n\n await repo.updateById(req.params.userid, {\n password: passwordAndSalt.hash,\n salt: passwordAndSalt.salt,\n });\n\n return {\n data: {},\n status: 200,\n };\n};\nexport default PutManagementUserPasswordByUserid;\n"],"names":["PutManagementUserPasswordByUserid","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","params","userid","notFound","resp","genericAuthPlugin","changePassword","auth","_id","body","password","createPasswordHashAndSaltMethod","passwordAndSalt","createPasswordHashAndSalt","badRequest","updateById","hash","salt","data","status"],"mappings":";;;;+BA6CA;;;eAAA;;;uBA7C4D;AAK5D,MAAMA,oCAAuI,OAAO,EAChJC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;IACG,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAO,MAAMJ,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IACjD,IAAIH,QAAQ,MAAM;QACd,OAAOI,IAAAA,eAAQ;IACnB;IAEA,MAAMC,OAAO,MAAMb,IAAIM,OAAO,CAACQ,iBAAiB,CAACC,cAAc,CAACX,MAAqBJ,IAAIgB,IAAI,EAAER,KAAKS,GAAG,EAAEhB,IAAIiB,IAAI,CAACC,QAAQ;IAE1H,MAAMH,OAAsBhB,IAAIgB,IAAI;IAEpC,MAAMI,kCAAkCpB,IAAIM,OAAO,CAACQ,iBAAiB,CAACM,+BAA+B;IACrG,IAAIC,kBAAkB;IAEtB,IAAID,mCAAmC,MAAM;QACzCC,kBAAkB,MAAML,KAAKM,yBAAyB,CAACrB,IAAIiB,IAAI,CAACC,QAAQ;IAC5E,OAAO;QACHE,kBAAkB,MAAMD,gCAAgCnB,IAAIiB,IAAI,CAACC,QAAQ;IAC7E;IAEA,IAAIE,mBAAmB,MAAM;QACzB,OAAOE,IAAAA,iBAAU,EAAC;IACtB;IAEA,MAAMnB,KAAKoB,UAAU,CAACvB,IAAIS,MAAM,CAACC,MAAM,EAAE;QACrCQ,UAAUE,gBAAgBI,IAAI;QAC9BC,MAAML,gBAAgBK,IAAI;IAC9B;IAEA,OAAO;QACHC,MAAM,CAAC;QACPC,QAAQ;IACZ;AACJ;MACA,WAAe7B"}
@@ -16,7 +16,7 @@ const PutManagementUserProfileByUserid = async ({ ctx, req, origin })=>{
16
16
  if (user == null) {
17
17
  return (0, _flink.notFound)();
18
18
  }
19
- await repo.updateOne(user._id, {
19
+ await repo.updateById(user._id, {
20
20
  profile: req.body
21
21
  });
22
22
  const updatedUser = await repo.getById(req.params.userid);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/Management/PutUserProfileByUserid.ts"],"sourcesContent":["import { FlinkContext, Handler, HttpMethod, notFound, RouteProps } from \"@flink-app/flink\";\nimport { PutManagementUserProfileByUseridReq } from \"../../schemas/Management/PutUserProfileByUseridReq\";\nimport { PutManagementUserProfileByUseridRes } from \"../../schemas/Management/PutUserProfileByUseridRes\";\n\nconst PutManagementUserProfileByUserid: Handler<FlinkContext, PutManagementUserProfileByUseridReq, PutManagementUserProfileByUseridRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = await repo.getById(req.params.userid);\n if (user == null) {\n return notFound();\n }\n\n await repo.updateOne(user._id, { profile: req.body });\n\n const updatedUser = await repo.getById(req.params.userid);\n\n if ((<any>ctx.plugins)[pluginName].onUserUpdated) {\n await (<any>ctx.plugins)[pluginName].onUserUpdated(updatedUser, req.body);\n }\n\n return {\n data: {},\n status: 200,\n };\n};\nexport default PutManagementUserProfileByUserid;\n"],"names":["PutManagementUserProfileByUserid","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","params","userid","notFound","updateOne","_id","profile","body","updatedUser","onUserUpdated","data","status"],"mappings":";;;;+BA8BA;;;eAAA;;;uBA9BwE;AAIxE,MAAMA,mCAAoI,OAAO,EAC7IC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;IACG,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAO,MAAMJ,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IACjD,IAAIH,QAAQ,MAAM;QACd,OAAOI,IAAAA,eAAQ;IACnB;IAEA,MAAMR,KAAKS,SAAS,CAACL,KAAKM,GAAG,EAAE;QAAEC,SAASd,IAAIe,IAAI;IAAC;IAEnD,MAAMC,cAAc,MAAMb,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IAExD,IAAI,AAAMX,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACe,aAAa,EAAE;QAC9C,MAAM,AAAMlB,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACe,aAAa,CAACD,aAAahB,IAAIe,IAAI;IAC5E;IAEA,OAAO;QACHG,MAAM,CAAC;QACPC,QAAQ;IACZ;AACJ;MACA,WAAerB"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/Management/PutUserProfileByUserid.ts"],"sourcesContent":["import { FlinkContext, Handler, HttpMethod, notFound, RouteProps } from \"@flink-app/flink\";\nimport { PutManagementUserProfileByUseridReq } from \"../../schemas/Management/PutUserProfileByUseridReq\";\nimport { PutManagementUserProfileByUseridRes } from \"../../schemas/Management/PutUserProfileByUseridRes\";\n\nconst PutManagementUserProfileByUserid: Handler<FlinkContext, PutManagementUserProfileByUseridReq, PutManagementUserProfileByUseridRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = await repo.getById(req.params.userid);\n if (user == null) {\n return notFound();\n }\n\n await repo.updateById(user._id, { profile: req.body });\n\n const updatedUser = await repo.getById(req.params.userid);\n\n if ((<any>ctx.plugins)[pluginName].onUserUpdated) {\n await (<any>ctx.plugins)[pluginName].onUserUpdated(updatedUser, req.body);\n }\n\n return {\n data: {},\n status: 200,\n };\n};\nexport default PutManagementUserProfileByUserid;\n"],"names":["PutManagementUserProfileByUserid","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","params","userid","notFound","updateById","_id","profile","body","updatedUser","onUserUpdated","data","status"],"mappings":";;;;+BA8BA;;;eAAA;;;uBA9BwE;AAIxE,MAAMA,mCAAoI,OAAO,EAC7IC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;IACG,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAO,MAAMJ,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IACjD,IAAIH,QAAQ,MAAM;QACd,OAAOI,IAAAA,eAAQ;IACnB;IAEA,MAAMR,KAAKS,UAAU,CAACL,KAAKM,GAAG,EAAE;QAAEC,SAASd,IAAIe,IAAI;IAAC;IAEpD,MAAMC,cAAc,MAAMb,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IAExD,IAAI,AAAMX,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACe,aAAa,EAAE;QAC9C,MAAM,AAAMlB,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACe,aAAa,CAACD,aAAahB,IAAIe,IAAI;IAC5E;IAEA,OAAO;QACHG,MAAM,CAAC;QACPC,QAAQ;IACZ;AACJ;MACA,WAAerB"}
@@ -46,7 +46,7 @@ const PutManagementUserProfileByUserid = async ({ ctx, req, origin })=>{
46
46
  }
47
47
  if (user.profile == null) user.profile = {};
48
48
  const profile = _object_spread({}, user.profile, req.body);
49
- await repo.updateOne(user._id, {
49
+ await repo.updateById(user._id, {
50
50
  profile: profile
51
51
  });
52
52
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/Management/PutUserProfileByUseridAppend.ts"],"sourcesContent":["import { FlinkContext, Handler, HttpMethod, notFound, RouteProps } from \"@flink-app/flink\";\nimport { PutManagementUserProfileByUseridReq } from \"../../schemas/Management/PutUserProfileByUseridReq\";\nimport { PutManagementUserProfileByUseridRes } from \"../../schemas/Management/PutUserProfileByUseridRes\";\n\nconst PutManagementUserProfileByUserid: Handler<FlinkContext, PutManagementUserProfileByUseridReq, PutManagementUserProfileByUseridRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = await repo.getById(req.params.userid);\n if (user == null) {\n return notFound();\n }\n\n if (user.profile == null) user.profile = {};\n\n const profile = {\n ...user.profile,\n ...req.body,\n };\n\n await repo.updateOne(user._id, { profile: profile });\n\n return {\n data: {},\n status: 200,\n };\n};\nexport default PutManagementUserProfileByUserid;\n"],"names":["PutManagementUserProfileByUserid","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","params","userid","notFound","profile","body","updateOne","_id","data","status"],"mappings":";;;;+BA+BA;;;eAAA;;;uBA/BwE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIxE,MAAMA,mCAAoI,OAAO,EAC7IC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;IACG,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAO,MAAMJ,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IACjD,IAAIH,QAAQ,MAAM;QACd,OAAOI,IAAAA,eAAQ;IACnB;IAEA,IAAIJ,KAAKK,OAAO,IAAI,MAAML,KAAKK,OAAO,GAAG,CAAC;IAE1C,MAAMA,UAAU,mBACTL,KAAKK,OAAO,EACZZ,IAAIa,IAAI;IAGf,MAAMV,KAAKW,SAAS,CAACP,KAAKQ,GAAG,EAAE;QAAEH,SAASA;IAAQ;IAElD,OAAO;QACHI,MAAM,CAAC;QACPC,QAAQ;IACZ;AACJ;MACA,WAAenB"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/Management/PutUserProfileByUseridAppend.ts"],"sourcesContent":["import { FlinkContext, Handler, HttpMethod, notFound, RouteProps } from \"@flink-app/flink\";\nimport { PutManagementUserProfileByUseridReq } from \"../../schemas/Management/PutUserProfileByUseridReq\";\nimport { PutManagementUserProfileByUseridRes } from \"../../schemas/Management/PutUserProfileByUseridRes\";\n\nconst PutManagementUserProfileByUserid: Handler<FlinkContext, PutManagementUserProfileByUseridReq, PutManagementUserProfileByUseridRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = await repo.getById(req.params.userid);\n if (user == null) {\n return notFound();\n }\n\n if (user.profile == null) user.profile = {};\n\n const profile = {\n ...user.profile,\n ...req.body,\n };\n\n await repo.updateById(user._id, { profile: profile });\n\n return {\n data: {},\n status: 200,\n };\n};\nexport default PutManagementUserProfileByUserid;\n"],"names":["PutManagementUserProfileByUserid","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","params","userid","notFound","profile","body","updateById","_id","data","status"],"mappings":";;;;+BA+BA;;;eAAA;;;uBA/BwE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIxE,MAAMA,mCAAoI,OAAO,EAC7IC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;IACG,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAO,MAAMJ,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IACjD,IAAIH,QAAQ,MAAM;QACd,OAAOI,IAAAA,eAAQ;IACnB;IAEA,IAAIJ,KAAKK,OAAO,IAAI,MAAML,KAAKK,OAAO,GAAG,CAAC;IAE1C,MAAMA,UAAU,mBACTL,KAAKK,OAAO,EACZZ,IAAIa,IAAI;IAGf,MAAMV,KAAKW,UAAU,CAACP,KAAKQ,GAAG,EAAE;QAAEH,SAASA;IAAQ;IAEnD,OAAO;QACHI,MAAM,CAAC;QACPC,QAAQ;IACZ;AACJ;MACA,WAAenB"}
@@ -16,7 +16,7 @@ const PutManagementUserRolesByUserid = async ({ ctx, req, origin })=>{
16
16
  if (user == null) {
17
17
  return (0, _flink.notFound)();
18
18
  }
19
- await repo.updateOne(user._id, {
19
+ await repo.updateById(user._id, {
20
20
  roles: req.body.roles
21
21
  });
22
22
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/Management/PutUserRolesByUserid.ts"],"sourcesContent":["import { FlinkContext, Handler, HttpMethod, notFound, RouteProps } from \"@flink-app/flink\";\nimport { PutManagementUserRolesByUseridReq } from \"../../schemas/Management/PutUserRolesByUseridReq\";\nimport { PutManagementUserRolesByUseridRes } from \"../../schemas/Management/PutUserRolesByUseridRes\";\n\nconst PutManagementUserRolesByUserid: Handler<FlinkContext, PutManagementUserRolesByUseridReq, PutManagementUserRolesByUseridRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = await repo.getById(req.params.userid);\n if (user == null) {\n return notFound();\n }\n\n await repo.updateOne(user._id, { roles: req.body.roles });\n\n return {\n data: {},\n status: 200,\n };\n};\nexport default PutManagementUserRolesByUserid;\n"],"names":["PutManagementUserRolesByUserid","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","params","userid","notFound","updateOne","_id","roles","body","data","status"],"mappings":";;;;+BAwBA;;;eAAA;;;uBAxBwE;AAIxE,MAAMA,iCAA8H,OAAO,EACvIC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;IACG,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAO,MAAMJ,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IACjD,IAAIH,QAAQ,MAAM;QACd,OAAOI,IAAAA,eAAQ;IACnB;IAEA,MAAMR,KAAKS,SAAS,CAACL,KAAKM,GAAG,EAAE;QAAEC,OAAOd,IAAIe,IAAI,CAACD,KAAK;IAAC;IAEvD,OAAO;QACHE,MAAM,CAAC;QACPC,QAAQ;IACZ;AACJ;MACA,WAAenB"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/Management/PutUserRolesByUserid.ts"],"sourcesContent":["import { FlinkContext, Handler, HttpMethod, notFound, RouteProps } from \"@flink-app/flink\";\nimport { PutManagementUserRolesByUseridReq } from \"../../schemas/Management/PutUserRolesByUseridReq\";\nimport { PutManagementUserRolesByUseridRes } from \"../../schemas/Management/PutUserRolesByUseridRes\";\n\nconst PutManagementUserRolesByUserid: Handler<FlinkContext, PutManagementUserRolesByUseridReq, PutManagementUserRolesByUseridRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = await repo.getById(req.params.userid);\n if (user == null) {\n return notFound();\n }\n\n await repo.updateById(user._id, { roles: req.body.roles });\n\n return {\n data: {},\n status: 200,\n };\n};\nexport default PutManagementUserRolesByUserid;\n"],"names":["PutManagementUserRolesByUserid","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","params","userid","notFound","updateById","_id","roles","body","data","status"],"mappings":";;;;+BAwBA;;;eAAA;;;uBAxBwE;AAIxE,MAAMA,iCAA8H,OAAO,EACvIC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;IACG,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAO,MAAMJ,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IACjD,IAAIH,QAAQ,MAAM;QACd,OAAOI,IAAAA,eAAQ;IACnB;IAEA,MAAMR,KAAKS,UAAU,CAACL,KAAKM,GAAG,EAAE;QAAEC,OAAOd,IAAIe,IAAI,CAACD,KAAK;IAAC;IAExD,OAAO;QACHE,MAAM,CAAC;QACPC,QAAQ;IACZ;AACJ;MACA,WAAenB"}
@@ -24,7 +24,7 @@ const PutManagementUserUsernameByUserid = async ({ ctx, req, origin })=>{
24
24
  return (0, _flink.conflict)("Username already taken");
25
25
  }
26
26
  }
27
- await repo.updateOne(user._id, {
27
+ await repo.updateById(user._id, {
28
28
  username: req.body.username.toLowerCase()
29
29
  });
30
30
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/Management/PutUserUsernameByUserid.ts"],"sourcesContent":["import { conflict, FlinkContext, Handler, HttpMethod, notFound, RouteProps } from \"@flink-app/flink\";\nimport { PutManagementUserUsernameByUseridReq } from \"../../schemas/Management/PutUserUsernameByUseridReq\";\nimport { PutManagementUserUsernameByUseridRes } from \"../../schemas/Management/PutUserUsernameByUseridRes\";\n\nconst PutManagementUserUsernameByUserid: Handler<FlinkContext, PutManagementUserUsernameByUseridReq, PutManagementUserUsernameByUseridRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = await repo.getById(req.params.userid);\n if (user == null) {\n return notFound();\n }\n\n const existingUser = await repo.getOne({\n username: req.body.username.toLowerCase(),\n });\n if (existingUser != null) {\n if (existingUser._id + \"\" != user._id + \"\") {\n return conflict(\"Username already taken\");\n }\n }\n\n await repo.updateOne(user._id, { username: req.body.username.toLowerCase() });\n\n return {\n data: {},\n status: 200,\n };\n};\nexport default PutManagementUserUsernameByUserid;\n"],"names":["PutManagementUserUsernameByUserid","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","params","userid","notFound","existingUser","getOne","username","body","toLowerCase","_id","conflict","updateOne","data","status"],"mappings":";;;;+BAiCA;;;eAAA;;;uBAjCkF;AAIlF,MAAMA,oCAAuI,OAAO,EAChJC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;IACG,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAO,MAAMJ,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IACjD,IAAIH,QAAQ,MAAM;QACd,OAAOI,IAAAA,eAAQ;IACnB;IAEA,MAAMC,eAAe,MAAMT,KAAKU,MAAM,CAAC;QACnCC,UAAUd,IAAIe,IAAI,CAACD,QAAQ,CAACE,WAAW;IAC3C;IACA,IAAIJ,gBAAgB,MAAM;QACtB,IAAIA,aAAaK,GAAG,GAAG,MAAMV,KAAKU,GAAG,GAAG,IAAI;YACxC,OAAOC,IAAAA,eAAQ,EAAC;QACpB;IACJ;IAEA,MAAMf,KAAKgB,SAAS,CAACZ,KAAKU,GAAG,EAAE;QAAEH,UAAUd,IAAIe,IAAI,CAACD,QAAQ,CAACE,WAAW;IAAG;IAE3E,OAAO;QACHI,MAAM,CAAC;QACPC,QAAQ;IACZ;AACJ;MACA,WAAevB"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/Management/PutUserUsernameByUserid.ts"],"sourcesContent":["import { conflict, FlinkContext, Handler, HttpMethod, notFound, RouteProps } from \"@flink-app/flink\";\nimport { PutManagementUserUsernameByUseridReq } from \"../../schemas/Management/PutUserUsernameByUseridReq\";\nimport { PutManagementUserUsernameByUseridRes } from \"../../schemas/Management/PutUserUsernameByUseridRes\";\n\nconst PutManagementUserUsernameByUserid: Handler<FlinkContext, PutManagementUserUsernameByUseridReq, PutManagementUserUsernameByUseridRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = await repo.getById(req.params.userid);\n if (user == null) {\n return notFound();\n }\n\n const existingUser = await repo.getOne({\n username: req.body.username.toLowerCase(),\n });\n if (existingUser != null) {\n if (existingUser._id + \"\" != user._id + \"\") {\n return conflict(\"Username already taken\");\n }\n }\n\n await repo.updateById(user._id, { username: req.body.username.toLowerCase() });\n\n return {\n data: {},\n status: 200,\n };\n};\nexport default PutManagementUserUsernameByUserid;\n"],"names":["PutManagementUserUsernameByUserid","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","params","userid","notFound","existingUser","getOne","username","body","toLowerCase","_id","conflict","updateById","data","status"],"mappings":";;;;+BAiCA;;;eAAA;;;uBAjCkF;AAIlF,MAAMA,oCAAuI,OAAO,EAChJC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;IACG,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAO,MAAMJ,KAAKK,OAAO,CAACR,IAAIS,MAAM,CAACC,MAAM;IACjD,IAAIH,QAAQ,MAAM;QACd,OAAOI,IAAAA,eAAQ;IACnB;IAEA,MAAMC,eAAe,MAAMT,KAAKU,MAAM,CAAC;QACnCC,UAAUd,IAAIe,IAAI,CAACD,QAAQ,CAACE,WAAW;IAC3C;IACA,IAAIJ,gBAAgB,MAAM;QACtB,IAAIA,aAAaK,GAAG,GAAG,MAAMV,KAAKU,GAAG,GAAG,IAAI;YACxC,OAAOC,IAAAA,eAAQ,EAAC;QACpB;IACJ;IAEA,MAAMf,KAAKgB,UAAU,CAACZ,KAAKU,GAAG,EAAE;QAAEH,UAAUd,IAAIe,IAAI,CAACD,QAAQ,CAACE,WAAW;IAAG;IAE5E,OAAO;QACHI,MAAM,CAAC;QACPC,QAAQ;IACZ;AACJ;MACA,WAAevB"}
@@ -46,7 +46,7 @@ const putUserProfileHandler = async ({ ctx, req, origin })=>{
46
46
  return (0, _flink.notFound)();
47
47
  }
48
48
  const updatedProfile = _object_spread({}, user.profile, req.body);
49
- await repo.updateOne(userId, {
49
+ await repo.updateById(userId, {
50
50
  profile: updatedProfile
51
51
  });
52
52
  user = await repo.getById(userId);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/UserProfilePut.ts"],"sourcesContent":["import { FlinkContext, Handler, notFound } from \"@flink-app/flink\";\nimport { genericAuthContext } from \"../genericAuthContext\";\nimport { UserProfile } from \"../schemas/UserProfile\";\n\nconst putUserProfileHandler: Handler<FlinkContext<genericAuthContext>, UserProfile, UserProfile> = async ({ ctx, req, origin }) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n let userId = req.user._id;\n let user = await repo.getById(userId);\n if (user == null) {\n return notFound();\n }\n\n const updatedProfile = {\n ...user.profile,\n ...req.body,\n };\n\n await repo.updateOne(userId, { profile: updatedProfile });\n\n user = await repo.getById(userId);\n\n if ((<any>ctx.plugins)[pluginName].onUserUpdated) {\n await (<any>ctx.plugins)[pluginName].onUserUpdated(user, req.body);\n }\n\n return {\n data: user.profile,\n };\n};\n\nexport default putUserProfileHandler;\n"],"names":["putUserProfileHandler","ctx","req","origin","pluginName","repo","repos","plugins","repoName","userId","user","_id","getById","notFound","updatedProfile","profile","body","updateOne","onUserUpdated","data"],"mappings":";;;;+BAgCA;;;eAAA;;;uBAhCgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIhD,MAAMA,wBAA6F,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAEC,MAAM,EAAE;IAC1H,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,IAAIC,SAASP,IAAIQ,IAAI,CAACC,GAAG;IACzB,IAAID,OAAO,MAAML,KAAKO,OAAO,CAACH;IAC9B,IAAIC,QAAQ,MAAM;QACd,OAAOG,IAAAA,eAAQ;IACnB;IAEA,MAAMC,iBAAiB,mBAChBJ,KAAKK,OAAO,EACZb,IAAIc,IAAI;IAGf,MAAMX,KAAKY,SAAS,CAACR,QAAQ;QAAEM,SAASD;IAAe;IAEvDJ,OAAO,MAAML,KAAKO,OAAO,CAACH;IAE1B,IAAI,AAAMR,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACc,aAAa,EAAE;QAC9C,MAAM,AAAMjB,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACc,aAAa,CAACR,MAAMR,IAAIc,IAAI;IACrE;IAEA,OAAO;QACHG,MAAMT,KAAKK,OAAO;IACtB;AACJ;MAEA,WAAef"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/UserProfilePut.ts"],"sourcesContent":["import { FlinkContext, Handler, notFound } from \"@flink-app/flink\";\nimport { genericAuthContext } from \"../genericAuthContext\";\nimport { UserProfile } from \"../schemas/UserProfile\";\n\nconst putUserProfileHandler: Handler<FlinkContext<genericAuthContext>, UserProfile, UserProfile> = async ({ ctx, req, origin }) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n let userId = req.user._id;\n let user = await repo.getById(userId);\n if (user == null) {\n return notFound();\n }\n\n const updatedProfile = {\n ...user.profile,\n ...req.body,\n };\n\n await repo.updateById(userId, { profile: updatedProfile });\n\n user = await repo.getById(userId);\n\n if ((<any>ctx.plugins)[pluginName].onUserUpdated) {\n await (<any>ctx.plugins)[pluginName].onUserUpdated(user, req.body);\n }\n\n return {\n data: user.profile,\n };\n};\n\nexport default putUserProfileHandler;\n"],"names":["putUserProfileHandler","ctx","req","origin","pluginName","repo","repos","plugins","repoName","userId","user","_id","getById","notFound","updatedProfile","profile","body","updateById","onUserUpdated","data"],"mappings":";;;;+BAgCA;;;eAAA;;;uBAhCgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIhD,MAAMA,wBAA6F,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAEC,MAAM,EAAE;IAC1H,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,IAAIC,SAASP,IAAIQ,IAAI,CAACC,GAAG;IACzB,IAAID,OAAO,MAAML,KAAKO,OAAO,CAACH;IAC9B,IAAIC,QAAQ,MAAM;QACd,OAAOG,IAAAA,eAAQ;IACnB;IAEA,MAAMC,iBAAiB,mBAChBJ,KAAKK,OAAO,EACZb,IAAIc,IAAI;IAGf,MAAMX,KAAKY,UAAU,CAACR,QAAQ;QAAEM,SAASD;IAAe;IAExDJ,OAAO,MAAML,KAAKO,OAAO,CAACH;IAE1B,IAAI,AAAMR,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACc,aAAa,EAAE;QAC9C,MAAM,AAAMjB,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACc,aAAa,CAACR,MAAMR,IAAIc,IAAI;IACrE;IAEA,OAAO;QACHG,MAAMT,KAAKK,OAAO;IACtB;AACJ;MAEA,WAAef"}
@@ -85,7 +85,7 @@ const postUserPushRegisterTokenHandler = async ({ ctx, req, origin })=>{
85
85
  // Filter out all other devices except the newly registered one
86
86
  user.pushNotificationTokens = user.pushNotificationTokens.filter((t)=>t.deviceId === req.body.deviceId);
87
87
  }
88
- await repo.updateOne(user._id, {
88
+ await repo.updateById(user._id, {
89
89
  pushNotificationTokens: user.pushNotificationTokens
90
90
  });
91
91
  if (deregisterOtherDevices) {
@@ -108,7 +108,7 @@ const postUserPushRegisterTokenHandler = async ({ ctx, req, origin })=>{
108
108
  let lengthBefore = other.pushNotificationTokens.length;
109
109
  other.pushNotificationTokens = other.pushNotificationTokens.filter((t)=>t.deviceId !== req.body.deviceId && t.token !== req.body.token);
110
110
  _flink.log.debug(`Deregistering ${lengthBefore - other.pushNotificationTokens.length} devices for user ${other._id} as other user ${user._id} claimed this device`);
111
- await repo.updateOne(other._id, {
111
+ await repo.updateById(other._id, {
112
112
  pushNotificationTokens: other.pushNotificationTokens
113
113
  });
114
114
  } catch (e) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/UserPushRegisterToken.ts"],"sourcesContent":["import { FlinkContext, Handler, log, notFound } from \"@flink-app/flink\";\nimport { genericAuthContext } from \"../genericAuthContext\";\nimport { PushNotificationToken } from \"../schemas/PushNotificationToken\";\nimport { PushNotificatioNTokenRes } from \"../schemas/PushNotificationTokenRes\";\nimport { User } from \"../schemas/User\";\nimport { GenericAuthPluginOptions } from \"../genericAuthPluginOptions\";\n\nconst postUserPushRegisterTokenHandler: Handler<FlinkContext<genericAuthContext>, PushNotificationToken, PushNotificatioNTokenRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n const pluginName = origin || \"genericAuthPlugin\";\n const pluginOptions: GenericAuthPluginOptions = (ctx.plugins as any)[pluginName];\n const repo = ctx.repos[pluginOptions.repoName];\n const deregisterOtherDevices = pluginOptions.deregisterOtherDevices || false;\n const allowMultipleDevices = pluginOptions.allowMultipleDevices ?? true;\n\n const user = <User>await repo.getById(req.user._id);\n\n if (user == null) {\n return notFound(\"User not found\");\n }\n\n let exToken = user.pushNotificationTokens.find((t) => t.deviceId == req.body.deviceId);\n\n if (exToken != null) {\n exToken.token = req.body.token;\n exToken.type = req.body.type || \"firebase\";\n } else {\n user.pushNotificationTokens.push({ ...req.body, type: req.body.type || \"firebase\" });\n }\n\n if (!allowMultipleDevices) {\n // Filter out all other devices except the newly registered one\n user.pushNotificationTokens = user.pushNotificationTokens.filter((t) => t.deviceId === req.body.deviceId);\n }\n\n await repo.updateOne(user._id, {\n pushNotificationTokens: user.pushNotificationTokens,\n });\n\n if (deregisterOtherDevices) {\n const otherRegistrations = <User[]>await repo.findAll({\n $or: [{ \"pushNotificationTokens.deviceId\": req.body.deviceId }, { \"pushNotificationTokens.token\": req.body.token }],\n _id: { $ne: repo.buildId(user._id) },\n });\n\n log.debug(`Found ${otherRegistrations.length} other registrations for device ${req.body.deviceId} or token ${req.body.token}`);\n\n for (let other of otherRegistrations) {\n try {\n let lengthBefore = other.pushNotificationTokens.length;\n\n other.pushNotificationTokens = other.pushNotificationTokens.filter((t) => t.deviceId !== req.body.deviceId && t.token !== req.body.token);\n\n log.debug(\n `Deregistering ${lengthBefore - other.pushNotificationTokens.length} devices for user ${other._id} as other user ${\n user._id\n } claimed this device`\n );\n\n await repo.updateOne(other._id, {\n pushNotificationTokens: other.pushNotificationTokens,\n });\n } catch (e) {\n console.error(\"Error deregistering other devices\", e);\n }\n }\n }\n\n return { data: { status: \"success\" } };\n};\n\nexport default postUserPushRegisterTokenHandler;\n"],"names":["postUserPushRegisterTokenHandler","ctx","req","origin","pluginOptions","pluginName","plugins","repo","repos","repoName","deregisterOtherDevices","allowMultipleDevices","user","getById","_id","notFound","exToken","pushNotificationTokens","find","t","deviceId","body","token","type","push","filter","updateOne","otherRegistrations","findAll","$or","$ne","buildId","log","debug","length","other","lengthBefore","e","console","error","data","status"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/UserPushRegisterToken.ts"],"sourcesContent":["import { FlinkContext, Handler, log, notFound } from \"@flink-app/flink\";\nimport { genericAuthContext } from \"../genericAuthContext\";\nimport { PushNotificationToken } from \"../schemas/PushNotificationToken\";\nimport { PushNotificatioNTokenRes } from \"../schemas/PushNotificationTokenRes\";\nimport { User } from \"../schemas/User\";\nimport { GenericAuthPluginOptions } from \"../genericAuthPluginOptions\";\n\nconst postUserPushRegisterTokenHandler: Handler<FlinkContext<genericAuthContext>, PushNotificationToken, PushNotificatioNTokenRes> = async ({\n ctx,\n req,\n origin,\n}) => {\n const pluginName = origin || \"genericAuthPlugin\";\n const pluginOptions: GenericAuthPluginOptions = (ctx.plugins as any)[pluginName];\n const repo = ctx.repos[pluginOptions.repoName];\n const deregisterOtherDevices = pluginOptions.deregisterOtherDevices || false;\n const allowMultipleDevices = pluginOptions.allowMultipleDevices ?? true;\n\n const user = <User>await repo.getById(req.user._id);\n\n if (user == null) {\n return notFound(\"User not found\");\n }\n\n let exToken = user.pushNotificationTokens.find((t) => t.deviceId == req.body.deviceId);\n\n if (exToken != null) {\n exToken.token = req.body.token;\n exToken.type = req.body.type || \"firebase\";\n } else {\n user.pushNotificationTokens.push({ ...req.body, type: req.body.type || \"firebase\" });\n }\n\n if (!allowMultipleDevices) {\n // Filter out all other devices except the newly registered one\n user.pushNotificationTokens = user.pushNotificationTokens.filter((t) => t.deviceId === req.body.deviceId);\n }\n\n await repo.updateById(user._id, {\n pushNotificationTokens: user.pushNotificationTokens,\n });\n\n if (deregisterOtherDevices) {\n const otherRegistrations = <User[]>await repo.findAll({\n $or: [{ \"pushNotificationTokens.deviceId\": req.body.deviceId }, { \"pushNotificationTokens.token\": req.body.token }],\n _id: { $ne: repo.buildId(user._id) },\n });\n\n log.debug(`Found ${otherRegistrations.length} other registrations for device ${req.body.deviceId} or token ${req.body.token}`);\n\n for (let other of otherRegistrations) {\n try {\n let lengthBefore = other.pushNotificationTokens.length;\n\n other.pushNotificationTokens = other.pushNotificationTokens.filter((t) => t.deviceId !== req.body.deviceId && t.token !== req.body.token);\n\n log.debug(\n `Deregistering ${lengthBefore - other.pushNotificationTokens.length} devices for user ${other._id} as other user ${\n user._id\n } claimed this device`\n );\n\n await repo.updateById(other._id, {\n pushNotificationTokens: other.pushNotificationTokens,\n });\n } catch (e) {\n console.error(\"Error deregistering other devices\", e);\n }\n }\n }\n\n return { data: { status: \"success\" } };\n};\n\nexport default postUserPushRegisterTokenHandler;\n"],"names":["postUserPushRegisterTokenHandler","ctx","req","origin","pluginOptions","pluginName","plugins","repo","repos","repoName","deregisterOtherDevices","allowMultipleDevices","user","getById","_id","notFound","exToken","pushNotificationTokens","find","t","deviceId","body","token","type","push","filter","updateById","otherRegistrations","findAll","$or","$ne","buildId","log","debug","length","other","lengthBefore","e","console","error","data","status"],"mappings":";;;;+BA0EA;;;eAAA;;;uBA1EqD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOrD,MAAMA,mCAA+H,OAAO,EACxIC,GAAG,EACHC,GAAG,EACHC,MAAM,EACT;QAKgCC;IAJ7B,MAAMC,aAAaF,UAAU;IAC7B,MAAMC,gBAA0C,AAACH,IAAIK,OAAO,AAAQ,CAACD,WAAW;IAChF,MAAME,OAAON,IAAIO,KAAK,CAACJ,cAAcK,QAAQ,CAAC;IAC9C,MAAMC,yBAAyBN,cAAcM,sBAAsB,IAAI;IACvE,MAAMC,wBAAuBP,sCAAAA,cAAcO,oBAAoB,cAAlCP,iDAAAA,sCAAsC;IAEnE,MAAMQ,OAAa,MAAML,KAAKM,OAAO,CAACX,IAAIU,IAAI,CAACE,GAAG;IAElD,IAAIF,QAAQ,MAAM;QACd,OAAOG,IAAAA,eAAQ,EAAC;IACpB;IAEA,IAAIC,UAAUJ,KAAKK,sBAAsB,CAACC,IAAI,CAAC,CAACC,IAAMA,EAAEC,QAAQ,IAAIlB,IAAImB,IAAI,CAACD,QAAQ;IAErF,IAAIJ,WAAW,MAAM;QACjBA,QAAQM,KAAK,GAAGpB,IAAImB,IAAI,CAACC,KAAK;QAC9BN,QAAQO,IAAI,GAAGrB,IAAImB,IAAI,CAACE,IAAI,IAAI;IACpC,OAAO;QACHX,KAAKK,sBAAsB,CAACO,IAAI,CAAC,wCAAKtB,IAAImB,IAAI;YAAEE,MAAMrB,IAAImB,IAAI,CAACE,IAAI,IAAI;;IAC3E;IAEA,IAAI,CAACZ,sBAAsB;QACvB,+DAA+D;QAC/DC,KAAKK,sBAAsB,GAAGL,KAAKK,sBAAsB,CAACQ,MAAM,CAAC,CAACN,IAAMA,EAAEC,QAAQ,KAAKlB,IAAImB,IAAI,CAACD,QAAQ;IAC5G;IAEA,MAAMb,KAAKmB,UAAU,CAACd,KAAKE,GAAG,EAAE;QAC5BG,wBAAwBL,KAAKK,sBAAsB;IACvD;IAEA,IAAIP,wBAAwB;QACxB,MAAMiB,qBAA6B,MAAMpB,KAAKqB,OAAO,CAAC;YAClDC,KAAK;gBAAC;oBAAE,mCAAmC3B,IAAImB,IAAI,CAACD,QAAQ;gBAAC;gBAAG;oBAAE,gCAAgClB,IAAImB,IAAI,CAACC,KAAK;gBAAC;aAAE;YACnHR,KAAK;gBAAEgB,KAAKvB,KAAKwB,OAAO,CAACnB,KAAKE,GAAG;YAAE;QACvC;QAEAkB,UAAG,CAACC,KAAK,CAAC,CAAC,MAAM,EAAEN,mBAAmBO,MAAM,CAAC,gCAAgC,EAAEhC,IAAImB,IAAI,CAACD,QAAQ,CAAC,UAAU,EAAElB,IAAImB,IAAI,CAACC,KAAK,EAAE;QAE7H,KAAK,IAAIa,SAASR,mBAAoB;YAClC,IAAI;gBACA,IAAIS,eAAeD,MAAMlB,sBAAsB,CAACiB,MAAM;gBAEtDC,MAAMlB,sBAAsB,GAAGkB,MAAMlB,sBAAsB,CAACQ,MAAM,CAAC,CAACN,IAAMA,EAAEC,QAAQ,KAAKlB,IAAImB,IAAI,CAACD,QAAQ,IAAID,EAAEG,KAAK,KAAKpB,IAAImB,IAAI,CAACC,KAAK;gBAExIU,UAAG,CAACC,KAAK,CACL,CAAC,cAAc,EAAEG,eAAeD,MAAMlB,sBAAsB,CAACiB,MAAM,CAAC,kBAAkB,EAAEC,MAAMrB,GAAG,CAAC,eAAe,EAC7GF,KAAKE,GAAG,CACX,oBAAoB,CAAC;gBAG1B,MAAMP,KAAKmB,UAAU,CAACS,MAAMrB,GAAG,EAAE;oBAC7BG,wBAAwBkB,MAAMlB,sBAAsB;gBACxD;YACJ,EAAE,OAAOoB,GAAG;gBACRC,QAAQC,KAAK,CAAC,qCAAqCF;YACvD;QACJ;IACJ;IAEA,OAAO;QAAEG,MAAM;YAAEC,QAAQ;QAAU;IAAE;AACzC;MAEA,WAAezC"}
@@ -17,7 +17,7 @@ const postUserRemoveTokenHandler = async ({ ctx, req, origin })=>{
17
17
  return (0, _flink.notFound)("User not found");
18
18
  }
19
19
  user.pushNotificationTokens = user.pushNotificationTokens.filter((t)=>t.deviceId != req.body.deviceId);
20
- await repo.updateOne(user._id, {
20
+ await repo.updateById(user._id, {
21
21
  pushNotificationTokens: user.pushNotificationTokens
22
22
  });
23
23
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/UserPushRemoveToken.ts"],"sourcesContent":["import { FlinkContext, Handler, notFound } from \"@flink-app/flink\";\nimport { genericAuthContext } from \"../genericAuthContext\";\nimport { PushNotificationToken } from \"../schemas/PushNotificationToken\";\nimport { PushNotificatioNTokenRes } from \"../schemas/PushNotificationTokenRes\";\nimport { User } from \"../schemas/User\";\n\nconst postUserRemoveTokenHandler: Handler<FlinkContext<genericAuthContext>, PushNotificationToken, PushNotificatioNTokenRes> = async ({ ctx, req, origin }) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = <User>await repo.getById(req.user._id);\n\n if (user == null) {\n return notFound(\"User not found\");\n }\n\n user.pushNotificationTokens = user.pushNotificationTokens.filter((t) => t.deviceId != req.body.deviceId);\n\n await repo.updateOne(user._id, {\n pushNotificationTokens: user.pushNotificationTokens,\n });\n\n return { data: { status: \"success\" } };\n};\n\nexport default postUserRemoveTokenHandler;\n"],"names":["postUserRemoveTokenHandler","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","_id","notFound","pushNotificationTokens","filter","t","deviceId","body","updateOne","data","status"],"mappings":";;;;+BAyBA;;;eAAA;;;uBAzBgD;AAMhD,MAAMA,6BAAyH,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAEC,MAAM,EAAE;IACtJ,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAa,MAAMJ,KAAKK,OAAO,CAACR,IAAIO,IAAI,CAACE,GAAG;IAElD,IAAIF,QAAQ,MAAM;QACd,OAAOG,IAAAA,eAAQ,EAAC;IACpB;IAEAH,KAAKI,sBAAsB,GAAGJ,KAAKI,sBAAsB,CAACC,MAAM,CAAC,CAACC,IAAMA,EAAEC,QAAQ,IAAId,IAAIe,IAAI,CAACD,QAAQ;IAEvG,MAAMX,KAAKa,SAAS,CAACT,KAAKE,GAAG,EAAE;QAC3BE,wBAAwBJ,KAAKI,sBAAsB;IACvD;IAEA,OAAO;QAAEM,MAAM;YAAEC,QAAQ;QAAU;IAAE;AACzC;MAEA,WAAepB"}
1
+ {"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/UserPushRemoveToken.ts"],"sourcesContent":["import { FlinkContext, Handler, notFound } from \"@flink-app/flink\";\nimport { genericAuthContext } from \"../genericAuthContext\";\nimport { PushNotificationToken } from \"../schemas/PushNotificationToken\";\nimport { PushNotificatioNTokenRes } from \"../schemas/PushNotificationTokenRes\";\nimport { User } from \"../schemas/User\";\n\nconst postUserRemoveTokenHandler: Handler<FlinkContext<genericAuthContext>, PushNotificationToken, PushNotificatioNTokenRes> = async ({ ctx, req, origin }) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const user = <User>await repo.getById(req.user._id);\n\n if (user == null) {\n return notFound(\"User not found\");\n }\n\n user.pushNotificationTokens = user.pushNotificationTokens.filter((t) => t.deviceId != req.body.deviceId);\n\n await repo.updateById(user._id, {\n pushNotificationTokens: user.pushNotificationTokens,\n });\n\n return { data: { status: \"success\" } };\n};\n\nexport default postUserRemoveTokenHandler;\n"],"names":["postUserRemoveTokenHandler","ctx","req","origin","pluginName","repo","repos","plugins","repoName","user","getById","_id","notFound","pushNotificationTokens","filter","t","deviceId","body","updateById","data","status"],"mappings":";;;;+BAyBA;;;eAAA;;;uBAzBgD;AAMhD,MAAMA,6BAAyH,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAEC,MAAM,EAAE;IACtJ,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,OAAa,MAAMJ,KAAKK,OAAO,CAACR,IAAIO,IAAI,CAACE,GAAG;IAElD,IAAIF,QAAQ,MAAM;QACd,OAAOG,IAAAA,eAAQ,EAAC;IACpB;IAEAH,KAAKI,sBAAsB,GAAGJ,KAAKI,sBAAsB,CAACC,MAAM,CAAC,CAACC,IAAMA,EAAEC,QAAQ,IAAId,IAAIe,IAAI,CAACD,QAAQ;IAEvG,MAAMX,KAAKa,UAAU,CAACT,KAAKE,GAAG,EAAE;QAC5BE,wBAAwBJ,KAAKI,sBAAsB;IACvD;IAEA,OAAO;QAAEM,MAAM;YAAEC,QAAQ;QAAU;IAAE;AACzC;MAEA,WAAepB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flink-app/generic-auth-plugin",
3
- "version": "2.0.0-alpha.72",
3
+ "version": "2.0.0-alpha.74",
4
4
  "description": "Flink plugin that provides a generic user authentification solution.",
5
5
  "author": "johan@frost.se",
6
6
  "publishConfig": {
@@ -12,20 +12,20 @@
12
12
  "dependencies": {
13
13
  "handlebars": "^4.7.7",
14
14
  "jsonwebtoken": "^8.5.1",
15
- "@flink-app/email-plugin": "2.0.0-alpha.72",
16
- "@flink-app/management-api-plugin": "2.0.0-alpha.72",
17
- "@flink-app/jwt-auth-plugin": "2.0.0-alpha.72",
18
- "@flink-app/sms-plugin": "2.0.0-alpha.72"
15
+ "@flink-app/jwt-auth-plugin": "2.0.0-alpha.74",
16
+ "@flink-app/email-plugin": "2.0.0-alpha.74",
17
+ "@flink-app/management-api-plugin": "2.0.0-alpha.74",
18
+ "@flink-app/sms-plugin": "2.0.0-alpha.74"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/jsonwebtoken": "^8.5.2",
22
22
  "@types/node": "22.13.10",
23
23
  "ts-node": "^10.9.2",
24
- "@flink-app/flink": "2.0.0-alpha.72"
24
+ "@flink-app/flink": "2.0.0-alpha.74"
25
25
  },
26
26
  "gitHead": "4243e3b3cd6d4e1ca001a61baa8436bf2bbe4113",
27
27
  "peerDependencies": {
28
- "@flink-app/flink": ">=2.0.0-alpha.72"
28
+ "@flink-app/flink": ">=2.0.0-alpha.74"
29
29
  },
30
30
  "scripts": {
31
31
  "test": "echo \"Error: no test specified\"",
@@ -281,7 +281,7 @@ export async function changePassword(
281
281
  };
282
282
  }
283
283
 
284
- await repo.updateOne(userId, {
284
+ await repo.updateById(userId, {
285
285
  password: passwordAndSalt.hash,
286
286
  salt: passwordAndSalt.salt,
287
287
  });
@@ -329,7 +329,7 @@ export async function passwordResetStart(
329
329
  secret = jwtSecret + ":" + code;
330
330
  } else {
331
331
  secret = jwtSecret + ":" + code + ":" + pwdResetStartedAt;
332
- await repo.updateOne(user._id, { pwdResetStartedAt });
332
+ await repo.updateById(user._id, { pwdResetStartedAt });
333
333
  }
334
334
 
335
335
  const options: jsonwebtoken.SignOptions = {
@@ -398,7 +398,7 @@ export async function passwordResetComplete(
398
398
  };
399
399
  }
400
400
 
401
- await repo.updateOne(user._id, {
401
+ await repo.updateById(user._id, {
402
402
  password: passwordAndSalt.hash,
403
403
  salt: passwordAndSalt.salt,
404
404
  pwdResetStartedAt: null,
@@ -33,7 +33,7 @@ const PutManagementUserPasswordByUserid: Handler<FlinkContext, PutManagementUser
33
33
  return badRequest("Password not accepted");
34
34
  }
35
35
 
36
- await repo.updateOne(req.params.userid, {
36
+ await repo.updateById(req.params.userid, {
37
37
  password: passwordAndSalt.hash,
38
38
  salt: passwordAndSalt.salt,
39
39
  });
@@ -15,7 +15,7 @@ const PutManagementUserProfileByUserid: Handler<FlinkContext, PutManagementUserP
15
15
  return notFound();
16
16
  }
17
17
 
18
- await repo.updateOne(user._id, { profile: req.body });
18
+ await repo.updateById(user._id, { profile: req.body });
19
19
 
20
20
  const updatedUser = await repo.getById(req.params.userid);
21
21
 
@@ -22,7 +22,7 @@ const PutManagementUserProfileByUserid: Handler<FlinkContext, PutManagementUserP
22
22
  ...req.body,
23
23
  };
24
24
 
25
- await repo.updateOne(user._id, { profile: profile });
25
+ await repo.updateById(user._id, { profile: profile });
26
26
 
27
27
  return {
28
28
  data: {},
@@ -15,7 +15,7 @@ const PutManagementUserRolesByUserid: Handler<FlinkContext, PutManagementUserRol
15
15
  return notFound();
16
16
  }
17
17
 
18
- await repo.updateOne(user._id, { roles: req.body.roles });
18
+ await repo.updateById(user._id, { roles: req.body.roles });
19
19
 
20
20
  return {
21
21
  data: {},
@@ -24,7 +24,7 @@ const PutManagementUserUsernameByUserid: Handler<FlinkContext, PutManagementUser
24
24
  }
25
25
  }
26
26
 
27
- await repo.updateOne(user._id, { username: req.body.username.toLowerCase() });
27
+ await repo.updateById(user._id, { username: req.body.username.toLowerCase() });
28
28
 
29
29
  return {
30
30
  data: {},
@@ -17,7 +17,7 @@ const putUserProfileHandler: Handler<FlinkContext<genericAuthContext>, UserProfi
17
17
  ...req.body,
18
18
  };
19
19
 
20
- await repo.updateOne(userId, { profile: updatedProfile });
20
+ await repo.updateById(userId, { profile: updatedProfile });
21
21
 
22
22
  user = await repo.getById(userId);
23
23
 
@@ -36,7 +36,7 @@ const postUserPushRegisterTokenHandler: Handler<FlinkContext<genericAuthContext>
36
36
  user.pushNotificationTokens = user.pushNotificationTokens.filter((t) => t.deviceId === req.body.deviceId);
37
37
  }
38
38
 
39
- await repo.updateOne(user._id, {
39
+ await repo.updateById(user._id, {
40
40
  pushNotificationTokens: user.pushNotificationTokens,
41
41
  });
42
42
 
@@ -60,7 +60,7 @@ const postUserPushRegisterTokenHandler: Handler<FlinkContext<genericAuthContext>
60
60
  } claimed this device`
61
61
  );
62
62
 
63
- await repo.updateOne(other._id, {
63
+ await repo.updateById(other._id, {
64
64
  pushNotificationTokens: other.pushNotificationTokens,
65
65
  });
66
66
  } catch (e) {
@@ -16,7 +16,7 @@ const postUserRemoveTokenHandler: Handler<FlinkContext<genericAuthContext>, Push
16
16
 
17
17
  user.pushNotificationTokens = user.pushNotificationTokens.filter((t) => t.deviceId != req.body.deviceId);
18
18
 
19
- await repo.updateOne(user._id, {
19
+ await repo.updateById(user._id, {
20
20
  pushNotificationTokens: user.pushNotificationTokens,
21
21
  });
22
22