@flink-app/generic-auth-plugin 1.0.0 → 2.0.0-alpha.101

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 (198) hide show
  1. package/.flink/generatedAgents.ts +5 -0
  2. package/.flink/generatedHandlers.ts +22 -22
  3. package/.flink/generatedJobs.ts +1 -1
  4. package/.flink/generatedRepos.ts +1 -1
  5. package/.flink/generatedServices.ts +5 -0
  6. package/.flink/generatedTools.ts +5 -0
  7. package/.flink/start.ts +4 -1
  8. package/CHANGELOG.md +597 -0
  9. package/dist/.flink/generatedAgents.d.ts +1 -0
  10. package/dist/.flink/generatedAgents.js +14 -0
  11. package/dist/.flink/generatedAgents.js.map +1 -0
  12. package/dist/.flink/generatedHandlers.js +13 -6
  13. package/dist/.flink/generatedHandlers.js.map +1 -0
  14. package/dist/.flink/generatedJobs.js +13 -6
  15. package/dist/.flink/generatedJobs.js.map +1 -0
  16. package/dist/.flink/generatedRepos.js +13 -6
  17. package/dist/.flink/generatedRepos.js.map +1 -0
  18. package/dist/.flink/generatedServices.js +14 -0
  19. package/dist/.flink/generatedServices.js.map +1 -0
  20. package/dist/.flink/generatedTools.d.ts +1 -0
  21. package/dist/.flink/generatedTools.js +14 -0
  22. package/dist/.flink/generatedTools.js.map +1 -0
  23. package/dist/.flink/schema-manifest.json +588 -0
  24. package/dist/.flink/schemas/schemas.js +1 -1
  25. package/dist/.flink/start.d.ts +2 -0
  26. package/dist/.flink/start.js +15 -3
  27. package/dist/.flink/start.js.map +1 -0
  28. package/dist/.tsbuildinfo +1 -0
  29. package/dist/src/coreFunctions.js +356 -412
  30. package/dist/src/coreFunctions.js.map +1 -0
  31. package/dist/src/genericAuthContext.js +3 -1
  32. package/dist/src/genericAuthContext.js.map +1 -0
  33. package/dist/src/genericAuthPluginOptions.js +3 -1
  34. package/dist/src/genericAuthPluginOptions.js.map +1 -0
  35. package/dist/src/handlers/Management/DeleteUserByUserid.d.ts +1 -1
  36. package/dist/src/handlers/Management/DeleteUserByUserid.js +21 -60
  37. package/dist/src/handlers/Management/DeleteUserByUserid.js.map +1 -0
  38. package/dist/src/handlers/Management/GetSchema.d.ts +1 -1
  39. package/dist/src/handlers/Management/GetSchema.js +16 -50
  40. package/dist/src/handlers/Management/GetSchema.js.map +1 -0
  41. package/dist/src/handlers/Management/GetUser.d.ts +1 -1
  42. package/dist/src/handlers/Management/GetUser.js +25 -59
  43. package/dist/src/handlers/Management/GetUser.js.map +1 -0
  44. package/dist/src/handlers/Management/GetUserByUserid.d.ts +1 -1
  45. package/dist/src/handlers/Management/GetUserByUserid.js +60 -71
  46. package/dist/src/handlers/Management/GetUserByUserid.js.map +1 -0
  47. package/dist/src/handlers/Management/GetUserViewByUserid.d.ts +1 -1
  48. package/dist/src/handlers/Management/GetUserViewByUserid.js +35 -74
  49. package/dist/src/handlers/Management/GetUserViewByUserid.js.map +1 -0
  50. package/dist/src/handlers/Management/PutUserPasswordByUserid.d.ts +1 -1
  51. package/dist/src/handlers/Management/PutUserPasswordByUserid.js +37 -85
  52. package/dist/src/handlers/Management/PutUserPasswordByUserid.js.map +1 -0
  53. package/dist/src/handlers/Management/PutUserProfileByUserid.d.ts +1 -1
  54. package/dist/src/handlers/Management/PutUserProfileByUserid.js +27 -70
  55. package/dist/src/handlers/Management/PutUserProfileByUserid.js.map +1 -0
  56. package/dist/src/handlers/Management/PutUserProfileByUseridAppend.d.ts +1 -1
  57. package/dist/src/handlers/Management/PutUserProfileByUseridAppend.js +53 -76
  58. package/dist/src/handlers/Management/PutUserProfileByUseridAppend.js.map +1 -0
  59. package/dist/src/handlers/Management/PutUserRolesByUserid.d.ts +1 -1
  60. package/dist/src/handlers/Management/PutUserRolesByUserid.js +24 -63
  61. package/dist/src/handlers/Management/PutUserRolesByUserid.js.map +1 -0
  62. package/dist/src/handlers/Management/PutUserUsernameByUserid.d.ts +1 -1
  63. package/dist/src/handlers/Management/PutUserUsernameByUserid.js +31 -72
  64. package/dist/src/handlers/Management/PutUserUsernameByUserid.js.map +1 -0
  65. package/dist/src/handlers/UserCreate.d.ts +1 -1
  66. package/dist/src/handlers/UserCreate.js +44 -84
  67. package/dist/src/handlers/UserCreate.js.map +1 -0
  68. package/dist/src/handlers/UserLogin.d.ts +1 -1
  69. package/dist/src/handlers/UserLogin.js +45 -88
  70. package/dist/src/handlers/UserLogin.js.map +1 -0
  71. package/dist/src/handlers/UserLoginByToken.d.ts +1 -1
  72. package/dist/src/handlers/UserLoginByToken.js +24 -63
  73. package/dist/src/handlers/UserLoginByToken.js.map +1 -0
  74. package/dist/src/handlers/UserPasswordPut.d.ts +1 -1
  75. package/dist/src/handlers/UserPasswordPut.js +24 -60
  76. package/dist/src/handlers/UserPasswordPut.js.map +1 -0
  77. package/dist/src/handlers/UserPasswordResetComplete.d.ts +1 -1
  78. package/dist/src/handlers/UserPasswordResetComplete.js +30 -66
  79. package/dist/src/handlers/UserPasswordResetComplete.js.map +1 -0
  80. package/dist/src/handlers/UserPasswordResetForm.d.ts +1 -1
  81. package/dist/src/handlers/UserPasswordResetForm.js +155 -110
  82. package/dist/src/handlers/UserPasswordResetForm.js.map +1 -0
  83. package/dist/src/handlers/UserPasswordResetStart.d.ts +1 -1
  84. package/dist/src/handlers/UserPasswordResetStart.js +66 -95
  85. package/dist/src/handlers/UserPasswordResetStart.js.map +1 -0
  86. package/dist/src/handlers/UserProfileGet.d.ts +1 -1
  87. package/dist/src/handlers/UserProfileGet.js +21 -60
  88. package/dist/src/handlers/UserProfileGet.js.map +1 -0
  89. package/dist/src/handlers/UserProfilePut.d.ts +1 -1
  90. package/dist/src/handlers/UserProfilePut.js +55 -81
  91. package/dist/src/handlers/UserProfilePut.js.map +1 -0
  92. package/dist/src/handlers/UserPushRegisterToken.d.ts +1 -1
  93. package/dist/src/handlers/UserPushRegisterToken.js +119 -118
  94. package/dist/src/handlers/UserPushRegisterToken.js.map +1 -0
  95. package/dist/src/handlers/UserPushRemoveToken.d.ts +1 -1
  96. package/dist/src/handlers/UserPushRemoveToken.js +26 -63
  97. package/dist/src/handlers/UserPushRemoveToken.js.map +1 -0
  98. package/dist/src/handlers/UserToken.d.ts +1 -1
  99. package/dist/src/handlers/UserToken.js +29 -63
  100. package/dist/src/handlers/UserToken.js.map +1 -0
  101. package/dist/src/index.js +133 -50
  102. package/dist/src/index.js.map +1 -0
  103. package/dist/src/init.js +160 -101
  104. package/dist/src/init.js.map +1 -0
  105. package/dist/src/management.js +109 -86
  106. package/dist/src/management.js.map +1 -0
  107. package/dist/src/schemas/Management/DeleteUserByUseridReq.js +3 -1
  108. package/dist/src/schemas/Management/DeleteUserByUseridReq.js.map +1 -0
  109. package/dist/src/schemas/Management/DeleteUserByUseridRes.js +3 -1
  110. package/dist/src/schemas/Management/DeleteUserByUseridRes.js.map +1 -0
  111. package/dist/src/schemas/Management/GetUserByUseridReq.js +3 -1
  112. package/dist/src/schemas/Management/GetUserByUseridReq.js.map +1 -0
  113. package/dist/src/schemas/Management/GetUserByUseridRes.js +3 -1
  114. package/dist/src/schemas/Management/GetUserByUseridRes.js.map +1 -0
  115. package/dist/src/schemas/Management/GetUserReq.js +3 -1
  116. package/dist/src/schemas/Management/GetUserReq.js.map +1 -0
  117. package/dist/src/schemas/Management/GetUserRes.js +3 -1
  118. package/dist/src/schemas/Management/GetUserRes.js.map +1 -0
  119. package/dist/src/schemas/Management/GetUserViewByUseridReq.js +3 -1
  120. package/dist/src/schemas/Management/GetUserViewByUseridReq.js.map +1 -0
  121. package/dist/src/schemas/Management/GetUserViewByUseridRes.js +3 -1
  122. package/dist/src/schemas/Management/GetUserViewByUseridRes.js.map +1 -0
  123. package/dist/src/schemas/Management/PutUserPasswordByUseridReq.js +3 -1
  124. package/dist/src/schemas/Management/PutUserPasswordByUseridReq.js.map +1 -0
  125. package/dist/src/schemas/Management/PutUserPasswordByUseridRes.js +3 -1
  126. package/dist/src/schemas/Management/PutUserPasswordByUseridRes.js.map +1 -0
  127. package/dist/src/schemas/Management/PutUserProfileByUseridReq.js +3 -1
  128. package/dist/src/schemas/Management/PutUserProfileByUseridReq.js.map +1 -0
  129. package/dist/src/schemas/Management/PutUserProfileByUseridRes.js +3 -1
  130. package/dist/src/schemas/Management/PutUserProfileByUseridRes.js.map +1 -0
  131. package/dist/src/schemas/Management/PutUserRolesByUseridReq.js +3 -1
  132. package/dist/src/schemas/Management/PutUserRolesByUseridReq.js.map +1 -0
  133. package/dist/src/schemas/Management/PutUserRolesByUseridRes.js +3 -1
  134. package/dist/src/schemas/Management/PutUserRolesByUseridRes.js.map +1 -0
  135. package/dist/src/schemas/Management/PutUserUsernameByUseridReq.js +3 -1
  136. package/dist/src/schemas/Management/PutUserUsernameByUseridReq.js.map +1 -0
  137. package/dist/src/schemas/Management/PutUserUsernameByUseridRes.js +3 -1
  138. package/dist/src/schemas/Management/PutUserUsernameByUseridRes.js.map +1 -0
  139. package/dist/src/schemas/PushNotificationToken.js +3 -1
  140. package/dist/src/schemas/PushNotificationToken.js.map +1 -0
  141. package/dist/src/schemas/PushNotificationTokenRes.js +3 -1
  142. package/dist/src/schemas/PushNotificationTokenRes.js.map +1 -0
  143. package/dist/src/schemas/User.js +3 -1
  144. package/dist/src/schemas/User.js.map +1 -0
  145. package/dist/src/schemas/UserCreateReq.js +3 -1
  146. package/dist/src/schemas/UserCreateReq.js.map +1 -0
  147. package/dist/src/schemas/UserCreateRes.js +3 -1
  148. package/dist/src/schemas/UserCreateRes.js.map +1 -0
  149. package/dist/src/schemas/UserLoginByTokenReq.js +3 -1
  150. package/dist/src/schemas/UserLoginByTokenReq.js.map +1 -0
  151. package/dist/src/schemas/UserLoginReq.js +3 -1
  152. package/dist/src/schemas/UserLoginReq.js.map +1 -0
  153. package/dist/src/schemas/UserLoginRes.js +3 -1
  154. package/dist/src/schemas/UserLoginRes.js.map +1 -0
  155. package/dist/src/schemas/UserPasswordChangeReq.js +3 -1
  156. package/dist/src/schemas/UserPasswordChangeReq.js.map +1 -0
  157. package/dist/src/schemas/UserPasswordChangeRes.js +3 -1
  158. package/dist/src/schemas/UserPasswordChangeRes.js.map +1 -0
  159. package/dist/src/schemas/UserPasswordResetCompleteReq.js +3 -1
  160. package/dist/src/schemas/UserPasswordResetCompleteReq.js.map +1 -0
  161. package/dist/src/schemas/UserPasswordResetCompleteRes.js +3 -1
  162. package/dist/src/schemas/UserPasswordResetCompleteRes.js.map +1 -0
  163. package/dist/src/schemas/UserPasswordResetSettings.js +3 -1
  164. package/dist/src/schemas/UserPasswordResetSettings.js.map +1 -0
  165. package/dist/src/schemas/UserPasswordResetStartReq.js +3 -1
  166. package/dist/src/schemas/UserPasswordResetStartReq.js.map +1 -0
  167. package/dist/src/schemas/UserPasswordResetStartRes.js +3 -1
  168. package/dist/src/schemas/UserPasswordResetStartRes.js.map +1 -0
  169. package/dist/src/schemas/UserPasswordResetStartResPublic.js +3 -1
  170. package/dist/src/schemas/UserPasswordResetStartResPublic.js.map +1 -0
  171. package/dist/src/schemas/UserProfile.js +3 -1
  172. package/dist/src/schemas/UserProfile.js.map +1 -0
  173. package/dist/src/schemas/UserTokenRes.js +3 -1
  174. package/dist/src/schemas/UserTokenRes.js.map +1 -0
  175. package/package.json +9 -6
  176. package/src/coreFunctions.ts +3 -3
  177. package/src/handlers/Management/DeleteUserByUserid.ts +10 -14
  178. package/src/handlers/Management/GetSchema.ts +6 -12
  179. package/src/handlers/Management/GetUser.ts +11 -15
  180. package/src/handlers/Management/GetUserByUserid.ts +13 -23
  181. package/src/handlers/Management/PutUserPasswordByUserid.ts +39 -45
  182. package/src/handlers/Management/PutUserProfileByUserid.ts +21 -27
  183. package/src/handlers/Management/PutUserProfileByUseridAppend.ts +22 -28
  184. package/src/handlers/Management/PutUserRolesByUserid.ts +17 -23
  185. package/src/handlers/Management/PutUserUsernameByUserid.ts +24 -31
  186. package/src/handlers/UserLoginByToken.ts +20 -27
  187. package/src/handlers/UserPasswordPut.ts +17 -24
  188. package/src/handlers/UserPasswordResetComplete.ts +31 -40
  189. package/src/handlers/UserPasswordResetForm.ts +25 -29
  190. package/src/handlers/UserPasswordResetStart.ts +13 -5
  191. package/src/handlers/UserProfileGet.ts +11 -14
  192. package/src/handlers/UserProfilePut.ts +1 -1
  193. package/src/handlers/UserPushRegisterToken.ts +2 -2
  194. package/src/handlers/UserPushRemoveToken.ts +12 -18
  195. package/src/handlers/UserToken.ts +13 -24
  196. package/src/init.ts +23 -1
  197. package/tsconfig.json +1 -1
  198. package/.flink/schemas/schemas.ts +0 -1
@@ -4,32 +4,25 @@ import { genericAuthContext } from "../genericAuthContext";
4
4
  import { UserPasswordChangeReq } from "../schemas/UserPasswordChangeReq";
5
5
  import { UserPasswordChangeRes } from "../schemas/UserPasswordChangeRes";
6
6
 
7
- const putUserPasswordHandler: Handler<
8
- FlinkContext<genericAuthContext>,
9
- UserPasswordChangeReq,
10
- UserPasswordChangeRes
11
- > = async ({ ctx, req, origin }) => {
12
- let pluginName = origin || "genericAuthPlugin";
13
- let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];
14
- const resp = await ctx.plugins.genericAuthPlugin.changePassword(
15
- repo,
16
- <JwtAuthPlugin>ctx.auth,
17
- req.user._id,
18
- req.body.password,
19
- ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod
20
- );
7
+ const putUserPasswordHandler: Handler<FlinkContext<genericAuthContext>, UserPasswordChangeReq, UserPasswordChangeRes> = async ({ ctx, req, origin }) => {
8
+ let pluginName = origin || "genericAuthPlugin";
9
+ let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];
10
+ const resp = await ctx.plugins.genericAuthPlugin.changePassword(
11
+ repo,
12
+ <JwtAuthPlugin>ctx.auth,
13
+ req.user._id,
14
+ req.body.password,
15
+ ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod
16
+ );
21
17
 
22
- switch (resp.status) {
23
- case "failed":
24
- return badRequest(
25
- "Password could not be changed on this user",
26
- resp.status
27
- );
28
- case "passwordError":
29
- return badRequest("Invalid password", resp.status);
30
- }
18
+ switch (resp.status) {
19
+ case "failed":
20
+ return badRequest("Password could not be changed on this user", resp.status);
21
+ case "passwordError":
22
+ return badRequest("Invalid password", resp.status);
23
+ }
31
24
 
32
- return { data: resp, status: 200 };
25
+ return { data: resp, status: 200 };
33
26
  };
34
27
 
35
28
  export default putUserPasswordHandler;
@@ -1,52 +1,43 @@
1
- import {
2
- badRequest,
3
- FlinkContext,
4
- Handler,
5
- internalServerError,
6
- notFound,
7
- } from "@flink-app/flink";
1
+ import { badRequest, FlinkContext, Handler, internalServerError, notFound } from "@flink-app/flink";
8
2
  import { JwtAuthPlugin } from "@flink-app/jwt-auth-plugin";
9
3
  import { genericAuthContext } from "../genericAuthContext";
10
4
  import { UserPasswordResetCompleteReq } from "../schemas/UserPasswordResetCompleteReq";
11
5
  import { UserPasswordResetCompleteRes } from "../schemas/UserPasswordResetCompleteRes";
12
6
 
13
- const postPasswordResetCompleteHandler: Handler<
14
- FlinkContext<genericAuthContext>,
15
- UserPasswordResetCompleteReq,
16
- UserPasswordResetCompleteRes
17
- > = async ({ ctx, req, origin }) => {
18
- let pluginName = origin || "genericAuthPlugin";
19
- let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];
7
+ const postPasswordResetCompleteHandler: Handler<FlinkContext<genericAuthContext>, UserPasswordResetCompleteReq, UserPasswordResetCompleteRes> = async ({
8
+ ctx,
9
+ req,
10
+ origin,
11
+ }) => {
12
+ let pluginName = origin || "genericAuthPlugin";
13
+ let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];
20
14
 
21
- if (ctx.plugins.genericAuthPlugin.passwordResetSettings == null) {
22
- return internalServerError(
23
- "Password reset settings is needed to use password-reset"
24
- );
25
- }
15
+ if (ctx.plugins.genericAuthPlugin.passwordResetSettings == null) {
16
+ return internalServerError("Password reset settings is needed to use password-reset");
17
+ }
26
18
 
27
- const { jwtSecret /*, numberOfDigits, lifeTime*/ } =
28
- (<any>ctx.plugins)[pluginName].passwordResetSettings.code;
19
+ const { jwtSecret /*, numberOfDigits, lifeTime*/ } = (<any>ctx.plugins)[pluginName].passwordResetSettings.code;
29
20
 
30
- const resp = await ctx.plugins.genericAuthPlugin.passwordResetComplete(
31
- repo,
32
- <JwtAuthPlugin>ctx.auth,
33
- jwtSecret,
34
- req.body.passwordResetToken,
35
- req.body.code,
36
- req.body.password,
37
- ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod,
38
- ctx.plugins.genericAuthPlugin.passwordResetSettings.passwordResetReusableTokens
39
- );
21
+ const resp = await ctx.plugins.genericAuthPlugin.passwordResetComplete(
22
+ repo,
23
+ <JwtAuthPlugin>ctx.auth,
24
+ jwtSecret,
25
+ req.body.passwordResetToken,
26
+ req.body.code,
27
+ req.body.password,
28
+ ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod,
29
+ ctx.plugins.genericAuthPlugin.passwordResetSettings.passwordResetReusableTokens
30
+ );
40
31
 
41
- switch (resp.status) {
42
- case "invalidCode":
43
- return badRequest("Invalid validation code", resp.status);
44
- case "passwordError":
45
- return badRequest("Invalid password", resp.status);
46
- case "userNotFound":
47
- return notFound("User not found", resp.status);
48
- }
49
- return { data: resp, status: 200 };
32
+ switch (resp.status) {
33
+ case "invalidCode":
34
+ return badRequest("Invalid validation code", resp.status);
35
+ case "passwordError":
36
+ return badRequest("Invalid password", resp.status);
37
+ case "userNotFound":
38
+ return notFound("User not found", resp.status);
39
+ }
40
+ return { data: resp, status: 200 };
50
41
  };
51
42
 
52
43
  export default postPasswordResetCompleteHandler;
@@ -76,7 +76,7 @@ const script = `
76
76
  };
77
77
  `;
78
78
 
79
- const style =` * {
79
+ const style = ` * {
80
80
  box-sizing: border-box;
81
81
  font-family: Arial, Helvetica, sans-serif;
82
82
  }
@@ -109,50 +109,46 @@ const style =` * {
109
109
  `;
110
110
 
111
111
  export async function handleUserPasswordResetForm(
112
- _req: ExpressRequest,
113
- res: ExpressResponse,
114
- { templateFile, completeUrl }: { templateFile?: string; completeUrl: string }
112
+ _req: ExpressRequest,
113
+ res: ExpressResponse,
114
+ { templateFile, completeUrl }: { templateFile?: string; completeUrl: string }
115
115
  ) {
116
- const tpl = await readTemplate(templateFile);
116
+ const tpl = await readTemplate(templateFile);
117
117
 
118
- const html = Handlebars.compile(tpl)({
119
- completeUrl,
120
- });
118
+ const html = Handlebars.compile(tpl)({
119
+ completeUrl,
120
+ });
121
121
 
122
- res.send(html);
122
+ res.send(html);
123
123
  }
124
124
 
125
125
  export async function resetPasswordFormScript(req: ExpressRequest, res: ExpressResponse, { completeUrl }: { completeUrl: string }) {
126
126
  res.header("Content-Type", "application/javascript");
127
- const js = Handlebars.compile(script)({completeUrl});
127
+ const js = Handlebars.compile(script)({ completeUrl });
128
128
  res.send(js);
129
129
  }
130
130
 
131
131
  export async function resetPasswordFormCss(res: ExpressResponse) {
132
- res.header("Content-Type", "text/css");
133
- res.send(style);
132
+ res.header("Content-Type", "text/css");
133
+ res.send(style);
134
134
  }
135
135
 
136
136
  let cachedTemplate = "";
137
137
 
138
138
  async function readTemplate(templateFilename?: string) {
139
- if (!cachedTemplate) {
140
- if (templateFilename) {
141
- try {
142
- const buff = await fs.readFile(templateFilename);
143
- cachedTemplate = buff.toString();
144
- } catch (err) {
145
- log.error(
146
- "Failed reading template file for password reset",
147
- templateFilename,
148
- err
149
- );
150
- throw err;
151
- }
152
- } else {
153
- cachedTemplate = defaultTemplate;
139
+ if (!cachedTemplate) {
140
+ if (templateFilename) {
141
+ try {
142
+ const buff = await fs.readFile(templateFilename);
143
+ cachedTemplate = buff.toString();
144
+ } catch (err) {
145
+ log.error("Failed reading template file for password reset", templateFilename, err);
146
+ throw err;
147
+ }
148
+ } else {
149
+ cachedTemplate = defaultTemplate;
150
+ }
154
151
  }
155
- }
156
152
 
157
- return cachedTemplate;
153
+ return cachedTemplate;
158
154
  }
@@ -1,4 +1,4 @@
1
- import { emailPluginContext } from "@flink-app/email-plugin";
1
+ import { EmailPluginContext } from "@flink-app/email-plugin";
2
2
  import { FlinkContext, Handler, internalServerError } from "@flink-app/flink";
3
3
  import { JwtAuthPlugin } from "@flink-app/jwt-auth-plugin";
4
4
  import Handlebars from "handlebars";
@@ -7,7 +7,7 @@ import { UserPasswordResetStartReq } from "../schemas/UserPasswordResetStartReq"
7
7
  import { UserPasswordResetStartResPublic } from "../schemas/UserPasswordResetStartResPublic";
8
8
 
9
9
  const postPasswordResetStartHandler: Handler<
10
- FlinkContext<genericAuthContext & emailPluginContext>,
10
+ FlinkContext<genericAuthContext & EmailPluginContext>,
11
11
  UserPasswordResetStartReq,
12
12
  UserPasswordResetStartResPublic
13
13
  > = async ({ ctx, req, origin }) => {
@@ -27,10 +27,18 @@ const postPasswordResetStartHandler: Handler<
27
27
 
28
28
  const { jwtSecret, numberOfDigits, lifeTime } = genericAuthPlugin.passwordResetSettings.code;
29
29
 
30
- const resp = await genericAuthPlugin.passwordResetStart(repo, <JwtAuthPlugin>ctx.auth, jwtSecret, req.body.username, numberOfDigits, lifeTime, genericAuthPlugin.passwordResetSettings.passwordResetReusableTokens);
30
+ const resp = await genericAuthPlugin.passwordResetStart(
31
+ repo,
32
+ <JwtAuthPlugin>ctx.auth,
33
+ jwtSecret,
34
+ req.body.username,
35
+ numberOfDigits,
36
+ lifeTime,
37
+ genericAuthPlugin.passwordResetSettings.passwordResetReusableTokens
38
+ );
31
39
 
32
40
  if (resp.status != "success") {
33
- return { data: { status: "success", passwordResetToken: resp.passwordResetToken } };
41
+ return { data: { status: "success", passwordResetToken: resp.passwordResetToken } };
34
42
  }
35
43
 
36
44
  const emailCtx = {
@@ -40,7 +48,7 @@ const postPasswordResetStartHandler: Handler<
40
48
  profile: resp.profile,
41
49
  template: req.body.template,
42
50
  additionalAuth: req.body.additionalAuth,
43
- resetPasswordFormBaseUrl: genericAuthPlugin.passwordResetSettings.resetPasswordFormBaseUrl
51
+ resetPasswordFormBaseUrl: genericAuthPlugin.passwordResetSettings.resetPasswordFormBaseUrl,
44
52
  };
45
53
 
46
54
  let emailSettings = genericAuthPlugin.passwordResetSettings.email;
@@ -2,22 +2,19 @@ import { FlinkContext, Handler, notFound } from "@flink-app/flink";
2
2
  import { genericAuthContext } from "../genericAuthContext";
3
3
  import { UserProfile } from "../schemas/UserProfile";
4
4
 
5
- const getProfileHandler: Handler<
6
- FlinkContext<genericAuthContext>,
7
- UserProfile
8
- > = async ({ ctx, req, origin }) => {
9
- let pluginName = origin || "genericAuthPlugin";
10
- let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];
5
+ const getProfileHandler: Handler<FlinkContext<genericAuthContext>, UserProfile> = async ({ ctx, req, origin }) => {
6
+ let pluginName = origin || "genericAuthPlugin";
7
+ let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];
11
8
 
12
- let userId = req.user._id;
13
- let user = await repo.getById(userId);
14
- if (user == null) {
15
- return notFound();
16
- }
9
+ let userId = req.user._id;
10
+ let user = await repo.getById(userId);
11
+ if (user == null) {
12
+ return notFound();
13
+ }
17
14
 
18
- return {
19
- data: user.profile,
20
- };
15
+ return {
16
+ data: user.profile,
17
+ };
21
18
  };
22
19
 
23
20
  export default getProfileHandler;
@@ -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) {
@@ -4,29 +4,23 @@ import { PushNotificationToken } from "../schemas/PushNotificationToken";
4
4
  import { PushNotificatioNTokenRes } from "../schemas/PushNotificationTokenRes";
5
5
  import { User } from "../schemas/User";
6
6
 
7
- const postUserRemoveTokenHandler: Handler<
8
- FlinkContext<genericAuthContext>,
9
- PushNotificationToken,
10
- PushNotificatioNTokenRes
11
- > = async ({ ctx, req, origin }) => {
12
- let pluginName = origin || "genericAuthPlugin";
13
- let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];
7
+ const postUserRemoveTokenHandler: Handler<FlinkContext<genericAuthContext>, PushNotificationToken, PushNotificatioNTokenRes> = async ({ ctx, req, origin }) => {
8
+ let pluginName = origin || "genericAuthPlugin";
9
+ let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];
14
10
 
15
- const user = <User>await repo.getById(req.user._id);
11
+ const user = <User>await repo.getById(req.user._id);
16
12
 
17
- if (user == null) {
18
- return notFound("User not found");
19
- }
13
+ if (user == null) {
14
+ return notFound("User not found");
15
+ }
20
16
 
21
- user.pushNotificationTokens = user.pushNotificationTokens.filter(
22
- (t) => t.deviceId != req.body.deviceId
23
- );
17
+ user.pushNotificationTokens = user.pushNotificationTokens.filter((t) => t.deviceId != req.body.deviceId);
24
18
 
25
- await repo.updateOne(user._id, {
26
- pushNotificationTokens: user.pushNotificationTokens,
27
- });
19
+ await repo.updateById(user._id, {
20
+ pushNotificationTokens: user.pushNotificationTokens,
21
+ });
28
22
 
29
- return { data: { status: "success" } };
23
+ return { data: { status: "success" } };
30
24
  };
31
25
 
32
26
  export default postUserRemoveTokenHandler;
@@ -1,33 +1,22 @@
1
- import {
2
- FlinkContext,
3
- Handler,
4
- internalServerError,
5
- notFound,
6
- } from "@flink-app/flink";
1
+ import { FlinkContext, Handler, internalServerError, notFound } from "@flink-app/flink";
7
2
  import { genericAuthContext } from "../genericAuthContext";
8
3
  import { UserTokenRes } from "../schemas/UserTokenRes";
9
4
 
10
- const getUserTokenHandler: Handler<
11
- FlinkContext<genericAuthContext>,
12
- UserTokenRes
13
- > = async ({ ctx, req, origin }) => {
14
- let pluginName = origin || "genericAuthPlugin";
15
- let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];
5
+ const getUserTokenHandler: Handler<FlinkContext<genericAuthContext>, UserTokenRes> = async ({ ctx, req, origin }) => {
6
+ let pluginName = origin || "genericAuthPlugin";
7
+ let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];
16
8
 
17
- const user = await repo.getById(req.user._id);
18
- if (user == null) {
19
- return notFound("User not found");
20
- }
21
- if (ctx.auth == null) {
22
- return internalServerError();
23
- }
9
+ const user = await repo.getById(req.user._id);
10
+ if (user == null) {
11
+ return notFound("User not found");
12
+ }
13
+ if (ctx.auth == null) {
14
+ return internalServerError();
15
+ }
24
16
 
25
- const token = await ctx.auth.createToken(
26
- { username: user.username.toLowerCase(), _id: user._id },
27
- user.roles
28
- );
17
+ const token = await ctx.auth.createToken({ username: user.username.toLowerCase(), _id: user._id }, user.roles);
29
18
 
30
- return { data: { token: token } };
19
+ return { data: { token: token } };
31
20
  };
32
21
 
33
22
  export default getUserTokenHandler;
package/src/init.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { FlinkApp, HttpMethod, ExpressRequest, ExpressResponse } from "@flink-app/flink";
1
+ import { FlinkApp, HttpMethod, ExpressRequest, ExpressResponse, loadPluginSchemas } from "@flink-app/flink";
2
2
  import * as userLoginHandler from "./handlers/UserLogin";
3
3
  import * as userLoginByTokenHandler from "./handlers/UserLoginByToken";
4
4
  import * as userCreateHandler from "./handlers/UserCreate";
@@ -21,6 +21,17 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
21
21
 
22
22
  if (options.baseUrl == null) options.baseUrl = "/user";
23
23
 
24
+ // Load plugin schemas and register them for $ref resolution
25
+ const pluginId = options.pluginId || "genericAuth";
26
+ const pluginSchemas = loadPluginSchemas("@flink-app/generic-auth-plugin");
27
+ const allSchemas = pluginSchemas.getAllSchemas(pluginId);
28
+ if (Object.keys(allSchemas).length > 0) {
29
+ app.registerSchemas(pluginId, allSchemas);
30
+ }
31
+
32
+ /** Helper to get prefixed handler schemas by file path */
33
+ const schemas = (filePath: string) => pluginSchemas.getHandlerSchemas(pluginId, filePath);
34
+
24
35
  if (options.enableRoutes) {
25
36
  if (options.enableUserLogin) {
26
37
  app.addHandler(userLoginHandler, {
@@ -28,6 +39,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
28
39
  path: options.baseUrl + "/login",
29
40
  docs: "Authenticates a user",
30
41
  origin: options.pluginId,
42
+ ...schemas("src/handlers/UserLogin.ts"),
31
43
  });
32
44
  }
33
45
  if (options.sms) {
@@ -36,6 +48,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
36
48
  path: options.baseUrl + "/login-by-token",
37
49
  docs: "Authenticates a user by token",
38
50
  origin: options.pluginId,
51
+ ...schemas("src/handlers/UserLoginByToken.ts"),
39
52
  });
40
53
  }
41
54
  if (options.enableUserCreation) {
@@ -44,6 +57,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
44
57
  path: options.baseUrl + "/create",
45
58
  docs: "Creates a new user",
46
59
  origin: options.pluginId,
60
+ ...schemas("src/handlers/UserCreate.ts"),
47
61
  });
48
62
  }
49
63
 
@@ -53,6 +67,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
53
67
  docs: "Gets the user profile",
54
68
  permissions: "authenticated",
55
69
  origin: options.pluginId,
70
+ ...schemas("src/handlers/UserProfileGet.ts"),
56
71
  });
57
72
 
58
73
  app.addHandler(getUserTokenHandler, {
@@ -61,6 +76,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
61
76
  docs: "Gets a refreshed token for the user",
62
77
  permissions: "authenticated",
63
78
  origin: options.pluginId,
79
+ ...schemas("src/handlers/UserToken.ts"),
64
80
  });
65
81
 
66
82
  if (options.enableProfileUpdate) {
@@ -70,6 +86,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
70
86
  docs: "Updates the user profile",
71
87
  permissions: "authenticated",
72
88
  origin: options.pluginId,
89
+ ...schemas("src/handlers/UserProfilePut.ts"),
73
90
  });
74
91
  }
75
92
 
@@ -80,6 +97,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
80
97
  docs: "Updates the user password",
81
98
  permissions: "authenticated",
82
99
  origin: options.pluginId,
100
+ ...schemas("src/handlers/UserPasswordPut.ts"),
83
101
  });
84
102
  }
85
103
 
@@ -89,6 +107,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
89
107
  path: options.baseUrl + "/password/reset",
90
108
  docs: "Start the password reset process for a user",
91
109
  origin: options.pluginId,
110
+ ...schemas("src/handlers/UserPasswordResetStart.ts"),
92
111
  });
93
112
 
94
113
  app.addHandler(postPasswordResetCompleteHandler, {
@@ -96,6 +115,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
96
115
  path: options.baseUrl + "/password/reset/complete",
97
116
  docs: "Completes a password reset for a user",
98
117
  origin: options.pluginId,
118
+ ...schemas("src/handlers/UserPasswordResetComplete.ts"),
99
119
  });
100
120
 
101
121
  if (options.passwordResetSettings?.enablePasswordResetForm) {
@@ -122,6 +142,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
122
142
  docs: "Register a push notification on current user",
123
143
  permissions: "authenticated",
124
144
  origin: options.pluginId,
145
+ ...schemas("src/handlers/UserPushRegisterToken.ts"),
125
146
  });
126
147
 
127
148
  app.addHandler(postUserRemoveTokenHandler, {
@@ -130,6 +151,7 @@ export function init(app: FlinkApp<any>, options: GenericAuthPluginOptions) {
130
151
  docs: "Removes a push notification token from current user",
131
152
  permissions: "authenticated",
132
153
  origin: options.pluginId,
154
+ ...schemas("src/handlers/UserPushRemoveToken.ts"),
133
155
  });
134
156
  }
135
157
  }
package/tsconfig.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "target": "es5",
4
4
  "lib": ["esnext", "es2016"],
5
5
  "allowJs": true,
6
- "skipLibCheck": false,
6
+ "skipLibCheck": true,
7
7
  "esModuleInterop": true,
8
8
  "allowSyntheticDefaultImports": true,
9
9
  "strict": true,
@@ -1 +0,0 @@
1
- // Generated Sun Feb 01 2026 17:37:47 GMT+0100 (Central European Standard Time)