@flink-app/generic-auth-plugin 0.11.0 → 0.11.4-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.flink/generatedHandlers.ts +1 -1
- package/.flink/generatedJobs.ts +1 -1
- package/.flink/generatedRepos.ts +1 -1
- package/.flink/schemas/schemas.ts +1 -1
- package/.flink/start.ts +1 -1
- package/dist/.flink/generatedHandlers.js +1 -1
- package/dist/.flink/generatedJobs.js +1 -1
- package/dist/.flink/generatedRepos.js +1 -1
- package/dist/.flink/start.js +1 -1
- package/dist/src/coreFunctions.d.ts +3 -1
- package/dist/src/coreFunctions.js +29 -25
- package/dist/src/genericAuthContext.d.ts +4 -1
- package/dist/src/genericAuthPluginOptions.d.ts +4 -0
- package/dist/src/handlers/Management/DeleteUserByUserid.js +23 -25
- package/dist/src/handlers/Management/GetSchema.js +14 -16
- package/dist/src/handlers/Management/GetUser.js +23 -25
- package/dist/src/handlers/Management/GetUserByUserid.js +24 -26
- package/dist/src/handlers/Management/GetUserViewByUserid.js +36 -38
- package/dist/src/handlers/Management/PutUserPasswordByUserid.js +48 -50
- package/dist/src/handlers/Management/PutUserProfileByUserid.js +26 -28
- package/dist/src/handlers/Management/PutUserProfileByUseridAppend.js +29 -31
- package/dist/src/handlers/Management/PutUserRolesByUserid.js +26 -28
- package/dist/src/handlers/Management/PutUserUsernameByUserid.js +35 -37
- package/dist/src/handlers/UserCreate.js +46 -48
- package/dist/src/handlers/UserLogin.js +25 -27
- package/dist/src/handlers/UserLoginByToken.js +25 -27
- package/dist/src/handlers/UserPasswordPut.js +23 -25
- package/dist/src/handlers/UserPasswordResetComplete.js +29 -31
- package/dist/src/handlers/UserPasswordResetForm.js +11 -11
- package/dist/src/handlers/UserPasswordResetStart.js +52 -54
- package/dist/src/handlers/UserProfileGet.js +23 -25
- package/dist/src/handlers/UserProfilePut.js +30 -32
- package/dist/src/handlers/UserPushRegisterToken.js +32 -34
- package/dist/src/handlers/UserPushRemoveToken.js +26 -28
- package/dist/src/handlers/UserToken.js +26 -28
- package/dist/src/index.js +7 -2
- package/dist/src/init.js +7 -4
- package/dist/src/management.js +5 -1
- package/package.json +32 -32
- package/src/coreFunctions.ts +10 -3
- package/src/genericAuthContext.ts +3 -2
- package/src/genericAuthPluginOptions.ts +4 -1
- package/src/handlers/UserLogin.ts +2 -1
- package/src/index.ts +1 -0
|
@@ -20,12 +20,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
20
20
|
});
|
|
21
21
|
};
|
|
22
22
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g =
|
|
23
|
+
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);
|
|
24
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
25
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
26
|
function step(op) {
|
|
27
27
|
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
29
|
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;
|
|
30
30
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
31
|
switch (op[0]) {
|
|
@@ -49,36 +49,34 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
49
49
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
50
|
exports.__schemas = exports.__params = exports.__query = exports.__file = exports.__assumedHttpMethod = void 0;
|
|
51
51
|
var flink_1 = require("@flink-app/flink");
|
|
52
|
-
var putUserProfileHandler = function (_a) {
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
});
|
|
52
|
+
var putUserProfileHandler = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
53
|
+
var pluginName, repo, userId, user, updatedProfile;
|
|
54
|
+
var ctx = _b.ctx, req = _b.req, origin = _b.origin;
|
|
55
|
+
return __generator(this, function (_c) {
|
|
56
|
+
switch (_c.label) {
|
|
57
|
+
case 0:
|
|
58
|
+
pluginName = origin || "genericAuthPlugin";
|
|
59
|
+
repo = ctx.repos[ctx.plugins[pluginName].repoName];
|
|
60
|
+
userId = req.user._id;
|
|
61
|
+
return [4 /*yield*/, repo.getById(userId)];
|
|
62
|
+
case 1:
|
|
63
|
+
user = _c.sent();
|
|
64
|
+
if (user == null) {
|
|
65
|
+
return [2 /*return*/, (0, flink_1.notFound)()];
|
|
66
|
+
}
|
|
67
|
+
updatedProfile = __assign(__assign({}, user.profile), req.body);
|
|
68
|
+
return [4 /*yield*/, repo.updateOne(userId, { profile: updatedProfile })];
|
|
69
|
+
case 2:
|
|
70
|
+
_c.sent();
|
|
71
|
+
return [4 /*yield*/, repo.getById(userId)];
|
|
72
|
+
case 3:
|
|
73
|
+
user = _c.sent();
|
|
74
|
+
return [2 /*return*/, {
|
|
75
|
+
data: user.profile,
|
|
76
|
+
}];
|
|
77
|
+
}
|
|
80
78
|
});
|
|
81
|
-
};
|
|
79
|
+
}); };
|
|
82
80
|
exports.default = putUserProfileHandler;
|
|
83
81
|
exports.__assumedHttpMethod = "", exports.__file = "UserProfilePut.ts", exports.__query = [], exports.__params = [];
|
|
84
82
|
exports.__schemas = { reqSchema: { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {}, "definitions": {} }, resSchema: { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {}, "definitions": {} } };
|
|
@@ -9,12 +9,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
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;
|
|
13
|
-
return g =
|
|
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
14
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
15
|
function step(op) {
|
|
16
16
|
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
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
19
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
20
|
switch (op[0]) {
|
|
@@ -38,38 +38,36 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.__schemas = exports.__params = exports.__query = exports.__file = exports.__assumedHttpMethod = void 0;
|
|
40
40
|
var flink_1 = require("@flink-app/flink");
|
|
41
|
-
var postUserPushRegisterTokenHandler = function (_a) {
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
});
|
|
41
|
+
var postUserPushRegisterTokenHandler = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
42
|
+
var pluginName, repo, user, exToken;
|
|
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*/, repo.getById(req.user._id)];
|
|
50
|
+
case 1:
|
|
51
|
+
user = _c.sent();
|
|
52
|
+
if (user == null) {
|
|
53
|
+
return [2 /*return*/, (0, flink_1.notFound)("User not found")];
|
|
54
|
+
}
|
|
55
|
+
exToken = user.pushNotificationTokens.find(function (t) { return t.deviceId == req.body.deviceId; });
|
|
56
|
+
if (exToken != null) {
|
|
57
|
+
exToken.token = req.body.token;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
user.pushNotificationTokens.push(req.body);
|
|
61
|
+
}
|
|
62
|
+
return [4 /*yield*/, repo.updateOne(user._id, {
|
|
63
|
+
pushNotificationTokens: user.pushNotificationTokens,
|
|
64
|
+
})];
|
|
65
|
+
case 2:
|
|
66
|
+
_c.sent();
|
|
67
|
+
return [2 /*return*/, { data: { status: "success" } }];
|
|
68
|
+
}
|
|
71
69
|
});
|
|
72
|
-
};
|
|
70
|
+
}); };
|
|
73
71
|
exports.default = postUserPushRegisterTokenHandler;
|
|
74
72
|
exports.__assumedHttpMethod = "", exports.__file = "UserPushRegisterToken.ts", exports.__query = [], exports.__params = [];
|
|
75
73
|
exports.__schemas = { reqSchema: { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "additionalProperties": false, "properties": { "deviceId": { "type": "string" }, "token": { "type": "string" } }, "required": ["deviceId", "token"], "definitions": {} }, resSchema: { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "additionalProperties": false, "properties": { "status": { "type": "string", "enum": ["success", "failed"] } }, "required": ["status"], "definitions": {} } };
|
|
@@ -9,12 +9,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
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;
|
|
13
|
-
return g =
|
|
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
14
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
15
|
function step(op) {
|
|
16
16
|
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
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
19
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
20
|
switch (op[0]) {
|
|
@@ -38,32 +38,30 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.__schemas = exports.__params = exports.__query = exports.__file = exports.__assumedHttpMethod = void 0;
|
|
40
40
|
var flink_1 = require("@flink-app/flink");
|
|
41
|
-
var postUserRemoveTokenHandler = function (_a) {
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
});
|
|
41
|
+
var postUserRemoveTokenHandler = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
42
|
+
var pluginName, repo, user;
|
|
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*/, repo.getById(req.user._id)];
|
|
50
|
+
case 1:
|
|
51
|
+
user = _c.sent();
|
|
52
|
+
if (user == null) {
|
|
53
|
+
return [2 /*return*/, (0, flink_1.notFound)("User not found")];
|
|
54
|
+
}
|
|
55
|
+
user.pushNotificationTokens = user.pushNotificationTokens.filter(function (t) { return t.deviceId != req.body.deviceId; });
|
|
56
|
+
return [4 /*yield*/, repo.updateOne(user._id, {
|
|
57
|
+
pushNotificationTokens: user.pushNotificationTokens,
|
|
58
|
+
})];
|
|
59
|
+
case 2:
|
|
60
|
+
_c.sent();
|
|
61
|
+
return [2 /*return*/, { data: { status: "success" } }];
|
|
62
|
+
}
|
|
65
63
|
});
|
|
66
|
-
};
|
|
64
|
+
}); };
|
|
67
65
|
exports.default = postUserRemoveTokenHandler;
|
|
68
66
|
exports.__assumedHttpMethod = "", exports.__file = "UserPushRemoveToken.ts", exports.__query = [], exports.__params = [];
|
|
69
67
|
exports.__schemas = { reqSchema: { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "additionalProperties": false, "properties": { "deviceId": { "type": "string" }, "token": { "type": "string" } }, "required": ["deviceId", "token"], "definitions": {} }, resSchema: { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "additionalProperties": false, "properties": { "status": { "type": "string", "enum": ["success", "failed"] } }, "required": ["status"], "definitions": {} } };
|
|
@@ -9,12 +9,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
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;
|
|
13
|
-
return g =
|
|
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
14
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
15
|
function step(op) {
|
|
16
16
|
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
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
19
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
20
|
switch (op[0]) {
|
|
@@ -38,32 +38,30 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.__schemas = exports.__params = exports.__query = exports.__file = exports.__assumedHttpMethod = void 0;
|
|
40
40
|
var flink_1 = require("@flink-app/flink");
|
|
41
|
-
var getUserTokenHandler = function (_a) {
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
});
|
|
41
|
+
var getUserTokenHandler = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
42
|
+
var pluginName, repo, user, token;
|
|
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*/, repo.getById(req.user._id)];
|
|
50
|
+
case 1:
|
|
51
|
+
user = _c.sent();
|
|
52
|
+
if (user == null) {
|
|
53
|
+
return [2 /*return*/, (0, flink_1.notFound)("User not found")];
|
|
54
|
+
}
|
|
55
|
+
if (ctx.auth == null) {
|
|
56
|
+
return [2 /*return*/, (0, flink_1.internalServerError)()];
|
|
57
|
+
}
|
|
58
|
+
return [4 /*yield*/, ctx.auth.createToken({ username: user.username.toLowerCase(), _id: user._id }, user.roles)];
|
|
59
|
+
case 2:
|
|
60
|
+
token = _c.sent();
|
|
61
|
+
return [2 /*return*/, { data: { token: token } }];
|
|
62
|
+
}
|
|
65
63
|
});
|
|
66
|
-
};
|
|
64
|
+
}); };
|
|
67
65
|
exports.default = getUserTokenHandler;
|
|
68
66
|
exports.__assumedHttpMethod = "", exports.__file = "UserToken.ts", exports.__query = [], exports.__params = [];
|
|
69
67
|
exports.__schemas = { reqSchema: { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "additionalProperties": false, "properties": { "token": { "type": "string" } }, "required": ["token"], "definitions": {} }, resSchema: undefined };
|
package/dist/src/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -23,7 +27,7 @@ var genericAuthPlugin = function (options) {
|
|
|
23
27
|
options.pluginId = "genericAuthPlugin";
|
|
24
28
|
return {
|
|
25
29
|
id: options.pluginId,
|
|
26
|
-
init: function (app) { return init_1.init(app, options); },
|
|
30
|
+
init: function (app) { return (0, init_1.init)(app, options); },
|
|
27
31
|
ctx: {
|
|
28
32
|
loginUser: coreFunctions_1.loginUser,
|
|
29
33
|
loginByToken: coreFunctions_1.loginByToken,
|
|
@@ -36,6 +40,7 @@ var genericAuthPlugin = function (options) {
|
|
|
36
40
|
createPasswordHashAndSaltMethod: options.createPasswordHashAndSaltMethod,
|
|
37
41
|
validatePasswordMethod: options.validatePasswordMethod,
|
|
38
42
|
usernameFormat: options.usernameFormat || /.{1,}$/,
|
|
43
|
+
onSuccessfulLogin: options.onSuccessfulLogin,
|
|
39
44
|
smsOptions: options.sms
|
|
40
45
|
},
|
|
41
46
|
};
|
package/dist/src/init.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -19,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
19
23
|
return result;
|
|
20
24
|
};
|
|
21
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.init =
|
|
26
|
+
exports.init = init;
|
|
23
27
|
var flink_1 = require("@flink-app/flink");
|
|
24
28
|
var userLoginHandler = __importStar(require("./handlers/UserLogin"));
|
|
25
29
|
var userLoginByTokenHandler = __importStar(require("./handlers/UserLoginByToken"));
|
|
@@ -118,7 +122,7 @@ function init(app, options) {
|
|
|
118
122
|
if ((_a = options.passwordResetSettings) === null || _a === void 0 ? void 0 : _a.enablePasswordResetForm) {
|
|
119
123
|
(_b = app.expressApp) === null || _b === void 0 ? void 0 : _b.get(options.baseUrl + "/password/reset/form", function (req, res) {
|
|
120
124
|
var _a;
|
|
121
|
-
return UserPasswordResetForm_1.handleUserPasswordResetForm(req, res, {
|
|
125
|
+
return (0, UserPasswordResetForm_1.handleUserPasswordResetForm)(req, res, {
|
|
122
126
|
templateFile: (_a = options.passwordResetSettings) === null || _a === void 0 ? void 0 : _a.passwordResetForm,
|
|
123
127
|
completeUrl: options.baseUrl + "/password/reset/complete",
|
|
124
128
|
});
|
|
@@ -143,4 +147,3 @@ function init(app, options) {
|
|
|
143
147
|
}
|
|
144
148
|
}
|
|
145
149
|
}
|
|
146
|
-
exports.init = init;
|
package/dist/src/management.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/package.json
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
{
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
2
|
+
"name": "@flink-app/generic-auth-plugin",
|
|
3
|
+
"version": "0.11.4-next.0",
|
|
4
|
+
"description": "Flink plugin that provides a generic user authentification solution.",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"test": "echo \"Error: no test specified\"",
|
|
7
|
+
"build": "flink build",
|
|
8
|
+
"prepublish": "npm run build",
|
|
9
|
+
"watch": "nodemon --exec \"flink build\""
|
|
10
|
+
},
|
|
11
|
+
"author": "johan@frost.se",
|
|
12
|
+
"publishConfig": {
|
|
13
|
+
"access": "public"
|
|
14
|
+
},
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"types": "dist/src/index.d.ts",
|
|
17
|
+
"main": "dist/src/index.js",
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@flink-app/email-plugin": "^0.11.4-next.0",
|
|
20
|
+
"@flink-app/jwt-auth-plugin": "^0.11.4-next.0",
|
|
21
|
+
"@flink-app/management-api-plugin": "^0.11.4-next.0",
|
|
22
|
+
"@flink-app/sms-plugin": "^0.11.4-next.0",
|
|
23
|
+
"handlebars": "^4.7.7",
|
|
24
|
+
"jsonwebtoken": "^8.5.1"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@flink-app/flink": "^0.11.4-next.0",
|
|
28
|
+
"@types/jsonwebtoken": "^8.5.2",
|
|
29
|
+
"@types/node": "^22.10.1",
|
|
30
|
+
"ts-node": "^10.9.2",
|
|
31
|
+
"typescript": "5.6.2"
|
|
32
|
+
},
|
|
33
|
+
"gitHead": "6a44df1b6601c86ea3402750b939784d003202c3"
|
|
34
34
|
}
|
package/src/coreFunctions.ts
CHANGED
|
@@ -158,8 +158,12 @@ export async function loginUser(
|
|
|
158
158
|
validatePasswordMethod?: {
|
|
159
159
|
(password: string, hash: string, salt: string): Promise<boolean>;
|
|
160
160
|
},
|
|
161
|
-
smsOptions? : GenericAuthsmsOptions
|
|
161
|
+
smsOptions? : GenericAuthsmsOptions,
|
|
162
|
+
onSuccessfulLogin?: {
|
|
163
|
+
(user:User): Promise<void>
|
|
164
|
+
},
|
|
162
165
|
): Promise<UserLoginRes> {
|
|
166
|
+
|
|
163
167
|
const user = await repo.getOne({ username: username.toLowerCase() });
|
|
164
168
|
if (user == null) {
|
|
165
169
|
return { status: "failed" };
|
|
@@ -170,7 +174,7 @@ export async function loginUser(
|
|
|
170
174
|
if (user.authentificationMethod == "password") {
|
|
171
175
|
if (password == null) password = "";
|
|
172
176
|
|
|
173
|
-
if (validatePasswordMethod
|
|
177
|
+
if (validatePasswordMethod) {
|
|
174
178
|
valid = await validatePasswordMethod(password, <string>user.password, <string>user.salt);
|
|
175
179
|
|
|
176
180
|
//If not valid, try to use default auth
|
|
@@ -205,7 +209,6 @@ export async function loginUser(
|
|
|
205
209
|
|
|
206
210
|
const token = jsonwebtoken.sign(payload, secret, options);
|
|
207
211
|
|
|
208
|
-
|
|
209
212
|
return {
|
|
210
213
|
status: "success",
|
|
211
214
|
validationToken : token
|
|
@@ -218,6 +221,10 @@ export async function loginUser(
|
|
|
218
221
|
if (valid) {
|
|
219
222
|
const token = await auth.createToken({ username: username.toLowerCase(), _id: user._id }, user.roles);
|
|
220
223
|
|
|
224
|
+
if (onSuccessfulLogin) {
|
|
225
|
+
await onSuccessfulLogin(user);
|
|
226
|
+
}
|
|
227
|
+
|
|
221
228
|
return {
|
|
222
229
|
status: "success",
|
|
223
230
|
user: {
|
|
@@ -14,7 +14,7 @@ export interface genericAuthContext{
|
|
|
14
14
|
genericAuthPlugin : {
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
loginUser( repo : FlinkRepo<any, User>, auth : JwtAuthPlugin, username : string, password? : string, validatePasswordMethod? : { (password : string, hash : string, salt : string) : Promise<boolean> }, smsOptions? : GenericAuthsmsOptions ) : Promise<UserLoginRes>,
|
|
17
|
+
loginUser( repo : FlinkRepo<any, User>, auth : JwtAuthPlugin, username : string, password? : string, validatePasswordMethod? : { (password : string, hash : string, salt : string) : Promise<boolean> }, smsOptions? : GenericAuthsmsOptions, onSuccessfulLogin?: (user:User) => Promise<void> ) : Promise<UserLoginRes>,
|
|
18
18
|
loginByToken(repo: FlinkRepo<any, User>, auth: JwtAuthPlugin, token : string, code : string, jwtSecret : string) : Promise<UserLoginRes>,
|
|
19
19
|
createUser( repo : FlinkRepo<any, User>, auth : JwtAuthPlugin, username : string, password : string, authentificationMethod : "password" | "sms", roles : string[], profile : UserProfile, createPasswordHashAndSaltMethod? : { (password : string) : Promise<{ hash: string; salt: string;} | null> } ) : Promise<UserCreateRes>,
|
|
20
20
|
changePassword( repo : FlinkRepo<any, User>, auth : JwtAuthPlugin, userId : string, newPassword : string, createPasswordHashAndSaltMethod? : { (password : string) : Promise<{ hash: string; salt: string;} | null> } ) : Promise<UserPasswordChangeRes>,
|
|
@@ -25,7 +25,8 @@ export interface genericAuthContext{
|
|
|
25
25
|
createPasswordHashAndSaltMethod? : { (password : string) : Promise<{ hash: string; salt: string;} | null> },
|
|
26
26
|
validatePasswordMethod? : { (password : string, hash : string, salt : string) : Promise<boolean> },
|
|
27
27
|
usernameFormat : RegExp
|
|
28
|
-
smsOptions? : GenericAuthsmsOptions
|
|
28
|
+
smsOptions? : GenericAuthsmsOptions,
|
|
29
|
+
onSuccessfulLogin?: { (user:User) : Promise<void> }
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { User } from "./schemas/User";
|
|
1
2
|
import { UserPasswordResetSettings } from "./schemas/UserPasswordResetSettings";
|
|
2
3
|
import { client as smsClient } from "@flink-app/sms-plugin";
|
|
3
4
|
export interface GenericAuthPluginOptions {
|
|
@@ -18,9 +19,11 @@ export interface GenericAuthPluginOptions {
|
|
|
18
19
|
validatePasswordMethod?: {
|
|
19
20
|
(password: string, hash: string, salt: string): Promise<boolean>;
|
|
20
21
|
};
|
|
21
|
-
|
|
22
22
|
usernameFormat?: RegExp;
|
|
23
23
|
sms?: GenericAuthsmsOptions;
|
|
24
|
+
onSuccessfulLogin?: {
|
|
25
|
+
(user:User): Promise<void>
|
|
26
|
+
};
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
export interface GenericAuthsmsOptions {
|
|
@@ -18,7 +18,8 @@ const userLoginHandler: Handler<
|
|
|
18
18
|
req.body.username,
|
|
19
19
|
req.body.password,
|
|
20
20
|
ctx.plugins.genericAuthPlugin.validatePasswordMethod,
|
|
21
|
-
(<any>ctx.plugins)[pluginName].smsOptions
|
|
21
|
+
(<any>ctx.plugins)[pluginName].smsOptions,
|
|
22
|
+
ctx.plugins.genericAuthPlugin.onSuccessfulLogin
|
|
22
23
|
);
|
|
23
24
|
|
|
24
25
|
if (loginRespons.status != "success") {
|
package/src/index.ts
CHANGED
|
@@ -35,6 +35,7 @@ export const genericAuthPlugin = (
|
|
|
35
35
|
createPasswordHashAndSaltMethod: options.createPasswordHashAndSaltMethod,
|
|
36
36
|
validatePasswordMethod: options.validatePasswordMethod,
|
|
37
37
|
usernameFormat: options.usernameFormat || /.{1,}$/,
|
|
38
|
+
onSuccessfulLogin: options.onSuccessfulLogin,
|
|
38
39
|
smsOptions : options.sms
|
|
39
40
|
},
|
|
40
41
|
};
|