@flink-app/generic-auth-plugin 2.0.0-alpha.55 → 2.0.0-alpha.57
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.
- package/.flink/generatedAgents.ts +1 -1
- package/.flink/generatedHandlers.ts +1 -1
- package/.flink/generatedJobs.ts +1 -1
- package/.flink/generatedRepos.ts +1 -1
- package/.flink/generatedTools.ts +1 -1
- package/.flink/start.ts +1 -1
- package/CHANGELOG.md +33 -0
- package/dist/.flink/generatedAgents.js +13 -6
- package/dist/.flink/generatedAgents.js.map +1 -0
- package/dist/.flink/generatedHandlers.js +13 -6
- package/dist/.flink/generatedHandlers.js.map +1 -0
- package/dist/.flink/generatedJobs.js +13 -6
- package/dist/.flink/generatedJobs.js.map +1 -0
- package/dist/.flink/generatedRepos.js +13 -6
- package/dist/.flink/generatedRepos.js.map +1 -0
- package/dist/.flink/generatedTools.js +13 -6
- package/dist/.flink/generatedTools.js.map +1 -0
- package/dist/.flink/schema-manifest.json +588 -0
- package/dist/.flink/schemas/schemas.js +1 -1
- package/dist/.flink/start.js +12 -3
- package/dist/.flink/start.js.map +1 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/src/coreFunctions.js +356 -412
- package/dist/src/coreFunctions.js.map +1 -0
- package/dist/src/genericAuthContext.js +3 -1
- package/dist/src/genericAuthContext.js.map +1 -0
- package/dist/src/genericAuthPluginOptions.js +3 -1
- package/dist/src/genericAuthPluginOptions.js.map +1 -0
- package/dist/src/handlers/Management/DeleteUserByUserid.d.ts +1 -1
- package/dist/src/handlers/Management/DeleteUserByUserid.js +21 -60
- package/dist/src/handlers/Management/DeleteUserByUserid.js.map +1 -0
- package/dist/src/handlers/Management/GetSchema.d.ts +1 -1
- package/dist/src/handlers/Management/GetSchema.js +16 -50
- package/dist/src/handlers/Management/GetSchema.js.map +1 -0
- package/dist/src/handlers/Management/GetUser.d.ts +1 -1
- package/dist/src/handlers/Management/GetUser.js +25 -59
- package/dist/src/handlers/Management/GetUser.js.map +1 -0
- package/dist/src/handlers/Management/GetUserByUserid.d.ts +1 -1
- package/dist/src/handlers/Management/GetUserByUserid.js +60 -71
- package/dist/src/handlers/Management/GetUserByUserid.js.map +1 -0
- package/dist/src/handlers/Management/GetUserViewByUserid.d.ts +1 -1
- package/dist/src/handlers/Management/GetUserViewByUserid.js +35 -74
- package/dist/src/handlers/Management/GetUserViewByUserid.js.map +1 -0
- package/dist/src/handlers/Management/PutUserPasswordByUserid.d.ts +1 -1
- package/dist/src/handlers/Management/PutUserPasswordByUserid.js +37 -85
- package/dist/src/handlers/Management/PutUserPasswordByUserid.js.map +1 -0
- package/dist/src/handlers/Management/PutUserProfileByUserid.d.ts +1 -1
- package/dist/src/handlers/Management/PutUserProfileByUserid.js +27 -70
- package/dist/src/handlers/Management/PutUserProfileByUserid.js.map +1 -0
- package/dist/src/handlers/Management/PutUserProfileByUseridAppend.d.ts +1 -1
- package/dist/src/handlers/Management/PutUserProfileByUseridAppend.js +53 -76
- package/dist/src/handlers/Management/PutUserProfileByUseridAppend.js.map +1 -0
- package/dist/src/handlers/Management/PutUserRolesByUserid.d.ts +1 -1
- package/dist/src/handlers/Management/PutUserRolesByUserid.js +24 -63
- package/dist/src/handlers/Management/PutUserRolesByUserid.js.map +1 -0
- package/dist/src/handlers/Management/PutUserUsernameByUserid.d.ts +1 -1
- package/dist/src/handlers/Management/PutUserUsernameByUserid.js +31 -72
- package/dist/src/handlers/Management/PutUserUsernameByUserid.js.map +1 -0
- package/dist/src/handlers/UserCreate.d.ts +1 -1
- package/dist/src/handlers/UserCreate.js +44 -84
- package/dist/src/handlers/UserCreate.js.map +1 -0
- package/dist/src/handlers/UserLogin.d.ts +1 -1
- package/dist/src/handlers/UserLogin.js +45 -88
- package/dist/src/handlers/UserLogin.js.map +1 -0
- package/dist/src/handlers/UserLoginByToken.d.ts +1 -1
- package/dist/src/handlers/UserLoginByToken.js +24 -63
- package/dist/src/handlers/UserLoginByToken.js.map +1 -0
- package/dist/src/handlers/UserPasswordPut.d.ts +1 -1
- package/dist/src/handlers/UserPasswordPut.js +24 -60
- package/dist/src/handlers/UserPasswordPut.js.map +1 -0
- package/dist/src/handlers/UserPasswordResetComplete.d.ts +1 -1
- package/dist/src/handlers/UserPasswordResetComplete.js +30 -66
- package/dist/src/handlers/UserPasswordResetComplete.js.map +1 -0
- package/dist/src/handlers/UserPasswordResetForm.d.ts +1 -1
- package/dist/src/handlers/UserPasswordResetForm.js +155 -110
- package/dist/src/handlers/UserPasswordResetForm.js.map +1 -0
- package/dist/src/handlers/UserPasswordResetStart.d.ts +1 -1
- package/dist/src/handlers/UserPasswordResetStart.js +66 -95
- package/dist/src/handlers/UserPasswordResetStart.js.map +1 -0
- package/dist/src/handlers/UserProfileGet.d.ts +1 -1
- package/dist/src/handlers/UserProfileGet.js +21 -60
- package/dist/src/handlers/UserProfileGet.js.map +1 -0
- package/dist/src/handlers/UserProfilePut.d.ts +1 -1
- package/dist/src/handlers/UserProfilePut.js +55 -81
- package/dist/src/handlers/UserProfilePut.js.map +1 -0
- package/dist/src/handlers/UserPushRegisterToken.d.ts +1 -1
- package/dist/src/handlers/UserPushRegisterToken.js +119 -118
- package/dist/src/handlers/UserPushRegisterToken.js.map +1 -0
- package/dist/src/handlers/UserPushRemoveToken.d.ts +1 -1
- package/dist/src/handlers/UserPushRemoveToken.js +26 -63
- package/dist/src/handlers/UserPushRemoveToken.js.map +1 -0
- package/dist/src/handlers/UserToken.d.ts +1 -1
- package/dist/src/handlers/UserToken.js +29 -63
- package/dist/src/handlers/UserToken.js.map +1 -0
- package/dist/src/index.js +133 -50
- package/dist/src/index.js.map +1 -0
- package/dist/src/init.js +160 -101
- package/dist/src/init.js.map +1 -0
- package/dist/src/management.js +109 -86
- package/dist/src/management.js.map +1 -0
- package/dist/src/schemas/Management/DeleteUserByUseridReq.js +3 -1
- package/dist/src/schemas/Management/DeleteUserByUseridReq.js.map +1 -0
- package/dist/src/schemas/Management/DeleteUserByUseridRes.js +3 -1
- package/dist/src/schemas/Management/DeleteUserByUseridRes.js.map +1 -0
- package/dist/src/schemas/Management/GetUserByUseridReq.js +3 -1
- package/dist/src/schemas/Management/GetUserByUseridReq.js.map +1 -0
- package/dist/src/schemas/Management/GetUserByUseridRes.js +3 -1
- package/dist/src/schemas/Management/GetUserByUseridRes.js.map +1 -0
- package/dist/src/schemas/Management/GetUserReq.js +3 -1
- package/dist/src/schemas/Management/GetUserReq.js.map +1 -0
- package/dist/src/schemas/Management/GetUserRes.js +3 -1
- package/dist/src/schemas/Management/GetUserRes.js.map +1 -0
- package/dist/src/schemas/Management/GetUserViewByUseridReq.js +3 -1
- package/dist/src/schemas/Management/GetUserViewByUseridReq.js.map +1 -0
- package/dist/src/schemas/Management/GetUserViewByUseridRes.js +3 -1
- package/dist/src/schemas/Management/GetUserViewByUseridRes.js.map +1 -0
- package/dist/src/schemas/Management/PutUserPasswordByUseridReq.js +3 -1
- package/dist/src/schemas/Management/PutUserPasswordByUseridReq.js.map +1 -0
- package/dist/src/schemas/Management/PutUserPasswordByUseridRes.js +3 -1
- package/dist/src/schemas/Management/PutUserPasswordByUseridRes.js.map +1 -0
- package/dist/src/schemas/Management/PutUserProfileByUseridReq.js +3 -1
- package/dist/src/schemas/Management/PutUserProfileByUseridReq.js.map +1 -0
- package/dist/src/schemas/Management/PutUserProfileByUseridRes.js +3 -1
- package/dist/src/schemas/Management/PutUserProfileByUseridRes.js.map +1 -0
- package/dist/src/schemas/Management/PutUserRolesByUseridReq.js +3 -1
- package/dist/src/schemas/Management/PutUserRolesByUseridReq.js.map +1 -0
- package/dist/src/schemas/Management/PutUserRolesByUseridRes.js +3 -1
- package/dist/src/schemas/Management/PutUserRolesByUseridRes.js.map +1 -0
- package/dist/src/schemas/Management/PutUserUsernameByUseridReq.js +3 -1
- package/dist/src/schemas/Management/PutUserUsernameByUseridReq.js.map +1 -0
- package/dist/src/schemas/Management/PutUserUsernameByUseridRes.js +3 -1
- package/dist/src/schemas/Management/PutUserUsernameByUseridRes.js.map +1 -0
- package/dist/src/schemas/PushNotificationToken.js +3 -1
- package/dist/src/schemas/PushNotificationToken.js.map +1 -0
- package/dist/src/schemas/PushNotificationTokenRes.js +3 -1
- package/dist/src/schemas/PushNotificationTokenRes.js.map +1 -0
- package/dist/src/schemas/User.js +3 -1
- package/dist/src/schemas/User.js.map +1 -0
- package/dist/src/schemas/UserCreateReq.js +3 -1
- package/dist/src/schemas/UserCreateReq.js.map +1 -0
- package/dist/src/schemas/UserCreateRes.js +3 -1
- package/dist/src/schemas/UserCreateRes.js.map +1 -0
- package/dist/src/schemas/UserLoginByTokenReq.js +3 -1
- package/dist/src/schemas/UserLoginByTokenReq.js.map +1 -0
- package/dist/src/schemas/UserLoginReq.js +3 -1
- package/dist/src/schemas/UserLoginReq.js.map +1 -0
- package/dist/src/schemas/UserLoginRes.js +3 -1
- package/dist/src/schemas/UserLoginRes.js.map +1 -0
- package/dist/src/schemas/UserPasswordChangeReq.js +3 -1
- package/dist/src/schemas/UserPasswordChangeReq.js.map +1 -0
- package/dist/src/schemas/UserPasswordChangeRes.js +3 -1
- package/dist/src/schemas/UserPasswordChangeRes.js.map +1 -0
- package/dist/src/schemas/UserPasswordResetCompleteReq.js +3 -1
- package/dist/src/schemas/UserPasswordResetCompleteReq.js.map +1 -0
- package/dist/src/schemas/UserPasswordResetCompleteRes.js +3 -1
- package/dist/src/schemas/UserPasswordResetCompleteRes.js.map +1 -0
- package/dist/src/schemas/UserPasswordResetSettings.js +3 -1
- package/dist/src/schemas/UserPasswordResetSettings.js.map +1 -0
- package/dist/src/schemas/UserPasswordResetStartReq.js +3 -1
- package/dist/src/schemas/UserPasswordResetStartReq.js.map +1 -0
- package/dist/src/schemas/UserPasswordResetStartRes.js +3 -1
- package/dist/src/schemas/UserPasswordResetStartRes.js.map +1 -0
- package/dist/src/schemas/UserPasswordResetStartResPublic.js +3 -1
- package/dist/src/schemas/UserPasswordResetStartResPublic.js.map +1 -0
- package/dist/src/schemas/UserProfile.js +3 -1
- package/dist/src/schemas/UserProfile.js.map +1 -0
- package/dist/src/schemas/UserTokenRes.js +3 -1
- package/dist/src/schemas/UserTokenRes.js.map +1 -0
- package/package.json +7 -7
- package/src/handlers/Management/DeleteUserByUserid.ts +10 -14
- package/src/handlers/Management/GetSchema.ts +6 -12
- package/src/handlers/Management/GetUser.ts +11 -15
- package/src/handlers/Management/GetUserByUserid.ts +13 -23
- package/src/handlers/Management/PutUserPasswordByUserid.ts +39 -45
- package/src/handlers/Management/PutUserProfileByUserid.ts +21 -27
- package/src/handlers/Management/PutUserProfileByUseridAppend.ts +22 -28
- package/src/handlers/Management/PutUserRolesByUserid.ts +17 -23
- package/src/handlers/Management/PutUserUsernameByUserid.ts +24 -31
- package/src/handlers/UserLoginByToken.ts +20 -27
- package/src/handlers/UserPasswordPut.ts +17 -24
- package/src/handlers/UserPasswordResetComplete.ts +31 -40
- package/src/handlers/UserPasswordResetForm.ts +25 -29
- package/src/handlers/UserPasswordResetStart.ts +11 -3
- package/src/handlers/UserProfileGet.ts +11 -14
- package/src/handlers/UserPushRemoveToken.ts +12 -18
- package/src/handlers/UserToken.ts +13 -24
- package/src/init.ts +23 -1
- package/.flink/schemas/schemas.ts +0 -1
|
@@ -1,66 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
36
9
|
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
pluginName = origin || "genericAuthPlugin";
|
|
48
|
-
repo = ctx.repos[ctx.plugins[pluginName].repoName];
|
|
49
|
-
return [4 /*yield*/, ctx.plugins.genericAuthPlugin.loginByToken(repo, ctx.auth, req.body.token, req.body.code, ctx.plugins[pluginName].smsOptions.jwtToken)];
|
|
50
|
-
case 1:
|
|
51
|
-
loginRespons = _c.sent();
|
|
52
|
-
if (loginRespons.status != "success") {
|
|
53
|
-
switch (loginRespons.status) {
|
|
54
|
-
case "failed":
|
|
55
|
-
return [2 /*return*/, (0, flink_1.unauthorized)("Invalid token or code", loginRespons.status)];
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return [2 /*return*/, {
|
|
59
|
-
data: loginRespons,
|
|
60
|
-
status: 200,
|
|
61
|
-
}];
|
|
10
|
+
});
|
|
11
|
+
const _flink = require("@flink-app/flink");
|
|
12
|
+
const userLoginHandler = async ({ ctx, req, origin })=>{
|
|
13
|
+
let pluginName = origin || "genericAuthPlugin";
|
|
14
|
+
let repo = ctx.repos[ctx.plugins[pluginName].repoName];
|
|
15
|
+
const loginRespons = await ctx.plugins.genericAuthPlugin.loginByToken(repo, ctx.auth, req.body.token, req.body.code, ctx.plugins[pluginName].smsOptions.jwtToken);
|
|
16
|
+
if (loginRespons.status != "success") {
|
|
17
|
+
switch(loginRespons.status){
|
|
18
|
+
case "failed":
|
|
19
|
+
return (0, _flink.unauthorized)("Invalid token or code", loginRespons.status);
|
|
62
20
|
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
data: loginRespons,
|
|
24
|
+
status: 200
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
const _default = userLoginHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/UserLoginByToken.ts"],"sourcesContent":["import { FlinkContext, Handler, unauthorized } from \"@flink-app/flink\";\nimport { JwtAuthPlugin } from \"@flink-app/jwt-auth-plugin\";\nimport { genericAuthContext } from \"../genericAuthContext\";\nimport { UserLoginByTokenReq } from \"../schemas/UserLoginByTokenReq\";\nimport { UserLoginRes } from \"../schemas/UserLoginRes\";\n\nconst userLoginHandler: Handler<FlinkContext<genericAuthContext>, UserLoginByTokenReq, UserLoginRes> = async ({ ctx, req, origin }) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n\n const loginRespons = await ctx.plugins.genericAuthPlugin.loginByToken(\n repo,\n <JwtAuthPlugin>ctx.auth,\n req.body.token,\n req.body.code,\n (<any>ctx.plugins)[pluginName].smsOptions.jwtToken\n );\n\n if (loginRespons.status != \"success\") {\n switch (loginRespons.status) {\n case \"failed\":\n return unauthorized(\"Invalid token or code\", loginRespons.status);\n }\n }\n\n return {\n data: loginRespons,\n status: 200,\n };\n};\n\nexport default userLoginHandler;\n"],"names":["userLoginHandler","ctx","req","origin","pluginName","repo","repos","plugins","repoName","loginRespons","genericAuthPlugin","loginByToken","auth","body","token","code","smsOptions","jwtToken","status","unauthorized","data"],"mappings":";;;;+BA+BA;;;eAAA;;;uBA/BoD;AAMpD,MAAMA,mBAAiG,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAEC,MAAM,EAAE;IAC9H,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAE7D,MAAMC,eAAe,MAAMR,IAAIM,OAAO,CAACG,iBAAiB,CAACC,YAAY,CACjEN,MACeJ,IAAIW,IAAI,EACvBV,IAAIW,IAAI,CAACC,KAAK,EACdZ,IAAIW,IAAI,CAACE,IAAI,EACb,AAAMd,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACY,UAAU,CAACC,QAAQ;IAGtD,IAAIR,aAAaS,MAAM,IAAI,WAAW;QAClC,OAAQT,aAAaS,MAAM;YACvB,KAAK;gBACD,OAAOC,IAAAA,mBAAY,EAAC,yBAAyBV,aAAaS,MAAM;QACxE;IACJ;IAEA,OAAO;QACHE,MAAMX;QACNS,QAAQ;IACZ;AACJ;MAEA,WAAelB"}
|
|
@@ -4,4 +4,4 @@ import { UserPasswordChangeReq } from "../schemas/UserPasswordChangeReq";
|
|
|
4
4
|
import { UserPasswordChangeRes } from "../schemas/UserPasswordChangeRes";
|
|
5
5
|
declare const putUserPasswordHandler: Handler<FlinkContext<genericAuthContext>, UserPasswordChangeReq, UserPasswordChangeRes>;
|
|
6
6
|
export default putUserPasswordHandler;
|
|
7
|
-
export declare const __assumedHttpMethod = "", __file = "UserPasswordPut.ts", __query: never[], __params: never[];
|
|
7
|
+
export declare const __assumedHttpMethod = "", __file = "src/handlers/UserPasswordPut.ts", __query: never[], __params: never[];
|
|
@@ -1,63 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _flink = require("@flink-app/flink");
|
|
12
|
+
const putUserPasswordHandler = async ({ ctx, req, origin })=>{
|
|
13
|
+
let pluginName = origin || "genericAuthPlugin";
|
|
14
|
+
let repo = ctx.repos[ctx.plugins[pluginName].repoName];
|
|
15
|
+
const resp = await ctx.plugins.genericAuthPlugin.changePassword(repo, ctx.auth, req.user._id, req.body.password, ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod);
|
|
16
|
+
switch(resp.status){
|
|
17
|
+
case "failed":
|
|
18
|
+
return (0, _flink.badRequest)("Password could not be changed on this user", resp.status);
|
|
19
|
+
case "passwordError":
|
|
20
|
+
return (0, _flink.badRequest)("Invalid password", resp.status);
|
|
36
21
|
}
|
|
22
|
+
return {
|
|
23
|
+
data: resp,
|
|
24
|
+
status: 200
|
|
25
|
+
};
|
|
37
26
|
};
|
|
38
|
-
|
|
39
|
-
exports.__params = exports.__query = exports.__file = exports.__assumedHttpMethod = void 0;
|
|
40
|
-
var flink_1 = require("@flink-app/flink");
|
|
41
|
-
var putUserPasswordHandler = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
42
|
-
var pluginName, repo, resp;
|
|
43
|
-
var ctx = _b.ctx, req = _b.req, origin = _b.origin;
|
|
44
|
-
return __generator(this, function (_c) {
|
|
45
|
-
switch (_c.label) {
|
|
46
|
-
case 0:
|
|
47
|
-
pluginName = origin || "genericAuthPlugin";
|
|
48
|
-
repo = ctx.repos[ctx.plugins[pluginName].repoName];
|
|
49
|
-
return [4 /*yield*/, ctx.plugins.genericAuthPlugin.changePassword(repo, ctx.auth, req.user._id, req.body.password, ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod)];
|
|
50
|
-
case 1:
|
|
51
|
-
resp = _c.sent();
|
|
52
|
-
switch (resp.status) {
|
|
53
|
-
case "failed":
|
|
54
|
-
return [2 /*return*/, (0, flink_1.badRequest)("Password could not be changed on this user", resp.status)];
|
|
55
|
-
case "passwordError":
|
|
56
|
-
return [2 /*return*/, (0, flink_1.badRequest)("Invalid password", resp.status)];
|
|
57
|
-
}
|
|
58
|
-
return [2 /*return*/, { data: resp, status: 200 }];
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}); };
|
|
62
|
-
exports.default = putUserPasswordHandler;
|
|
63
|
-
exports.__assumedHttpMethod = "", exports.__file = "UserPasswordPut.ts", exports.__query = [], exports.__params = [];
|
|
27
|
+
const _default = putUserPasswordHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/UserPasswordPut.ts"],"sourcesContent":["import { badRequest, FlinkContext, Handler } from \"@flink-app/flink\";\nimport { JwtAuthPlugin } from \"@flink-app/jwt-auth-plugin\";\nimport { genericAuthContext } from \"../genericAuthContext\";\nimport { UserPasswordChangeReq } from \"../schemas/UserPasswordChangeReq\";\nimport { UserPasswordChangeRes } from \"../schemas/UserPasswordChangeRes\";\n\nconst putUserPasswordHandler: Handler<FlinkContext<genericAuthContext>, UserPasswordChangeReq, UserPasswordChangeRes> = async ({ ctx, req, origin }) => {\n let pluginName = origin || \"genericAuthPlugin\";\n let repo = ctx.repos[(<any>ctx.plugins)[pluginName].repoName];\n const resp = await ctx.plugins.genericAuthPlugin.changePassword(\n repo,\n <JwtAuthPlugin>ctx.auth,\n req.user._id,\n req.body.password,\n ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod\n );\n\n switch (resp.status) {\n case \"failed\":\n return badRequest(\"Password could not be changed on this user\", resp.status);\n case \"passwordError\":\n return badRequest(\"Invalid password\", resp.status);\n }\n\n return { data: resp, status: 200 };\n};\n\nexport default putUserPasswordHandler;\n"],"names":["putUserPasswordHandler","ctx","req","origin","pluginName","repo","repos","plugins","repoName","resp","genericAuthPlugin","changePassword","auth","user","_id","body","password","createPasswordHashAndSaltMethod","status","badRequest","data"],"mappings":";;;;+BA2BA;;;eAAA;;;uBA3BkD;AAMlD,MAAMA,yBAAkH,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAEC,MAAM,EAAE;IAC/I,IAAIC,aAAaD,UAAU;IAC3B,IAAIE,OAAOJ,IAAIK,KAAK,CAAC,AAAML,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACI,QAAQ,CAAC;IAC7D,MAAMC,OAAO,MAAMR,IAAIM,OAAO,CAACG,iBAAiB,CAACC,cAAc,CAC3DN,MACeJ,IAAIW,IAAI,EACvBV,IAAIW,IAAI,CAACC,GAAG,EACZZ,IAAIa,IAAI,CAACC,QAAQ,EACjBf,IAAIM,OAAO,CAACG,iBAAiB,CAACO,+BAA+B;IAGjE,OAAQR,KAAKS,MAAM;QACf,KAAK;YACD,OAAOC,IAAAA,iBAAU,EAAC,8CAA8CV,KAAKS,MAAM;QAC/E,KAAK;YACD,OAAOC,IAAAA,iBAAU,EAAC,oBAAoBV,KAAKS,MAAM;IACzD;IAEA,OAAO;QAAEE,MAAMX;QAAMS,QAAQ;IAAI;AACrC;MAEA,WAAelB"}
|
|
@@ -4,4 +4,4 @@ import { UserPasswordResetCompleteReq } from "../schemas/UserPasswordResetComple
|
|
|
4
4
|
import { UserPasswordResetCompleteRes } from "../schemas/UserPasswordResetCompleteRes";
|
|
5
5
|
declare const postPasswordResetCompleteHandler: Handler<FlinkContext<genericAuthContext>, UserPasswordResetCompleteReq, UserPasswordResetCompleteRes>;
|
|
6
6
|
export default postPasswordResetCompleteHandler;
|
|
7
|
-
export declare const __assumedHttpMethod = "", __file = "UserPasswordResetComplete.ts", __query: never[], __params: never[];
|
|
7
|
+
export declare const __assumedHttpMethod = "", __file = "src/handlers/UserPasswordResetComplete.ts", __query: never[], __params: never[];
|
|
@@ -1,69 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _flink = require("@flink-app/flink");
|
|
12
|
+
const postPasswordResetCompleteHandler = async ({ ctx, req, origin })=>{
|
|
13
|
+
let pluginName = origin || "genericAuthPlugin";
|
|
14
|
+
let repo = ctx.repos[ctx.plugins[pluginName].repoName];
|
|
15
|
+
if (ctx.plugins.genericAuthPlugin.passwordResetSettings == null) {
|
|
16
|
+
return (0, _flink.internalServerError)("Password reset settings is needed to use password-reset");
|
|
17
|
+
}
|
|
18
|
+
const { jwtSecret/*, numberOfDigits, lifeTime*/ } = ctx.plugins[pluginName].passwordResetSettings.code;
|
|
19
|
+
const resp = await ctx.plugins.genericAuthPlugin.passwordResetComplete(repo, ctx.auth, jwtSecret, req.body.passwordResetToken, req.body.code, req.body.password, ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod, ctx.plugins.genericAuthPlugin.passwordResetSettings.passwordResetReusableTokens);
|
|
20
|
+
switch(resp.status){
|
|
21
|
+
case "invalidCode":
|
|
22
|
+
return (0, _flink.badRequest)("Invalid validation code", resp.status);
|
|
23
|
+
case "passwordError":
|
|
24
|
+
return (0, _flink.badRequest)("Invalid password", resp.status);
|
|
25
|
+
case "userNotFound":
|
|
26
|
+
return (0, _flink.notFound)("User not found", resp.status);
|
|
36
27
|
}
|
|
28
|
+
return {
|
|
29
|
+
data: resp,
|
|
30
|
+
status: 200
|
|
31
|
+
};
|
|
37
32
|
};
|
|
38
|
-
|
|
39
|
-
exports.__params = exports.__query = exports.__file = exports.__assumedHttpMethod = void 0;
|
|
40
|
-
var flink_1 = require("@flink-app/flink");
|
|
41
|
-
var postPasswordResetCompleteHandler = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
42
|
-
var pluginName, repo, jwtSecret /*, numberOfDigits, lifeTime*/, resp;
|
|
43
|
-
var ctx = _b.ctx, req = _b.req, origin = _b.origin;
|
|
44
|
-
return __generator(this, function (_c) {
|
|
45
|
-
switch (_c.label) {
|
|
46
|
-
case 0:
|
|
47
|
-
pluginName = origin || "genericAuthPlugin";
|
|
48
|
-
repo = ctx.repos[ctx.plugins[pluginName].repoName];
|
|
49
|
-
if (ctx.plugins.genericAuthPlugin.passwordResetSettings == null) {
|
|
50
|
-
return [2 /*return*/, (0, flink_1.internalServerError)("Password reset settings is needed to use password-reset")];
|
|
51
|
-
}
|
|
52
|
-
jwtSecret = ctx.plugins[pluginName].passwordResetSettings.code.jwtSecret;
|
|
53
|
-
return [4 /*yield*/, ctx.plugins.genericAuthPlugin.passwordResetComplete(repo, ctx.auth, jwtSecret, req.body.passwordResetToken, req.body.code, req.body.password, ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod, ctx.plugins.genericAuthPlugin.passwordResetSettings.passwordResetReusableTokens)];
|
|
54
|
-
case 1:
|
|
55
|
-
resp = _c.sent();
|
|
56
|
-
switch (resp.status) {
|
|
57
|
-
case "invalidCode":
|
|
58
|
-
return [2 /*return*/, (0, flink_1.badRequest)("Invalid validation code", resp.status)];
|
|
59
|
-
case "passwordError":
|
|
60
|
-
return [2 /*return*/, (0, flink_1.badRequest)("Invalid password", resp.status)];
|
|
61
|
-
case "userNotFound":
|
|
62
|
-
return [2 /*return*/, (0, flink_1.notFound)("User not found", resp.status)];
|
|
63
|
-
}
|
|
64
|
-
return [2 /*return*/, { data: resp, status: 200 }];
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}); };
|
|
68
|
-
exports.default = postPasswordResetCompleteHandler;
|
|
69
|
-
exports.__assumedHttpMethod = "", exports.__file = "UserPasswordResetComplete.ts", exports.__query = [], exports.__params = [];
|
|
33
|
+
const _default = postPasswordResetCompleteHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/joel/projects/flink/flink-framework/packages/generic-auth-plugin/src/handlers/UserPasswordResetComplete.ts"],"sourcesContent":["import { badRequest, FlinkContext, Handler, internalServerError, notFound } from \"@flink-app/flink\";\nimport { JwtAuthPlugin } from \"@flink-app/jwt-auth-plugin\";\nimport { genericAuthContext } from \"../genericAuthContext\";\nimport { UserPasswordResetCompleteReq } from \"../schemas/UserPasswordResetCompleteReq\";\nimport { UserPasswordResetCompleteRes } from \"../schemas/UserPasswordResetCompleteRes\";\n\nconst postPasswordResetCompleteHandler: Handler<FlinkContext<genericAuthContext>, UserPasswordResetCompleteReq, UserPasswordResetCompleteRes> = 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 if (ctx.plugins.genericAuthPlugin.passwordResetSettings == null) {\n return internalServerError(\"Password reset settings is needed to use password-reset\");\n }\n\n const { jwtSecret /*, numberOfDigits, lifeTime*/ } = (<any>ctx.plugins)[pluginName].passwordResetSettings.code;\n\n const resp = await ctx.plugins.genericAuthPlugin.passwordResetComplete(\n repo,\n <JwtAuthPlugin>ctx.auth,\n jwtSecret,\n req.body.passwordResetToken,\n req.body.code,\n req.body.password,\n ctx.plugins.genericAuthPlugin.createPasswordHashAndSaltMethod,\n ctx.plugins.genericAuthPlugin.passwordResetSettings.passwordResetReusableTokens\n );\n\n switch (resp.status) {\n case \"invalidCode\":\n return badRequest(\"Invalid validation code\", resp.status);\n case \"passwordError\":\n return badRequest(\"Invalid password\", resp.status);\n case \"userNotFound\":\n return notFound(\"User not found\", resp.status);\n }\n return { data: resp, status: 200 };\n};\n\nexport default postPasswordResetCompleteHandler;\n"],"names":["postPasswordResetCompleteHandler","ctx","req","origin","pluginName","repo","repos","plugins","repoName","genericAuthPlugin","passwordResetSettings","internalServerError","jwtSecret","code","resp","passwordResetComplete","auth","body","passwordResetToken","password","createPasswordHashAndSaltMethod","passwordResetReusableTokens","status","badRequest","notFound","data"],"mappings":";;;;+BA0CA;;;eAAA;;;uBA1CiF;AAMjF,MAAMA,mCAA0I,OAAO,EACnJC,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,IAAIP,IAAIM,OAAO,CAACE,iBAAiB,CAACC,qBAAqB,IAAI,MAAM;QAC7D,OAAOC,IAAAA,0BAAmB,EAAC;IAC/B;IAEA,MAAM,EAAEC,SAAS,AAAC,4BAA4B,KAAI,GAAG,AAAMX,IAAIM,OAAO,AAAC,CAACH,WAAW,CAACM,qBAAqB,CAACG,IAAI;IAE9G,MAAMC,OAAO,MAAMb,IAAIM,OAAO,CAACE,iBAAiB,CAACM,qBAAqB,CAClEV,MACeJ,IAAIe,IAAI,EACvBJ,WACAV,IAAIe,IAAI,CAACC,kBAAkB,EAC3BhB,IAAIe,IAAI,CAACJ,IAAI,EACbX,IAAIe,IAAI,CAACE,QAAQ,EACjBlB,IAAIM,OAAO,CAACE,iBAAiB,CAACW,+BAA+B,EAC7DnB,IAAIM,OAAO,CAACE,iBAAiB,CAACC,qBAAqB,CAACW,2BAA2B;IAGnF,OAAQP,KAAKQ,MAAM;QACf,KAAK;YACD,OAAOC,IAAAA,iBAAU,EAAC,2BAA2BT,KAAKQ,MAAM;QAC5D,KAAK;YACD,OAAOC,IAAAA,iBAAU,EAAC,oBAAoBT,KAAKQ,MAAM;QACrD,KAAK;YACD,OAAOE,IAAAA,eAAQ,EAAC,kBAAkBV,KAAKQ,MAAM;IACrD;IACA,OAAO;QAAEG,MAAMX;QAAMQ,QAAQ;IAAI;AACrC;MAEA,WAAetB"}
|
|
@@ -7,4 +7,4 @@ export declare function resetPasswordFormScript(req: ExpressRequest, res: Expres
|
|
|
7
7
|
completeUrl: string;
|
|
8
8
|
}): Promise<void>;
|
|
9
9
|
export declare function resetPasswordFormCss(res: ExpressResponse): Promise<void>;
|
|
10
|
-
export declare const __assumedHttpMethod = "", __file = "UserPasswordResetForm.ts", __query: never[], __params: never[];
|
|
10
|
+
export declare const __assumedHttpMethod = "", __file = "src/handlers/UserPasswordResetForm.ts", __query: never[], __params: never[];
|
|
@@ -1,121 +1,166 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
9
|
});
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get handleUserPasswordResetForm () {
|
|
13
|
+
return handleUserPasswordResetForm;
|
|
14
|
+
},
|
|
15
|
+
get resetPasswordFormCss () {
|
|
16
|
+
return resetPasswordFormCss;
|
|
17
|
+
},
|
|
18
|
+
get resetPasswordFormScript () {
|
|
19
|
+
return resetPasswordFormScript;
|
|
36
20
|
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
exports.resetPasswordFormCss = resetPasswordFormCss;
|
|
46
|
-
var promises_1 = __importDefault(require("fs/promises"));
|
|
47
|
-
var flink_1 = require("@flink-app/flink");
|
|
48
|
-
var handlebars_1 = __importDefault(require("handlebars"));
|
|
49
|
-
var defaultTemplate = "<html>\n<head>\n <title>Password reset</title>\n <link rel=\"stylesheet\" href=\"form/style.css\" />\n <script src=\"form/script.js\" type=\"text/javascript\"></script>\n</head>\n<body>\n <form id=\"form\">\n <p>Please enter new password</p>\n <input type=\"password\" name=\"password\" placeholder=\"Enter new password\" />\n <input\n type=\"password\"\n name=\"confirmPassword\"\n placeholder=\"Confirm new password\"\n />\n <button id=\"submit-btn\">Submit</button>\n </form>\n <div id=\"success\">Password has been updated, please proceed to login.</div>\n</body>\n</html>\n";
|
|
50
|
-
var script = "\n window.onload = () => {\n const urlSearchParams = new URLSearchParams(window.location.search);\n const params = Object.fromEntries(urlSearchParams.entries());\n const { token, code } = params;\n\n if (!token) {\n alert(\"Missing token\");\n } else if (!code) {\n alert(\"Missing code\");\n }\n\n const submitBtnEl = document.getElementById(\"submit-btn\");\n const [passwordInputEl, confirmPasswordEl] =\n document.getElementsByTagName(\"input\");\n\n submitBtnEl.onclick = async (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!passwordInputEl.value) {\n return alert(\"Enter a new password\");\n } else if (passwordInputEl.value !== confirmPasswordEl.value) {\n return alert(\n \"Passwords does not match, make sure that new and confirmed passwords are the same\"\n );\n }\n\n const res = await window.fetch(\"{{completeUrl}}\", {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n passwordResetToken: token,\n code: code,\n password: passwordInputEl.value,\n }),\n });\n\n if (res.status > 399) {\n alert(\"Failed to set new password\");\n } else {\n document.getElementById(\"form\").style.display = \"none\";\n document.getElementById(\"success\").style.display = \"block\";\n }\n };\n };\n";
|
|
51
|
-
var style = " * {\n box-sizing: border-box;\n font-family: Arial, Helvetica, sans-serif;\n }\n\n p {\n margin: 0.5rem 0;\n }\n\n body {\n padding: 1rem;\n }\n\n form {\n display: block;\n max-width: 320px;\n }\n\n input {\n width: 100%;\n display: block;\n margin: 0.5rem 0;\n }\n\n #success {\n display: none;\n font-size: 1.2rem;\n color: rgb(0, 177, 115);\n max-width: 350px;\n }\n";
|
|
52
|
-
function handleUserPasswordResetForm(_req_1, res_1, _a) {
|
|
53
|
-
return __awaiter(this, arguments, void 0, function (_req, res, _b) {
|
|
54
|
-
var tpl, html;
|
|
55
|
-
var templateFile = _b.templateFile, completeUrl = _b.completeUrl;
|
|
56
|
-
return __generator(this, function (_c) {
|
|
57
|
-
switch (_c.label) {
|
|
58
|
-
case 0: return [4 /*yield*/, readTemplate(templateFile)];
|
|
59
|
-
case 1:
|
|
60
|
-
tpl = _c.sent();
|
|
61
|
-
html = handlebars_1.default.compile(tpl)({
|
|
62
|
-
completeUrl: completeUrl,
|
|
63
|
-
});
|
|
64
|
-
res.send(html);
|
|
65
|
-
return [2 /*return*/];
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
});
|
|
21
|
+
});
|
|
22
|
+
const _promises = /*#__PURE__*/ _interop_require_default(require("fs/promises"));
|
|
23
|
+
const _flink = require("@flink-app/flink");
|
|
24
|
+
const _handlebars = /*#__PURE__*/ _interop_require_default(require("handlebars"));
|
|
25
|
+
function _interop_require_default(obj) {
|
|
26
|
+
return obj && obj.__esModule ? obj : {
|
|
27
|
+
default: obj
|
|
28
|
+
};
|
|
69
29
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
30
|
+
const defaultTemplate = `<html>
|
|
31
|
+
<head>
|
|
32
|
+
<title>Password reset</title>
|
|
33
|
+
<link rel="stylesheet" href="form/style.css" />
|
|
34
|
+
<script src="form/script.js" type="text/javascript"></script>
|
|
35
|
+
</head>
|
|
36
|
+
<body>
|
|
37
|
+
<form id="form">
|
|
38
|
+
<p>Please enter new password</p>
|
|
39
|
+
<input type="password" name="password" placeholder="Enter new password" />
|
|
40
|
+
<input
|
|
41
|
+
type="password"
|
|
42
|
+
name="confirmPassword"
|
|
43
|
+
placeholder="Confirm new password"
|
|
44
|
+
/>
|
|
45
|
+
<button id="submit-btn">Submit</button>
|
|
46
|
+
</form>
|
|
47
|
+
<div id="success">Password has been updated, please proceed to login.</div>
|
|
48
|
+
</body>
|
|
49
|
+
</html>
|
|
50
|
+
`;
|
|
51
|
+
const script = `
|
|
52
|
+
window.onload = () => {
|
|
53
|
+
const urlSearchParams = new URLSearchParams(window.location.search);
|
|
54
|
+
const params = Object.fromEntries(urlSearchParams.entries());
|
|
55
|
+
const { token, code } = params;
|
|
56
|
+
|
|
57
|
+
if (!token) {
|
|
58
|
+
alert("Missing token");
|
|
59
|
+
} else if (!code) {
|
|
60
|
+
alert("Missing code");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const submitBtnEl = document.getElementById("submit-btn");
|
|
64
|
+
const [passwordInputEl, confirmPasswordEl] =
|
|
65
|
+
document.getElementsByTagName("input");
|
|
66
|
+
|
|
67
|
+
submitBtnEl.onclick = async (e) => {
|
|
68
|
+
e.preventDefault();
|
|
69
|
+
e.stopPropagation();
|
|
70
|
+
|
|
71
|
+
if (!passwordInputEl.value) {
|
|
72
|
+
return alert("Enter a new password");
|
|
73
|
+
} else if (passwordInputEl.value !== confirmPasswordEl.value) {
|
|
74
|
+
return alert(
|
|
75
|
+
"Passwords does not match, make sure that new and confirmed passwords are the same"
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const res = await window.fetch("{{completeUrl}}", {
|
|
80
|
+
method: "POST",
|
|
81
|
+
headers: {
|
|
82
|
+
Accept: "application/json",
|
|
83
|
+
"Content-Type": "application/json",
|
|
84
|
+
},
|
|
85
|
+
body: JSON.stringify({
|
|
86
|
+
passwordResetToken: token,
|
|
87
|
+
code: code,
|
|
88
|
+
password: passwordInputEl.value,
|
|
89
|
+
}),
|
|
79
90
|
});
|
|
91
|
+
|
|
92
|
+
if (res.status > 399) {
|
|
93
|
+
alert("Failed to set new password");
|
|
94
|
+
} else {
|
|
95
|
+
document.getElementById("form").style.display = "none";
|
|
96
|
+
document.getElementById("success").style.display = "block";
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
`;
|
|
101
|
+
const style = ` * {
|
|
102
|
+
box-sizing: border-box;
|
|
103
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
p {
|
|
107
|
+
margin: 0.5rem 0;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
body {
|
|
111
|
+
padding: 1rem;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
form {
|
|
115
|
+
display: block;
|
|
116
|
+
max-width: 320px;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
input {
|
|
120
|
+
width: 100%;
|
|
121
|
+
display: block;
|
|
122
|
+
margin: 0.5rem 0;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
#success {
|
|
126
|
+
display: none;
|
|
127
|
+
font-size: 1.2rem;
|
|
128
|
+
color: rgb(0, 177, 115);
|
|
129
|
+
max-width: 350px;
|
|
130
|
+
}
|
|
131
|
+
`;
|
|
132
|
+
async function handleUserPasswordResetForm(_req, res, { templateFile, completeUrl }) {
|
|
133
|
+
const tpl = await readTemplate(templateFile);
|
|
134
|
+
const html = _handlebars.default.compile(tpl)({
|
|
135
|
+
completeUrl
|
|
80
136
|
});
|
|
137
|
+
res.send(html);
|
|
81
138
|
}
|
|
82
|
-
function
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
res.send(style);
|
|
87
|
-
return [2 /*return*/];
|
|
88
|
-
});
|
|
139
|
+
async function resetPasswordFormScript(req, res, { completeUrl }) {
|
|
140
|
+
res.header("Content-Type", "application/javascript");
|
|
141
|
+
const js = _handlebars.default.compile(script)({
|
|
142
|
+
completeUrl
|
|
89
143
|
});
|
|
144
|
+
res.send(js);
|
|
90
145
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
buff = _a.sent();
|
|
106
|
-
cachedTemplate = buff.toString();
|
|
107
|
-
return [3 /*break*/, 4];
|
|
108
|
-
case 3:
|
|
109
|
-
err_1 = _a.sent();
|
|
110
|
-
flink_1.log.error("Failed reading template file for password reset", templateFilename, err_1);
|
|
111
|
-
throw err_1;
|
|
112
|
-
case 4: return [3 /*break*/, 6];
|
|
113
|
-
case 5:
|
|
114
|
-
cachedTemplate = defaultTemplate;
|
|
115
|
-
_a.label = 6;
|
|
116
|
-
case 6: return [2 /*return*/, cachedTemplate];
|
|
146
|
+
async function resetPasswordFormCss(res) {
|
|
147
|
+
res.header("Content-Type", "text/css");
|
|
148
|
+
res.send(style);
|
|
149
|
+
}
|
|
150
|
+
let cachedTemplate = "";
|
|
151
|
+
async function readTemplate(templateFilename) {
|
|
152
|
+
if (!cachedTemplate) {
|
|
153
|
+
if (templateFilename) {
|
|
154
|
+
try {
|
|
155
|
+
const buff = await _promises.default.readFile(templateFilename);
|
|
156
|
+
cachedTemplate = buff.toString();
|
|
157
|
+
} catch (err) {
|
|
158
|
+
_flink.log.error("Failed reading template file for password reset", templateFilename, err);
|
|
159
|
+
throw err;
|
|
117
160
|
}
|
|
118
|
-
}
|
|
119
|
-
|
|
161
|
+
} else {
|
|
162
|
+
cachedTemplate = defaultTemplate;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return cachedTemplate;
|
|
120
166
|
}
|
|
121
|
-
exports.__assumedHttpMethod = "", exports.__file = "UserPasswordResetForm.ts", exports.__query = [], exports.__params = [];
|