@flink-app/generic-auth-plugin 0.11.0 → 0.11.3
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 +18 -13
- package/dist/src/genericAuthContext.d.ts +4 -1
- package/dist/src/genericAuthPluginOptions.d.ts +4 -0
- package/dist/src/handlers/UserLogin.js +1 -1
- package/dist/src/index.js +1 -0
- package/package.json +2 -2
- 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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated
|
|
1
|
+
// Generated Fri Nov 08 2024 10:09:47 GMT+0100 (Central European Standard Time)
|
|
2
2
|
import { autoRegisteredHandlers, HttpMethod } from "@flink-app/flink";
|
|
3
3
|
import * as UserCreate_0 from "../src/handlers/UserCreate";
|
|
4
4
|
import * as UserLogin_0 from "../src/handlers/UserLogin";
|
package/.flink/generatedJobs.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated
|
|
1
|
+
// Generated Fri Nov 08 2024 10:09:47 GMT+0100 (Central European Standard Time)
|
|
2
2
|
import { autoRegisteredJobs } from "@flink-app/flink";
|
|
3
3
|
export const jobs = [];
|
|
4
4
|
autoRegisteredJobs.push(...jobs);
|
package/.flink/generatedRepos.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated
|
|
1
|
+
// Generated Fri Nov 08 2024 10:09:47 GMT+0100 (Central European Standard Time)
|
|
2
2
|
import { autoRegisteredRepos } from "@flink-app/flink";
|
|
3
3
|
export const repos = [];
|
|
4
4
|
autoRegisteredRepos.push(...repos);
|
|
@@ -29,7 +29,7 @@ import { PutManagementUserRolesByUseridRes } from "../../src/schemas/Management/
|
|
|
29
29
|
import { PutManagementUserUsernameByUseridReq } from "../../src/schemas/Management/PutUserUsernameByUseridReq";
|
|
30
30
|
import { PutManagementUserUsernameByUseridRes } from "../../src/schemas/Management/PutUserUsernameByUseridRes";
|
|
31
31
|
|
|
32
|
-
// Generated
|
|
32
|
+
// Generated Fri Nov 08 2024 10:09:48 GMT+0100 (Central European Standard Time)
|
|
33
33
|
export interface UserCreate_7_ReqSchema extends UserCreateReq {}
|
|
34
34
|
|
|
35
35
|
export interface UserCreate_7_ResSchema extends UserCreateRes {}
|
package/.flink/start.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handlers = void 0;
|
|
4
|
-
// Generated
|
|
4
|
+
// Generated Fri Nov 08 2024 10:09:47 GMT+0100 (Central European Standard Time)
|
|
5
5
|
var flink_1 = require("@flink-app/flink");
|
|
6
6
|
exports.handlers = [];
|
|
7
7
|
flink_1.autoRegisteredHandlers.push.apply(flink_1.autoRegisteredHandlers, exports.handlers);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.jobs = void 0;
|
|
4
|
-
// Generated
|
|
4
|
+
// Generated Fri Nov 08 2024 10:09:47 GMT+0100 (Central European Standard Time)
|
|
5
5
|
var flink_1 = require("@flink-app/flink");
|
|
6
6
|
exports.jobs = [];
|
|
7
7
|
flink_1.autoRegisteredJobs.push.apply(flink_1.autoRegisteredJobs, exports.jobs);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.repos = void 0;
|
|
4
|
-
// Generated
|
|
4
|
+
// Generated Fri Nov 08 2024 10:09:47 GMT+0100 (Central European Standard Time)
|
|
5
5
|
var flink_1 = require("@flink-app/flink");
|
|
6
6
|
exports.repos = [];
|
|
7
7
|
flink_1.autoRegisteredRepos.push.apply(flink_1.autoRegisteredRepos, exports.repos);
|
package/dist/.flink/start.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// Generated
|
|
3
|
+
// Generated Fri Nov 08 2024 10:09:47 GMT+0100 (Central European Standard Time)
|
|
4
4
|
require("./generatedHandlers");
|
|
5
5
|
require("./generatedRepos");
|
|
6
6
|
require("./generatedJobs");
|
|
@@ -20,7 +20,9 @@ export declare function createUser(repo: FlinkRepo<any, User>, auth: JwtAuthPlug
|
|
|
20
20
|
export declare function loginByToken(repo: FlinkRepo<any, User>, auth: JwtAuthPlugin, token: string, code: string, jwtSecret: string): Promise<UserLoginRes>;
|
|
21
21
|
export declare function loginUser(repo: FlinkRepo<any, User>, auth: JwtAuthPlugin, username: string, password: string | undefined, validatePasswordMethod?: {
|
|
22
22
|
(password: string, hash: string, salt: string): Promise<boolean>;
|
|
23
|
-
}, smsOptions?: GenericAuthsmsOptions
|
|
23
|
+
}, smsOptions?: GenericAuthsmsOptions, onSuccessfulLogin?: {
|
|
24
|
+
(user: User): Promise<void>;
|
|
25
|
+
}): Promise<UserLoginRes>;
|
|
24
26
|
export declare function changePassword(repo: FlinkRepo<any, User>, auth: JwtAuthPlugin, userId: string, newPassword: string, createPasswordHashAndSaltMethod?: {
|
|
25
27
|
(password: string): Promise<{
|
|
26
28
|
hash: string;
|
|
@@ -175,7 +175,7 @@ function loginByToken(repo, auth, token, code, jwtSecret) {
|
|
|
175
175
|
});
|
|
176
176
|
}
|
|
177
177
|
exports.loginByToken = loginByToken;
|
|
178
|
-
function loginUser(repo, auth, username, password, validatePasswordMethod, smsOptions) {
|
|
178
|
+
function loginUser(repo, auth, username, password, validatePasswordMethod, smsOptions, onSuccessfulLogin) {
|
|
179
179
|
return __awaiter(this, void 0, void 0, function () {
|
|
180
180
|
var user, valid, ex_1, code, payload, secret, options, token, token;
|
|
181
181
|
return __generator(this, function (_a) {
|
|
@@ -190,7 +190,7 @@ function loginUser(repo, auth, username, password, validatePasswordMethod, smsOp
|
|
|
190
190
|
if (!(user.authentificationMethod == "password")) return [3 /*break*/, 9];
|
|
191
191
|
if (password == null)
|
|
192
192
|
password = "";
|
|
193
|
-
if (!
|
|
193
|
+
if (!validatePasswordMethod) return [3 /*break*/, 7];
|
|
194
194
|
return [4 /*yield*/, validatePasswordMethod(password, user.password, user.salt)];
|
|
195
195
|
case 2:
|
|
196
196
|
valid = _a.sent();
|
|
@@ -234,20 +234,25 @@ function loginUser(repo, auth, username, password, validatePasswordMethod, smsOp
|
|
|
234
234
|
validationToken: token
|
|
235
235
|
}];
|
|
236
236
|
}
|
|
237
|
-
if (!valid) return [3 /*break*/,
|
|
237
|
+
if (!valid) return [3 /*break*/, 13];
|
|
238
238
|
return [4 /*yield*/, auth.createToken({ username: username.toLowerCase(), _id: user._id }, user.roles)];
|
|
239
239
|
case 10:
|
|
240
240
|
token = _a.sent();
|
|
241
|
-
return [
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
241
|
+
if (!onSuccessfulLogin) return [3 /*break*/, 12];
|
|
242
|
+
return [4 /*yield*/, onSuccessfulLogin(user)];
|
|
243
|
+
case 11:
|
|
244
|
+
_a.sent();
|
|
245
|
+
_a.label = 12;
|
|
246
|
+
case 12: return [2 /*return*/, {
|
|
247
|
+
status: "success",
|
|
248
|
+
user: {
|
|
249
|
+
_id: user._id,
|
|
250
|
+
username: user.username,
|
|
251
|
+
token: token,
|
|
252
|
+
profile: user.profile,
|
|
253
|
+
},
|
|
254
|
+
}];
|
|
255
|
+
case 13: return [2 /*return*/, { status: "failed" }];
|
|
251
256
|
}
|
|
252
257
|
});
|
|
253
258
|
});
|
|
@@ -13,7 +13,7 @@ export interface genericAuthContext {
|
|
|
13
13
|
genericAuthPlugin: {
|
|
14
14
|
loginUser(repo: FlinkRepo<any, User>, auth: JwtAuthPlugin, username: string, password?: string, validatePasswordMethod?: {
|
|
15
15
|
(password: string, hash: string, salt: string): Promise<boolean>;
|
|
16
|
-
}, smsOptions?: GenericAuthsmsOptions): Promise<UserLoginRes>;
|
|
16
|
+
}, smsOptions?: GenericAuthsmsOptions, onSuccessfulLogin?: (user: User) => Promise<void>): Promise<UserLoginRes>;
|
|
17
17
|
loginByToken(repo: FlinkRepo<any, User>, auth: JwtAuthPlugin, token: string, code: string, jwtSecret: string): Promise<UserLoginRes>;
|
|
18
18
|
createUser(repo: FlinkRepo<any, User>, auth: JwtAuthPlugin, username: string, password: string, authentificationMethod: "password" | "sms", roles: string[], profile: UserProfile, createPasswordHashAndSaltMethod?: {
|
|
19
19
|
(password: string): Promise<{
|
|
@@ -47,5 +47,8 @@ export interface genericAuthContext {
|
|
|
47
47
|
};
|
|
48
48
|
usernameFormat: RegExp;
|
|
49
49
|
smsOptions?: GenericAuthsmsOptions;
|
|
50
|
+
onSuccessfulLogin?: {
|
|
51
|
+
(user: User): Promise<void>;
|
|
52
|
+
};
|
|
50
53
|
};
|
|
51
54
|
}
|
|
@@ -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 {
|
|
@@ -23,6 +24,9 @@ export interface GenericAuthPluginOptions {
|
|
|
23
24
|
};
|
|
24
25
|
usernameFormat?: RegExp;
|
|
25
26
|
sms?: GenericAuthsmsOptions;
|
|
27
|
+
onSuccessfulLogin?: {
|
|
28
|
+
(user: User): Promise<void>;
|
|
29
|
+
};
|
|
26
30
|
}
|
|
27
31
|
export interface GenericAuthsmsOptions {
|
|
28
32
|
smsClient: smsClient;
|
|
@@ -47,7 +47,7 @@ var userLoginHandler = function (_a) {
|
|
|
47
47
|
case 0:
|
|
48
48
|
pluginName = origin || "genericAuthPlugin";
|
|
49
49
|
repo = ctx.repos[ctx.plugins[pluginName].repoName];
|
|
50
|
-
return [4 /*yield*/, ctx.plugins.genericAuthPlugin.loginUser(repo, ctx.auth, req.body.username, req.body.password, ctx.plugins.genericAuthPlugin.validatePasswordMethod, ctx.plugins[pluginName].smsOptions)];
|
|
50
|
+
return [4 /*yield*/, ctx.plugins.genericAuthPlugin.loginUser(repo, ctx.auth, req.body.username, req.body.password, ctx.plugins.genericAuthPlugin.validatePasswordMethod, ctx.plugins[pluginName].smsOptions, ctx.plugins.genericAuthPlugin.onSuccessfulLogin)];
|
|
51
51
|
case 1:
|
|
52
52
|
loginRespons = _b.sent();
|
|
53
53
|
if (loginRespons.status != "success") {
|
package/dist/src/index.js
CHANGED
|
@@ -36,6 +36,7 @@ var genericAuthPlugin = function (options) {
|
|
|
36
36
|
createPasswordHashAndSaltMethod: options.createPasswordHashAndSaltMethod,
|
|
37
37
|
validatePasswordMethod: options.validatePasswordMethod,
|
|
38
38
|
usernameFormat: options.usernameFormat || /.{1,}$/,
|
|
39
|
+
onSuccessfulLogin: options.onSuccessfulLogin,
|
|
39
40
|
smsOptions: options.sms
|
|
40
41
|
},
|
|
41
42
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flink-app/generic-auth-plugin",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.3",
|
|
4
4
|
"description": "Flink plugin that provides a generic user authentification solution.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\"",
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
"ts-node": "^9.1.1",
|
|
31
31
|
"typescript": "^4.2.4"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "83d258db9a45d1f397ca51f2221a36443af78f9f"
|
|
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
|
};
|