@tstdl/base 0.82.9 → 0.82.10
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/authentication/authentication.api.d.ts +4 -3
- package/authentication/authentication.api.js.map +1 -1
- package/authentication/client/api.client.d.ts +6 -50
- package/authentication/client/api.client.js +18 -11
- package/authentication/client/api.client.js.map +1 -1
- package/authentication/server/authentication-token-payload.provider.d.ts +3 -2
- package/authentication/server/authentication-token-payload.provider.js.map +1 -1
- package/authentication/server/authentication.api-controller.d.ts +2 -1
- package/authentication/server/authentication.api-controller.js.map +1 -1
- package/authentication/server/authentication.service.d.ts +3 -3
- package/authentication/server/authentication.service.js +7 -9
- package/authentication/server/authentication.service.js.map +1 -1
- package/authentication/server/module.d.ts +1 -1
- package/examples/api/custom-authentication.js +4 -7
- package/examples/api/custom-authentication.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { ApiDefinition } from "../api/types";
|
|
2
2
|
import type { SchemaTestable } from "../schema/schema";
|
|
3
3
|
import type { ObjectSchemaOrType } from "../schema/types";
|
|
4
|
+
import type { Record } from "../types";
|
|
4
5
|
import { TokenPayloadBase } from './models';
|
|
5
|
-
type GetAuthenticationApiEndpointsDefinition<AdditionalTokenPayload =
|
|
6
|
-
type AuthenticationApiEndpointsDefinition<AdditionalTokenPayload =
|
|
7
|
-
export type AuthenticationApiDefinition<AdditionalTokenPayload =
|
|
6
|
+
type GetAuthenticationApiEndpointsDefinition<AdditionalTokenPayload = Record<never>, AuthenticationData = void> = typeof getAuthenticationApiEndpointsDefinition<AdditionalTokenPayload, AuthenticationData>;
|
|
7
|
+
type AuthenticationApiEndpointsDefinition<AdditionalTokenPayload = Record<never>, AuthenticationData = void> = ReturnType<GetAuthenticationApiEndpointsDefinition<AdditionalTokenPayload, AuthenticationData>>;
|
|
8
|
+
export type AuthenticationApiDefinition<AdditionalTokenPayload = Record<never>, AuthenticationData = void> = ApiDefinition<string, AuthenticationApiEndpointsDefinition<AdditionalTokenPayload, AuthenticationData>>;
|
|
8
9
|
export declare const authenticationApiDefinition: {
|
|
9
10
|
resource: string;
|
|
10
11
|
endpoints: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.api.js","sourceRoot":"","sources":["../../source/authentication/authentication.api.ts"],"names":[],"mappings":";;;AACA,wCAAwC;AAExC,qDAAiD;AACjD,uDAAmD;AACnD,qDAAiD;AACjD,qDAA4E;AAC5E,qDAAiD;AACjD,uDAAmD;
|
|
1
|
+
{"version":3,"file":"authentication.api.js","sourceRoot":"","sources":["../../source/authentication/authentication.api.ts"],"names":[],"mappings":";;;AACA,wCAAwC;AAExC,qDAAiD;AACjD,uDAAmD;AACnD,qDAAiD;AACjD,qDAA4E;AAC5E,qDAAiD;AACjD,uDAAmD;AAGnD,qCAA4C;AAU/B,QAAA,2BAA2B,GAAG,8BAA8B,CAAC,0BAAiB,EAAE,IAAA,iBAAO,GAAE,CAAC,CAAC;AAExG,4EAA4E;AAC5E,SAAgB,8BAA8B,CAC5C,4BAAwE,EACxE,wBAA4D,EAC5D,QAAiB,EACjB,mBAAyC;IAEzC,OAAO,IAAA,iBAAS,EAAC;QACf,QAAQ,EAAE,QAAQ,IAAI,MAAM;QAC5B,SAAS,EAAE;YACT,GAAG,uCAAuC,CAAC,4BAA4B,EAAE,wBAAwB,CAAC;YAClG,GAAG,mBAAmB;SACvB;KACF,CAAC,CAAC;AACL,CAAC;AAbD,wEAaC;AAED,4EAA4E;AAC5E,SAAgB,uCAAuC,CACrD,4BAAwE,EACxE,wBAA4D;IAE5D,MAAM,iBAAiB,GAAG,IAAA,eAAM,EAAC,yBAAgB,EAAE,4BAA4B,CAAC,CAAC;IAEjF,OAAO;QACL,KAAK,EAAE;YACL,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,IAAA,uBAAc,EAAC;gBACzB,OAAO,EAAE,IAAA,eAAM,GAAE;gBACjB,MAAM,EAAE,IAAA,eAAM,GAAE;gBAChB,IAAI,EAAE,wBAAwB;aAC/B,CAAC;YACF,MAAM,EAAE,iBAAiB;SAC1B;QACD,OAAO,EAAE;YACP,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,IAAA,uBAAc,EAAC;gBACzB,IAAI,EAAE,wBAAwB;aAC/B,CAAC;YACF,MAAM,EAAE,iBAAiB;SAC1B;QACD,UAAU,EAAE;YACV,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,IAAA,iBAAO,EAAC,IAAa,CAAC;SAC/B;QACD,SAAS,EAAE;YACT,MAAM,EAAE,IAAA,eAAM,GAAE;SACjB;KAC+B,CAAC;AACrC,CAAC;AAlCD,0FAkCC"}
|
|
@@ -1,50 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
method: "POST";
|
|
8
|
-
parameters: import("../../schema").ObjectSchema<{
|
|
9
|
-
subject: string;
|
|
10
|
-
secret: string;
|
|
11
|
-
data: unknown;
|
|
12
|
-
}>;
|
|
13
|
-
result: import("../../schema").ObjectSchema<{
|
|
14
|
-
jti: string;
|
|
15
|
-
iat: number;
|
|
16
|
-
exp: number;
|
|
17
|
-
refreshTokenExp: number;
|
|
18
|
-
sessionId: string;
|
|
19
|
-
subject: string;
|
|
20
|
-
}>;
|
|
21
|
-
};
|
|
22
|
-
refresh: {
|
|
23
|
-
resource: string;
|
|
24
|
-
method: "POST";
|
|
25
|
-
parameters: import("../../schema").ObjectSchema<{
|
|
26
|
-
data: unknown;
|
|
27
|
-
}>;
|
|
28
|
-
result: import("../../schema").ObjectSchema<{
|
|
29
|
-
jti: string;
|
|
30
|
-
iat: number;
|
|
31
|
-
exp: number;
|
|
32
|
-
refreshTokenExp: number;
|
|
33
|
-
sessionId: string;
|
|
34
|
-
subject: string;
|
|
35
|
-
}>;
|
|
36
|
-
};
|
|
37
|
-
endSession: {
|
|
38
|
-
resource: string;
|
|
39
|
-
method: "POST";
|
|
40
|
-
result: import("../../schema").ValueSchema<"ok">;
|
|
41
|
-
};
|
|
42
|
-
timestamp: {
|
|
43
|
-
result: import("../../schema").ValueSchema<number>;
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
}>;
|
|
47
|
-
export declare class AuthenticationApiClient extends AuthenticationApiClient_base {
|
|
48
|
-
constructor(httpClient: HttpClient);
|
|
49
|
-
}
|
|
50
|
-
export {};
|
|
1
|
+
import type { ApiClient } from "../../api/client";
|
|
2
|
+
import type { SchemaTestable } from "../../schema/schema";
|
|
3
|
+
import type { ObjectSchemaOrType } from "../../schema/types/types";
|
|
4
|
+
import type { AuthenticationApiDefinition } from '../authentication.api';
|
|
5
|
+
export declare function getAuthenticationApiClient<AdditionalTokenPayload, AuthenticationData>(additionalTokenPayloadSchema: ObjectSchemaOrType<AdditionalTokenPayload>, authenticationDataSchema: SchemaTestable<AuthenticationData>): ApiClient<AuthenticationApiDefinition<AdditionalTokenPayload, AuthenticationData>>;
|
|
6
|
+
export declare const AuthenticationApiClient: ApiClient<AuthenticationApiDefinition<{}, unknown>>;
|
|
@@ -9,19 +9,26 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.AuthenticationApiClient = void 0;
|
|
12
|
+
exports.AuthenticationApiClient = exports.getAuthenticationApiClient = void 0;
|
|
13
13
|
const client_1 = require("../../api/client");
|
|
14
14
|
const container_1 = require("../../container");
|
|
15
15
|
const http_client_1 = require("../../http/client/http-client");
|
|
16
|
+
const object_1 = require("../../schema/schemas/object");
|
|
17
|
+
const unknown_1 = require("../../schema/schemas/unknown");
|
|
16
18
|
const authentication_api_1 = require("../authentication.api");
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
function getAuthenticationApiClient(additionalTokenPayloadSchema, authenticationDataSchema) {
|
|
20
|
+
const definition = (0, authentication_api_1.getAuthenticationApiDefinition)(additionalTokenPayloadSchema, authenticationDataSchema);
|
|
21
|
+
let AuthenticationApiClient = class AuthenticationApiClient extends (0, client_1.compileClient)(definition) {
|
|
22
|
+
constructor(httpClient) {
|
|
23
|
+
super(httpClient);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
AuthenticationApiClient = __decorate([
|
|
27
|
+
(0, container_1.singleton)(),
|
|
28
|
+
__metadata("design:paramtypes", [http_client_1.HttpClient])
|
|
29
|
+
], AuthenticationApiClient);
|
|
30
|
+
return AuthenticationApiClient;
|
|
31
|
+
}
|
|
32
|
+
exports.getAuthenticationApiClient = getAuthenticationApiClient;
|
|
33
|
+
exports.AuthenticationApiClient = getAuthenticationApiClient(object_1.emptyObjectSchema, (0, unknown_1.unknown)());
|
|
27
34
|
//# sourceMappingURL=api.client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.client.js","sourceRoot":"","sources":["../../../source/authentication/client/api.client.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"api.client.js","sourceRoot":"","sources":["../../../source/authentication/client/api.client.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,6CAA6C;AAC7C,+CAAwC;AACxC,+DAAuD;AAEvD,wDAA4D;AAC5D,0DAAmD;AAGnD,8DAAuE;AAEvE,SAAgB,0BAA0B,CACxC,4BAAwE,EACxE,wBAA4D;IAE5D,MAAM,UAAU,GAAG,IAAA,mDAA8B,EAAC,4BAA4B,EAAE,wBAAwB,CAAC,CAAC;IAE1G,IACM,uBAAuB,GAD7B,MACM,uBAAwB,SAAQ,IAAA,sBAAa,EAAC,UAAU,CAAC;QAC7D,YAAY,UAAsB;YAChC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpB,CAAC;KACF,CAAA;IAJK,uBAAuB;QAD5B,IAAA,qBAAS,GAAE;yCAEc,wBAAU;OAD9B,uBAAuB,CAI5B;IAED,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAdD,gEAcC;AAEY,QAAA,uBAAuB,GAAG,0BAA0B,CAAC,0BAAiB,EAAE,IAAA,iBAAO,GAAE,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { Record } from "../../types";
|
|
2
|
+
export declare abstract class AuthenticationTokenPayloadProvider<AdditionalTokenPayload = Record<never>, AuthenticationData = void> {
|
|
3
|
+
abstract getTokenPayload(subject: string, authenticationData: AuthenticationData): AdditionalTokenPayload | Promise<AdditionalTokenPayload>;
|
|
3
4
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication-token-payload.provider.js","sourceRoot":"","sources":["../../../source/authentication/server/authentication-token-payload.provider.ts"],"names":[],"mappings":";;;;;;;;;AAAA,iDAAqC;
|
|
1
|
+
{"version":3,"file":"authentication-token-payload.provider.js","sourceRoot":"","sources":["../../../source/authentication/server/authentication-token-payload.provider.ts"],"names":[],"mappings":";;;;;;;;;AAAA,iDAAqC;AAI9B,IAAe,kCAAkC,GAAjD,MAAe,kCAAkC;CAEvD,CAAA;AAFqB,kCAAkC;IADvD,IAAA,kBAAK,GAAE;GACc,kCAAkC,CAEvD;AAFqB,gFAAkC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ApiController, ApiRequestData, ApiServerResult } from "../../api/types";
|
|
2
|
+
import type { Record } from "../../types";
|
|
2
3
|
import type { AuthenticationApiDefinition } from '../authentication.api';
|
|
3
4
|
import { AuthenticationService } from './authentication.service';
|
|
4
|
-
export declare class AuthenticationApiController<AdditionalTokenPayload
|
|
5
|
+
export declare class AuthenticationApiController<AdditionalTokenPayload = Record<never>, AuthenticationData = void> implements ApiController<AuthenticationApiDefinition<AdditionalTokenPayload, AuthenticationData>> {
|
|
5
6
|
readonly authenticationService: AuthenticationService<AdditionalTokenPayload, AuthenticationData>;
|
|
6
7
|
constructor(authenticationService: AuthenticationService<AdditionalTokenPayload, AuthenticationData>);
|
|
7
8
|
token({ parameters }: ApiRequestData<AuthenticationApiDefinition<AdditionalTokenPayload, AuthenticationData>, 'token'>): Promise<ApiServerResult<AuthenticationApiDefinition<AdditionalTokenPayload, AuthenticationData>, 'token'>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.api-controller.js","sourceRoot":"","sources":["../../../source/authentication/server/authentication.api-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA6C;AAE7C,uEAA+D;AAC/D,8CAAmD;
|
|
1
|
+
{"version":3,"file":"authentication.api-controller.js","sourceRoot":"","sources":["../../../source/authentication/server/authentication.api-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA6C;AAE7C,uEAA+D;AAC/D,8CAAmD;AAEnD,qDAAqD;AAErD,8DAAoE;AAEpE,qEAAiE;AACjE,qCAAqE;AAG9D,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAC7B,qBAAqB,CAAoE;IAElG,YAAY,qBAAwF;QAClG,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,EAAoG;QAC1H,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAElH,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;YACjC,MAAM,IAAI,sCAAiB,CAAC,sBAAsB,CAAC,CAAC;SACrD;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAExG,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAsG;QACvI,MAAM,WAAW,GAAG,IAAA,kDAAyC,EAAC,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC;QAC7F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtF,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAyG;QACjI,MAAM,WAAW,GAAG,IAAA,kDAAyC,EAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS;QACP,OAAO,IAAA,4BAAgB,GAAE,CAAC;IAC5B,CAAC;IAEO,gBAAgB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAuC;QAC9F,MAAM,MAAM,GAAsG,SAAS,CAAC,OAA4G,CAAC;QAEzO,OAAO,IAAI,2BAAkB,CAAC;YAC5B,OAAO,EAAE;gBACP,aAAa,EAAE,EAAE,KAAK,EAAE,UAAU,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,EAAE;gBAChJ,YAAY,EAAE,EAAE,KAAK,EAAE,UAAU,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,EAAE;aACvJ;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;aACb;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnDY,2BAA2B;IADvC,IAAA,sBAAa,EAAC,gDAA2B,CAAC;qCAIN,8CAAqB;GAH7C,2BAA2B,CAmDvC;AAnDY,kEAA2B"}
|
|
@@ -27,17 +27,17 @@ export type TokenResult<AdditionalTokenPayload = Record<never>> = {
|
|
|
27
27
|
jsonToken: Token<AdditionalTokenPayload>;
|
|
28
28
|
refreshToken: string;
|
|
29
29
|
};
|
|
30
|
-
export declare class AuthenticationService<AdditionalTokenPayload = Record<never>, AuthenticationData =
|
|
30
|
+
export declare class AuthenticationService<AdditionalTokenPayload = Record<never>, AuthenticationData = void> implements AfterResolve {
|
|
31
31
|
private readonly credentialsRepository;
|
|
32
32
|
private readonly sessionRepository;
|
|
33
|
-
private readonly
|
|
33
|
+
private readonly tokenPayloadProvider;
|
|
34
34
|
private readonly secret;
|
|
35
35
|
private readonly tokenVersion;
|
|
36
36
|
private readonly tokenTimeToLive;
|
|
37
37
|
private readonly sessionTimeToLive;
|
|
38
38
|
private derivedTokenSigningSecret;
|
|
39
39
|
private derivedRefreshTokenSigningSecret;
|
|
40
|
-
constructor(
|
|
40
|
+
constructor(credentialsRepository: AuthenticationCredentialsRepository, sessionRepository: AuthenticationSessionRepository, tokenPayloadProvider: AuthenticationTokenPayloadProvider<AdditionalTokenPayload, AuthenticationData> | undefined, options: AuthenticationServiceOptions);
|
|
41
41
|
[afterResolve](): Promise<void>;
|
|
42
42
|
initialize(): Promise<void>;
|
|
43
43
|
setCredentials(subject: string, secret: string): Promise<void>;
|
|
@@ -25,24 +25,23 @@ const type_guards_1 = require("../../utils/type-guards");
|
|
|
25
25
|
const units_1 = require("../../utils/units");
|
|
26
26
|
const authentication_credentials_repository_1 = require("./authentication-credentials.repository");
|
|
27
27
|
const authentication_session_repository_1 = require("./authentication-session.repository");
|
|
28
|
-
const authentication_token_payload_provider_1 = require("./authentication-token-payload.provider");
|
|
29
28
|
const helper_1 = require("./helper");
|
|
30
29
|
const tokens_1 = require("./tokens");
|
|
31
30
|
const SIGNING_SECRETS_LENGTH = 512;
|
|
32
31
|
let AuthenticationService = class AuthenticationService {
|
|
33
32
|
credentialsRepository;
|
|
34
33
|
sessionRepository;
|
|
35
|
-
|
|
34
|
+
tokenPayloadProvider;
|
|
36
35
|
secret;
|
|
37
36
|
tokenVersion;
|
|
38
37
|
tokenTimeToLive;
|
|
39
38
|
sessionTimeToLive;
|
|
40
39
|
derivedTokenSigningSecret;
|
|
41
40
|
derivedRefreshTokenSigningSecret;
|
|
42
|
-
constructor(
|
|
43
|
-
this.credentialsRepository =
|
|
41
|
+
constructor(credentialsRepository, sessionRepository, tokenPayloadProvider, options) {
|
|
42
|
+
this.credentialsRepository = credentialsRepository;
|
|
44
43
|
this.sessionRepository = sessionRepository;
|
|
45
|
-
this.
|
|
44
|
+
this.tokenPayloadProvider = tokenPayloadProvider;
|
|
46
45
|
this.secret = options.secret;
|
|
47
46
|
this.tokenVersion = options.version ?? 1;
|
|
48
47
|
this.tokenTimeToLive = options.tokenTimeToLive ?? (5 * units_1.millisecondsPerMinute);
|
|
@@ -88,7 +87,7 @@ let AuthenticationService = class AuthenticationService {
|
|
|
88
87
|
refreshTokenSalt: new Uint8Array(),
|
|
89
88
|
refreshTokenHash: new Uint8Array()
|
|
90
89
|
});
|
|
91
|
-
const tokenPayload = await this.
|
|
90
|
+
const tokenPayload = await this.tokenPayloadProvider?.getTokenPayload(subject, authenticationData);
|
|
92
91
|
const { token, jsonToken } = await this.createToken(tokenPayload, subject, session.id, end, now);
|
|
93
92
|
const refreshToken = await this.createRefreshToken(subject, session.id, end);
|
|
94
93
|
await this.sessionRepository.extend(session.id, {
|
|
@@ -116,7 +115,7 @@ let AuthenticationService = class AuthenticationService {
|
|
|
116
115
|
}
|
|
117
116
|
const now = (0, date_time_1.currentTimestamp)();
|
|
118
117
|
const newEnd = now + this.sessionTimeToLive;
|
|
119
|
-
const tokenPayload = await this.
|
|
118
|
+
const tokenPayload = await this.tokenPayloadProvider?.getTokenPayload(session.subject, authenticationData);
|
|
120
119
|
const { token, jsonToken } = await this.createToken(tokenPayload, session.subject, sessionId, newEnd, now);
|
|
121
120
|
const newRefreshToken = await this.createRefreshToken(validatedToken.payload.subject, sessionId, newEnd);
|
|
122
121
|
await this.sessionRepository.extend(sessionId, {
|
|
@@ -196,8 +195,7 @@ AuthenticationService = __decorate([
|
|
|
196
195
|
__param(2, (0, container_1.optional)()),
|
|
197
196
|
__param(3, (0, container_1.inject)(tokens_1.AUTHENTICATION_SERVICE_OPTIONS)),
|
|
198
197
|
__metadata("design:paramtypes", [authentication_credentials_repository_1.AuthenticationCredentialsRepository,
|
|
199
|
-
authentication_session_repository_1.AuthenticationSessionRepository,
|
|
200
|
-
authentication_token_payload_provider_1.AuthenticationTokenPayloadProvider, Object])
|
|
198
|
+
authentication_session_repository_1.AuthenticationSessionRepository, Object, Object])
|
|
201
199
|
], AuthenticationService);
|
|
202
200
|
exports.AuthenticationService = AuthenticationService;
|
|
203
201
|
//# sourceMappingURL=authentication.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.service.js","sourceRoot":"","sources":["../../../source/authentication/server/authentication.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,+CAAwE;AACxE,yEAAgE;AAEhE,mDAA4C;AAC5C,2DAAuD;AACvD,qDAA2G;AAC3G,+CAA8C;AAC9C,yCAAmF;AACnF,+CAAiE;AACjE,yDAAkD;AAClD,6CAA0E;AAE1E,mGAA8F;AAC9F,2FAAsF;
|
|
1
|
+
{"version":3,"file":"authentication.service.js","sourceRoot":"","sources":["../../../source/authentication/server/authentication.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,6 @@ export type AuthenticationModuleConfig = {
|
|
|
7
7
|
serviceOptions: AuthenticationServiceOptions;
|
|
8
8
|
credentialsRepository: Type<AuthenticationCredentialsRepository>;
|
|
9
9
|
sessionRepository: Type<AuthenticationSessionRepository>;
|
|
10
|
-
tokenPayloadProvider?: Type<AuthenticationTokenPayloadProvider
|
|
10
|
+
tokenPayloadProvider?: Type<AuthenticationTokenPayloadProvider<any, any>>;
|
|
11
11
|
};
|
|
12
12
|
export declare function configureAuthenticationServer(config: AuthenticationModuleConfig): void;
|
|
@@ -10,11 +10,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
/* eslint-disable max-classes-per-file */
|
|
13
|
-
const client_1 = require("../../api/client");
|
|
14
13
|
const server_1 = require("../../api/server");
|
|
15
14
|
const application_1 = require("../../application");
|
|
16
|
-
const
|
|
17
|
-
const client_2 = require("../../authentication/client");
|
|
15
|
+
const client_1 = require("../../authentication/client");
|
|
18
16
|
const authentication_token_payload_provider_1 = require("../../authentication/server/authentication-token-payload.provider");
|
|
19
17
|
const authentication_api_controller_1 = require("../../authentication/server/authentication.api-controller");
|
|
20
18
|
const authentication_service_1 = require("../../authentication/server/authentication.service");
|
|
@@ -60,9 +58,8 @@ CustomTokenPayloadProvider = __decorate([
|
|
|
60
58
|
});
|
|
61
59
|
(0, mongo_authentication_credentials_repository_1.configureMongoAuthenticationCredentialsRepository)({ collection: 'credentials' });
|
|
62
60
|
(0, mongo_authentication_session_repository_1.configureMongoAuthenticationSessionRepository)({ collection: 'sessions' });
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
(0, client_2.configureAuthenticationClient)({
|
|
61
|
+
const CustomAuthenticationApiClient = (0, client_1.getAuthenticationApiClient)(CustomTokenPaylod, AuthenticationData);
|
|
62
|
+
(0, client_1.configureAuthenticationClient)({
|
|
66
63
|
authenticationApiClient: CustomAuthenticationApiClient
|
|
67
64
|
});
|
|
68
65
|
(0, local_1.configureLocalMessageBus)();
|
|
@@ -72,7 +69,7 @@ async function serverTest() {
|
|
|
72
69
|
}
|
|
73
70
|
async function clientTest() {
|
|
74
71
|
await (0, timing_1.timeout)(250); // allow server to initialize
|
|
75
|
-
const authenticationService = container_1.container.resolve(
|
|
72
|
+
const authenticationService = container_1.container.resolve(client_1.AuthenticationService);
|
|
76
73
|
authenticationService.initialize();
|
|
77
74
|
await authenticationService.login('foobar', 'supersecret', { deviceId: 'my-device' });
|
|
78
75
|
authenticationService.token$.subscribe((token) => console.log({ token }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-authentication.js","sourceRoot":"","sources":["../../../source/examples/api/custom-authentication.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,yCAAyC;AACzC,
|
|
1
|
+
{"version":3,"file":"custom-authentication.js","sourceRoot":"","sources":["../../../source/examples/api/custom-authentication.ts"],"names":[],"mappings":"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"}
|