@chaosinsight/postoffice-portalclient 2.0.1 → 2.0.2-beta.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/dist/extensions/authenticationExtension.d.ts +8 -0
- package/dist/extensions/authenticationExtension.js +19 -0
- package/dist/extensions/authenticationExtension.js.map +1 -0
- package/dist/extensions/passkey.d.ts +34 -0
- package/dist/extensions/passkey.js +20 -0
- package/dist/extensions/passkey.js.map +1 -0
- package/dist/extensions/sessions.d.ts +3 -4
- package/dist/extensions/sessions.js +5 -13
- package/dist/extensions/sessions.js.map +1 -1
- package/dist/extensions/tokens.d.ts +3 -2
- package/dist/extensions/tokens.js +5 -8
- package/dist/extensions/tokens.js.map +1 -1
- package/dist/extensions/users.d.ts +3 -2
- package/dist/extensions/users.js +5 -8
- package/dist/extensions/users.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/extensions/authenticationExtension.ts +23 -0
- package/src/extensions/passkey.ts +57 -0
- package/src/extensions/sessions.ts +6 -15
- package/src/extensions/tokens.ts +9 -9
- package/src/extensions/users.ts +9 -9
- package/src/index.ts +2 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Extension, IServiceCall, IExtension, IExtensionConstructor } from "@chaosinsight/portalclient";
|
|
2
|
+
import { ISession, ITokens } from "../index";
|
|
3
|
+
export default abstract class AuthenticationExtension extends Extension {
|
|
4
|
+
protected setTokensFromSessionCall(call: IServiceCall<ISession>, authenticationType: string): IServiceCall<ISession>;
|
|
5
|
+
protected setTokensFromCall(call: IServiceCall<ITokens>, authenticationType: string): IServiceCall<ITokens>;
|
|
6
|
+
protected setTokens(tokens: ITokens, authenticationType: string): void;
|
|
7
|
+
static add<T extends IExtension>(extensionConstructor: IExtensionConstructor<T>, extensionName: string): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Extension } from "@chaosinsight/portalclient";
|
|
2
|
+
import { RefreshTokenCreatedEvent } from "../index";
|
|
3
|
+
export default class AuthenticationExtension extends Extension {
|
|
4
|
+
setTokensFromSessionCall(call, authenticationType) {
|
|
5
|
+
return this.onSuccess(call, r => this.setTokens(r.Tokens, authenticationType));
|
|
6
|
+
}
|
|
7
|
+
setTokensFromCall(call, authenticationType) {
|
|
8
|
+
return this.onSuccess(call, r => this.setTokens(r, authenticationType));
|
|
9
|
+
}
|
|
10
|
+
setTokens(tokens, authenticationType) {
|
|
11
|
+
this.setAccessToken(tokens.Access, authenticationType);
|
|
12
|
+
if (tokens.Refresh)
|
|
13
|
+
RefreshTokenCreatedEvent.dispatch(tokens.Refresh, this.client);
|
|
14
|
+
}
|
|
15
|
+
static add(extensionConstructor, extensionName) {
|
|
16
|
+
Extension.add(extensionConstructor, extensionName);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=authenticationExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticationExtension.js","sourceRoot":"","sources":["../../src/extensions/authenticationExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAkD,MAAM,4BAA4B,CAAA;AACrG,OAAO,EAAoB,wBAAwB,EAAC,MAAM,UAAU,CAAA;AAEpE,MAAM,CAAC,OAAO,OAAgB,uBAAwB,SAAQ,SAAS;IAC5D,wBAAwB,CAAC,IAA4B,EAAE,kBAA0B;QAC1F,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAA;IAC/E,CAAC;IAES,iBAAiB,CAAC,IAA2B,EAAE,kBAA0B;QAClF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAA;IACxE,CAAC;IAES,SAAS,CAAC,MAAe,EAAE,kBAA0B;QAC9D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;QAEtD,IAAI,MAAM,CAAC,OAAO;YACjB,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAChE,CAAC;IAEM,MAAM,CAAC,GAAG,CAAuB,oBAA8C,EAAE,aAAqB;QAC5G,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAA;IACnD,CAAC;CACD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { IServiceCall } from "@chaosinsight/portalclient";
|
|
2
|
+
import AuthenticationExtension from "./authenticationExtension";
|
|
3
|
+
import { ITokens } from "../index";
|
|
4
|
+
export default class Passkey extends AuthenticationExtension {
|
|
5
|
+
readonly refreshAuthenticationType = "Passkey";
|
|
6
|
+
protected extensionName: string;
|
|
7
|
+
Assertion(assertion: IPasskeyAssertion): IServiceCall<ITokens>;
|
|
8
|
+
AssertionOptions(): IServiceCall<string>;
|
|
9
|
+
Credentials(deviceName: string, credential: IPasskeyCredential): IServiceCall<void>;
|
|
10
|
+
CredentialsOptions(password: string): IServiceCall<string>;
|
|
11
|
+
}
|
|
12
|
+
export interface IPasskeyCredential {
|
|
13
|
+
Id: string;
|
|
14
|
+
RawId: string;
|
|
15
|
+
Response: {
|
|
16
|
+
AttestationObject: string;
|
|
17
|
+
ClientDataJSON: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface IPasskeyAssertion {
|
|
21
|
+
Id: string;
|
|
22
|
+
RawId: string;
|
|
23
|
+
Response: {
|
|
24
|
+
AuthenticatorData: string;
|
|
25
|
+
Signature: string;
|
|
26
|
+
ClientDataJson: string;
|
|
27
|
+
UserHandle: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
declare module "@chaosinsight/portalclient" {
|
|
31
|
+
interface ExtensionHandler {
|
|
32
|
+
passkey: Passkey;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { HttpMethod } from "@chaosinsight/portalclient";
|
|
2
|
+
import AuthenticationExtension from "./authenticationExtension";
|
|
3
|
+
export default class Passkey extends AuthenticationExtension {
|
|
4
|
+
refreshAuthenticationType = "Passkey";
|
|
5
|
+
extensionName = "Passkey";
|
|
6
|
+
Assertion(assertion) {
|
|
7
|
+
return this.setTokensFromCall(this.call("Assertion", assertion, HttpMethod.Post), this.refreshAuthenticationType);
|
|
8
|
+
}
|
|
9
|
+
AssertionOptions() {
|
|
10
|
+
return this.call("AssertionOptions", null, HttpMethod.Post);
|
|
11
|
+
}
|
|
12
|
+
Credentials(deviceName, credential) {
|
|
13
|
+
return this.call("Credentials", { DeviceName: deviceName, Credential: credential }, HttpMethod.Post);
|
|
14
|
+
}
|
|
15
|
+
CredentialsOptions(password) {
|
|
16
|
+
return this.call("CredentialsOptions", { password }, HttpMethod.Post);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
AuthenticationExtension.add(Passkey, "passkey");
|
|
20
|
+
//# sourceMappingURL=passkey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey.js","sourceRoot":"","sources":["../../src/extensions/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAe,MAAM,4BAA4B,CAAA;AACnE,OAAO,uBAAuB,MAAM,2BAA2B,CAAA;AAG/D,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,uBAAuB;IAC3C,yBAAyB,GAAG,SAAS,CAAA;IAE3C,aAAa,GAAW,SAAS,CAAA;IAEpC,SAAS,CAAC,SAA4B;QAC5C,OAAO,IAAI,CAAC,iBAAiB,CAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,EAClD,IAAI,CAAC,yBAAyB,CAC9B,CAAA;IACF,CAAC;IAEM,gBAAgB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;IAC5D,CAAC;IAEM,WAAW,CAAC,UAAkB,EAAE,UAA8B;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;IACnG,CAAC;IAEM,kBAAkB,CAAC,QAAgB;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;IACpE,CAAC;CACD;AAsBD,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IServiceCall } from "@chaosinsight/portalclient";
|
|
2
2
|
import { ITokens } from "../index";
|
|
3
|
-
|
|
3
|
+
import AuthenticationExtension from "./authenticationExtension";
|
|
4
|
+
export default class Sessions extends AuthenticationExtension {
|
|
4
5
|
readonly passwordAuthenticationType = "Password";
|
|
5
6
|
protected extensionName: string;
|
|
6
7
|
passwordLogin(username: string, password: string): IServiceCall<ISession>;
|
|
7
|
-
private setTokensFromCall;
|
|
8
|
-
private setTokens;
|
|
9
8
|
}
|
|
10
9
|
export interface ISession {
|
|
11
10
|
Id: string;
|
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
export default class Sessions extends
|
|
1
|
+
import { HttpMethod, Encoding } from "@chaosinsight/portalclient";
|
|
2
|
+
import AuthenticationExtension from "./authenticationExtension";
|
|
3
|
+
export default class Sessions extends AuthenticationExtension {
|
|
4
4
|
passwordAuthenticationType = "Password";
|
|
5
5
|
extensionName = "Sessions";
|
|
6
6
|
passwordLogin(username, password) {
|
|
7
|
-
return this.
|
|
8
|
-
}
|
|
9
|
-
setTokensFromCall(call, authenticationType) {
|
|
10
|
-
return this.onSuccess(call, r => this.setTokens(r, authenticationType));
|
|
11
|
-
}
|
|
12
|
-
setTokens(session, authenticationType) {
|
|
13
|
-
this.setAccessToken(session.Tokens.Access, authenticationType);
|
|
14
|
-
if (session.Tokens.Refresh)
|
|
15
|
-
RefreshTokenCreatedEvent.dispatch(session.Tokens.Refresh, this.client);
|
|
7
|
+
return this.setTokensFromSessionCall(this.call("PasswordLogin", { username, password }, HttpMethod.Post, false, Encoding.FormData), this.passwordAuthenticationType);
|
|
16
8
|
}
|
|
17
9
|
}
|
|
18
|
-
|
|
10
|
+
AuthenticationExtension.add(Sessions, "sessions");
|
|
19
11
|
//# sourceMappingURL=sessions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/extensions/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/extensions/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,QAAQ,EAAe,MAAM,4BAA4B,CAAA;AAE7E,OAAO,uBAAuB,MAAM,2BAA2B,CAAA;AAE/D,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,uBAAuB;IAC5C,0BAA0B,GAAG,UAAU,CAAA;IAE7C,aAAa,GAAW,UAAU,CAAA;IAErC,aAAa,CAAC,QAAgB,EAAE,QAAgB;QACtD,OAAO,IAAI,CAAC,wBAAwB,CACnC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC3F,IAAI,CAAC,0BAA0B,CAC/B,CAAA;IACF,CAAC;CACD;AAUD,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { IServiceCall } from "@chaosinsight/portalclient";
|
|
2
|
+
import AuthenticationExtension from "./authenticationExtension";
|
|
3
|
+
export default class Tokens extends AuthenticationExtension {
|
|
3
4
|
readonly refreshAuthenticationType = "RefreshToken";
|
|
4
5
|
protected extensionName: string;
|
|
5
6
|
post(refreshToken: string): IServiceCall<ITokens>;
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
export default class Tokens extends
|
|
1
|
+
import { HttpMethod } from "@chaosinsight/portalclient";
|
|
2
|
+
import AuthenticationExtension from "./authenticationExtension";
|
|
3
|
+
export default class Tokens extends AuthenticationExtension {
|
|
4
4
|
refreshAuthenticationType = "RefreshToken";
|
|
5
5
|
extensionName = "Tokens";
|
|
6
6
|
post(refreshToken) {
|
|
7
|
-
return this.
|
|
8
|
-
this.setAccessToken(r.Access, this.refreshAuthenticationType);
|
|
9
|
-
RefreshTokenCreatedEvent.dispatch(r.Refresh, this.client);
|
|
10
|
-
});
|
|
7
|
+
return this.setTokensFromCall(this.call(null, null, HttpMethod.Post, refreshToken), this.refreshAuthenticationType);
|
|
11
8
|
}
|
|
12
9
|
refreshDelete(refreshToken) {
|
|
13
10
|
return this.call("Refresh", null, HttpMethod.Delete, refreshToken);
|
|
14
11
|
}
|
|
15
12
|
}
|
|
16
|
-
|
|
13
|
+
AuthenticationExtension.add(Tokens, "tokens");
|
|
17
14
|
//# sourceMappingURL=tokens.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/extensions/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/extensions/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAe,MAAM,4BAA4B,CAAA;AACnE,OAAO,uBAAuB,MAAM,2BAA2B,CAAA;AAE/D,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,uBAAuB;IAC1C,yBAAyB,GAAG,cAAc,CAAA;IAEhD,aAAa,GAAW,QAAQ,CAAA;IAEnC,IAAI,CAAC,YAAoB;QAC/B,OAAO,IAAI,CAAC,iBAAiB,CAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,EACpD,IAAI,CAAC,yBAAyB,CAC9B,CAAA;IACF,CAAC;IAEM,aAAa,CAAC,YAAoB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACnE,CAAC;CACD;AAOD,uBAAuB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IServiceCall } from "@chaosinsight/portalclient";
|
|
2
2
|
import { ISession } from "../index";
|
|
3
|
-
|
|
3
|
+
import AuthenticationExtension from "./authenticationExtension";
|
|
4
|
+
export default class Users extends AuthenticationExtension {
|
|
4
5
|
readonly authenticationType = "UserCreation";
|
|
5
6
|
protected extensionName: string;
|
|
6
7
|
get(role: UserRole, lastSeenGreaterThan: Date): IServiceCall<IPublicUser[]>;
|
package/dist/extensions/users.js
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
export default class Users extends
|
|
1
|
+
import { HttpMethod } from "@chaosinsight/portalclient";
|
|
2
|
+
import AuthenticationExtension from "./authenticationExtension";
|
|
3
|
+
export default class Users extends AuthenticationExtension {
|
|
4
4
|
authenticationType = "UserCreation";
|
|
5
5
|
extensionName = "Users";
|
|
6
6
|
get(role, lastSeenGreaterThan) {
|
|
7
7
|
return this.call(null, { role, lastSeenGreaterThan }, HttpMethod.Get);
|
|
8
8
|
}
|
|
9
9
|
post(name, email, password, language, consentToTermsOfUse, consentToMarketing, consentToNotifications, token) {
|
|
10
|
-
return this.
|
|
11
|
-
this.setAccessToken(session.Tokens.Access, this.authenticationType);
|
|
12
|
-
RefreshTokenCreatedEvent.dispatch(session.Tokens.Refresh, this.client);
|
|
13
|
-
});
|
|
10
|
+
return this.setTokensFromSessionCall(this.call(null, { name, email, password, language, consentToTermsOfUse, consentToMarketing, consentToNotifications }, HttpMethod.Post, token), this.authenticationType);
|
|
14
11
|
}
|
|
15
12
|
put(name, language, consentToTermsOfUse, consentToMarketing, consentToNotifications, uiVersion) {
|
|
16
13
|
return this.call(null, { name, language, consentToTermsOfUse, consentToMarketing, consentToNotifications, uiVersion }, HttpMethod.Put);
|
|
@@ -36,5 +33,5 @@ export var UserRole;
|
|
|
36
33
|
UserRole[UserRole["administrator"] = 0] = "administrator";
|
|
37
34
|
UserRole[UserRole["member"] = 1] = "member";
|
|
38
35
|
})(UserRole || (UserRole = {}));
|
|
39
|
-
|
|
36
|
+
AuthenticationExtension.add(Users, "users");
|
|
40
37
|
//# sourceMappingURL=users.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/extensions/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/extensions/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAe,MAAM,4BAA4B,CAAA;AAEnE,OAAO,uBAAuB,MAAM,2BAA2B,CAAA;AAE/D,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,uBAAuB;IACzC,kBAAkB,GAAG,cAAc,CAAA;IAEzC,aAAa,GAAW,OAAO,CAAA;IAElC,GAAG,CAAC,IAAc,EAAE,mBAAyB;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,mBAAmB,EAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IACpE,CAAC;IAEM,IAAI,CAAC,IAAY,EAAE,KAAa,EAAE,QAAgB,EAAE,QAAgB,EAAE,mBAA4B,EAAE,kBAA2B,EAAE,sBAA+B,EAAE,KAAa;QACrL,OAAO,IAAI,CAAC,wBAAwB,CACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAC,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAC3I,IAAI,CAAC,kBAAkB,CACvB,CAAA;IACF,CAAC;IAEM,GAAG,CAAC,IAAa,EAAE,QAAiB,EAAE,mBAA6B,EAAE,kBAA4B,EAAE,sBAAgC,EAAE,SAAkB;QAC7J,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,SAAS,EAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IACrI,CAAC;IAEM,MAAM;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAChD,CAAC;IAEM,EAAE;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC;IAEM,OAAO,CAAC,KAAa,EAAE,eAAuB;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,eAAe,EAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IACnE,CAAC;IAEM,cAAc,CAAC,QAAuB,EAAE,WAA0B,EAAE,eAA8B;QACxG,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IAC3F,CAAC;IAEM,cAAc;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC7D,CAAC;CACD;AAED,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IACnB,yDAAiB,CAAA;IACjB,2CAAU,CAAA;AACX,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB;AAmCD,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import "./extensions/liveDeals";
|
|
|
6
6
|
import "./extensions/locations";
|
|
7
7
|
import "./extensions/orders";
|
|
8
8
|
import "./extensions/organizations";
|
|
9
|
+
import "./extensions/passkey";
|
|
9
10
|
import "./extensions/passwords";
|
|
10
11
|
import "./extensions/posts";
|
|
11
12
|
import "./extensions/publicDeals";
|
|
@@ -33,6 +34,7 @@ export type { IFilter } from "./extensions/filters";
|
|
|
33
34
|
export type { ILocation, ILocationInvitation, ILocationWithServices, ILocationDealConfiguration, ILocationStatisticsConfiguration, ILocationFeatures, IPostSuggestion, IExternalLocation } from "./extensions/locations";
|
|
34
35
|
export type { IOrder, IOrderLine } from "./extensions/orders";
|
|
35
36
|
export type { IDatedPostStatistics, IOrganization, IOrganizationInvitation, IOrganizationMembership, IOrganizationPermission, IPostStatistics, IDetailedPostStatistics, ISummaryStatistics, ISummeryLocationStatistics, ISummeryPostStatistics, IFeatureFlags, ILocationCreationData, IOrganizationReviewConfiguration, IOrganizationNotificationConfiguration, IOrganizationDealsConfiguration, IOrganizationStatisticsConfiguration, IExternalOrganization } from "./extensions/organizations";
|
|
37
|
+
export type { IPasskeyAssertion, IPasskeyCredential } from "./extensions/passkey";
|
|
36
38
|
export type { IDated, IDeleted, IPost, IPostWithStatisticsAndDeal, IPostWithStatisticsAndLocation, IPostFromTemplate, IPostData, IPostingFailure, IPostingSuccess, IPostError, IServicePostError, IPostLocation, IPostTypeData, IPostTypeDataDeal, IPostTypeDataFacebookCarousel, IPostTypeDataFacebookLive, IPostTypeDataFacebookReel, ICarouselItem } from "./extensions/posts";
|
|
37
39
|
export type { IPublicDeal } from "./extensions/publicDeals";
|
|
38
40
|
export type { IPublicLocation } from "./extensions/publicLocations";
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import "./extensions/liveDeals";
|
|
|
6
6
|
import "./extensions/locations";
|
|
7
7
|
import "./extensions/orders";
|
|
8
8
|
import "./extensions/organizations";
|
|
9
|
+
import "./extensions/passkey";
|
|
9
10
|
import "./extensions/passwords";
|
|
10
11
|
import "./extensions/posts";
|
|
11
12
|
import "./extensions/publicDeals";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAA;AACnC,OAAO,oBAAoB,CAAA;AAC3B,OAAO,sBAAsB,CAAA;AAC7B,OAAO,yBAAyB,CAAA;AAChC,OAAO,wBAAwB,CAAA;AAC/B,OAAO,wBAAwB,CAAA;AAC/B,OAAO,qBAAqB,CAAA;AAC5B,OAAO,4BAA4B,CAAA;AACnC,OAAO,wBAAwB,CAAA;AAC/B,OAAO,oBAAoB,CAAA;AAC3B,OAAO,0BAA0B,CAAA;AACjC,OAAO,8BAA8B,CAAA;AACrC,OAAO,iCAAiC,CAAA;AACxC,OAAO,iCAAiC,CAAA;AACxC,OAAO,uBAAuB,CAAA;AAC9B,OAAO,wBAAwB,CAAA;AAC/B,OAAO,kCAAkC,CAAA;AACzC,OAAO,qBAAqB,CAAA;AAC5B,OAAO,oBAAoB,CAAA;AAE3B,OAAO,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAC,OAAO,IAAI,wBAAwB,EAAC,MAAM,mCAAmC,CAAA;AAErF,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAC,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,gCAAgC,EAAC,MAAM,4BAA4B,CAAA;AAC5I,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AACnH,OAAO,EAAC,oBAAoB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,iCAAiC,CAAA;AACvK,OAAO,EAAC,qBAAqB,EAAC,MAAM,iCAAiC,CAAA;AACrE,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAA;AACnC,OAAO,oBAAoB,CAAA;AAC3B,OAAO,sBAAsB,CAAA;AAC7B,OAAO,yBAAyB,CAAA;AAChC,OAAO,wBAAwB,CAAA;AAC/B,OAAO,wBAAwB,CAAA;AAC/B,OAAO,qBAAqB,CAAA;AAC5B,OAAO,4BAA4B,CAAA;AACnC,OAAO,sBAAsB,CAAA;AAC7B,OAAO,wBAAwB,CAAA;AAC/B,OAAO,oBAAoB,CAAA;AAC3B,OAAO,0BAA0B,CAAA;AACjC,OAAO,8BAA8B,CAAA;AACrC,OAAO,iCAAiC,CAAA;AACxC,OAAO,iCAAiC,CAAA;AACxC,OAAO,uBAAuB,CAAA;AAC9B,OAAO,wBAAwB,CAAA;AAC/B,OAAO,kCAAkC,CAAA;AACzC,OAAO,qBAAqB,CAAA;AAC5B,OAAO,oBAAoB,CAAA;AAE3B,OAAO,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAC,OAAO,IAAI,wBAAwB,EAAC,MAAM,mCAAmC,CAAA;AAErF,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAC,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,gCAAgC,EAAC,MAAM,4BAA4B,CAAA;AAC5I,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AACnH,OAAO,EAAC,oBAAoB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,iCAAiC,CAAA;AACvK,OAAO,EAAC,qBAAqB,EAAC,MAAM,iCAAiC,CAAA;AACrE,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,SAAS,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chaosinsight/postoffice-portalclient",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2-beta.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"@chaosinsight/portalclient": "^4.0.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@chaosinsight/portalclient": "4.0.
|
|
25
|
-
"typescript": "5.9.2"
|
|
24
|
+
"@chaosinsight/portalclient": "4.0.0",
|
|
25
|
+
"typescript": "^5.9.2"
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {Extension, IServiceCall, IExtension, IExtensionConstructor} from "@chaosinsight/portalclient"
|
|
2
|
+
import {ISession, ITokens, RefreshTokenCreatedEvent} from "../index"
|
|
3
|
+
|
|
4
|
+
export default abstract class AuthenticationExtension extends Extension {
|
|
5
|
+
protected setTokensFromSessionCall(call: IServiceCall<ISession>, authenticationType: string): IServiceCall<ISession> {
|
|
6
|
+
return this.onSuccess(call, r => this.setTokens(r.Tokens, authenticationType))
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
protected setTokensFromCall(call: IServiceCall<ITokens>, authenticationType: string): IServiceCall<ITokens> {
|
|
10
|
+
return this.onSuccess(call, r => this.setTokens(r, authenticationType))
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
protected setTokens(tokens: ITokens, authenticationType: string): void {
|
|
14
|
+
this.setAccessToken(tokens.Access, authenticationType)
|
|
15
|
+
|
|
16
|
+
if (tokens.Refresh)
|
|
17
|
+
RefreshTokenCreatedEvent.dispatch(tokens.Refresh, this.client)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public static add<T extends IExtension>(extensionConstructor: IExtensionConstructor<T>, extensionName: string): void {
|
|
21
|
+
Extension.add(extensionConstructor, extensionName)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import {HttpMethod, IServiceCall} from "@chaosinsight/portalclient"
|
|
2
|
+
import AuthenticationExtension from "./authenticationExtension"
|
|
3
|
+
import {ITokens} from "../index"
|
|
4
|
+
|
|
5
|
+
export default class Passkey extends AuthenticationExtension {
|
|
6
|
+
public readonly refreshAuthenticationType = "Passkey"
|
|
7
|
+
|
|
8
|
+
protected extensionName: string = "Passkey"
|
|
9
|
+
|
|
10
|
+
public Assertion(assertion: IPasskeyAssertion): IServiceCall<ITokens> {
|
|
11
|
+
return this.setTokensFromCall(
|
|
12
|
+
this.call("Assertion", assertion, HttpMethod.Post),
|
|
13
|
+
this.refreshAuthenticationType
|
|
14
|
+
)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public AssertionOptions(): IServiceCall<string> {
|
|
18
|
+
return this.call("AssertionOptions", null, HttpMethod.Post)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public Credentials(deviceName: string, credential: IPasskeyCredential): IServiceCall<void> {
|
|
22
|
+
return this.call("Credentials", {DeviceName: deviceName, Credential: credential}, HttpMethod.Post)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public CredentialsOptions(password: string): IServiceCall<string> {
|
|
26
|
+
return this.call("CredentialsOptions", {password}, HttpMethod.Post)
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface IPasskeyCredential {
|
|
31
|
+
Id: string,
|
|
32
|
+
RawId: string,
|
|
33
|
+
Response: {
|
|
34
|
+
AttestationObject: string,
|
|
35
|
+
ClientDataJSON: string
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface IPasskeyAssertion {
|
|
40
|
+
Id: string,
|
|
41
|
+
RawId: string,
|
|
42
|
+
Response: {
|
|
43
|
+
AuthenticatorData: string,
|
|
44
|
+
Signature: string,
|
|
45
|
+
ClientDataJson: string,
|
|
46
|
+
UserHandle: string
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
AuthenticationExtension.add(Passkey, "passkey")
|
|
51
|
+
|
|
52
|
+
declare module "@chaosinsight/portalclient" {
|
|
53
|
+
// tslint:disable-next-line
|
|
54
|
+
interface ExtensionHandler {
|
|
55
|
+
passkey: Passkey
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -1,27 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {ITokens
|
|
1
|
+
import {HttpMethod, Encoding, IServiceCall} from "@chaosinsight/portalclient"
|
|
2
|
+
import {ITokens} from "../index"
|
|
3
|
+
import AuthenticationExtension from "./authenticationExtension"
|
|
3
4
|
|
|
4
|
-
export default class Sessions extends
|
|
5
|
+
export default class Sessions extends AuthenticationExtension {
|
|
5
6
|
public readonly passwordAuthenticationType = "Password"
|
|
6
7
|
|
|
7
8
|
protected extensionName: string = "Sessions"
|
|
8
9
|
|
|
9
10
|
public passwordLogin(username: string, password: string): IServiceCall<ISession> {
|
|
10
|
-
return this.
|
|
11
|
+
return this.setTokensFromSessionCall(
|
|
11
12
|
this.call("PasswordLogin", {username, password}, HttpMethod.Post, false, Encoding.FormData),
|
|
12
13
|
this.passwordAuthenticationType
|
|
13
14
|
)
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
private setTokensFromCall(call: IServiceCall<ISession>, authenticationType: string): IServiceCall<ISession> {
|
|
17
|
-
return this.onSuccess(call, r => this.setTokens(r, authenticationType))
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
private setTokens(session: ISession, authenticationType: string): void {
|
|
21
|
-
this.setAccessToken(session.Tokens.Access, authenticationType)
|
|
22
|
-
if (session.Tokens.Refresh)
|
|
23
|
-
RefreshTokenCreatedEvent.dispatch(session.Tokens.Refresh, this.client)
|
|
24
|
-
}
|
|
25
16
|
}
|
|
26
17
|
|
|
27
18
|
export interface ISession {
|
|
@@ -32,7 +23,7 @@ export interface ISession {
|
|
|
32
23
|
Tokens: ITokens
|
|
33
24
|
}
|
|
34
25
|
|
|
35
|
-
|
|
26
|
+
AuthenticationExtension.add(Sessions, "sessions")
|
|
36
27
|
|
|
37
28
|
declare module "@chaosinsight/portalclient" {
|
|
38
29
|
// tslint:disable-next-line
|
package/src/extensions/tokens.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import {HttpMethod, IServiceCall} from "@chaosinsight/portalclient"
|
|
2
|
+
import AuthenticationExtension from "./authenticationExtension"
|
|
3
3
|
|
|
4
|
-
export default class Tokens extends
|
|
4
|
+
export default class Tokens extends AuthenticationExtension {
|
|
5
5
|
public readonly refreshAuthenticationType = "RefreshToken"
|
|
6
|
+
|
|
6
7
|
protected extensionName: string = "Tokens"
|
|
7
8
|
|
|
8
9
|
public post(refreshToken: string): IServiceCall<ITokens> {
|
|
9
|
-
return this.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
})
|
|
10
|
+
return this.setTokensFromCall(
|
|
11
|
+
this.call(null, null, HttpMethod.Post, refreshToken),
|
|
12
|
+
this.refreshAuthenticationType
|
|
13
|
+
)
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
public refreshDelete(refreshToken: string): IServiceCall<void> {
|
|
@@ -23,7 +23,7 @@ export interface ITokens {
|
|
|
23
23
|
Refresh: string
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
AuthenticationExtension.add(Tokens, "tokens")
|
|
27
27
|
|
|
28
28
|
declare module "@chaosinsight/portalclient" {
|
|
29
29
|
// tslint:disable-next-line
|
package/src/extensions/users.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {ISession
|
|
1
|
+
import {HttpMethod, IServiceCall} from "@chaosinsight/portalclient"
|
|
2
|
+
import {ISession} from "../index"
|
|
3
|
+
import AuthenticationExtension from "./authenticationExtension"
|
|
3
4
|
|
|
4
|
-
export default class Users extends
|
|
5
|
+
export default class Users extends AuthenticationExtension {
|
|
5
6
|
public readonly authenticationType = "UserCreation"
|
|
7
|
+
|
|
6
8
|
protected extensionName: string = "Users"
|
|
7
9
|
|
|
8
10
|
public get(role: UserRole, lastSeenGreaterThan: Date): IServiceCall<IPublicUser[]> {
|
|
@@ -10,11 +12,9 @@ export default class Users extends Extension {
|
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
public post(name: string, email: string, password: string, language: string, consentToTermsOfUse: boolean, consentToMarketing: boolean, consentToNotifications: boolean, token: string): IServiceCall<ISession> {
|
|
13
|
-
return this.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
RefreshTokenCreatedEvent.dispatch(session.Tokens.Refresh, this.client)
|
|
17
|
-
}
|
|
15
|
+
return this.setTokensFromSessionCall(
|
|
16
|
+
this.call(null, {name, email, password, language, consentToTermsOfUse, consentToMarketing, consentToNotifications}, HttpMethod.Post, token),
|
|
17
|
+
this.authenticationType
|
|
18
18
|
)
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -81,7 +81,7 @@ export interface ISignUpToken {
|
|
|
81
81
|
Token: string
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
AuthenticationExtension.add(Users, "users")
|
|
85
85
|
|
|
86
86
|
declare module "@chaosinsight/portalclient" {
|
|
87
87
|
// tslint:disable-next-line
|
package/src/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import "./extensions/liveDeals"
|
|
|
6
6
|
import "./extensions/locations"
|
|
7
7
|
import "./extensions/orders"
|
|
8
8
|
import "./extensions/organizations"
|
|
9
|
+
import "./extensions/passkey"
|
|
9
10
|
import "./extensions/passwords"
|
|
10
11
|
import "./extensions/posts"
|
|
11
12
|
import "./extensions/publicDeals"
|
|
@@ -36,6 +37,7 @@ export type {IFilter} from "./extensions/filters"
|
|
|
36
37
|
export type {ILocation, ILocationInvitation, ILocationWithServices, ILocationDealConfiguration, ILocationStatisticsConfiguration, ILocationFeatures, IPostSuggestion, IExternalLocation} from "./extensions/locations"
|
|
37
38
|
export type {IOrder, IOrderLine} from "./extensions/orders"
|
|
38
39
|
export type {IDatedPostStatistics, IOrganization, IOrganizationInvitation, IOrganizationMembership, IOrganizationPermission, IPostStatistics, IDetailedPostStatistics, ISummaryStatistics, ISummeryLocationStatistics, ISummeryPostStatistics, IFeatureFlags, ILocationCreationData, IOrganizationReviewConfiguration, IOrganizationNotificationConfiguration, IOrganizationDealsConfiguration, IOrganizationStatisticsConfiguration, IExternalOrganization} from "./extensions/organizations"
|
|
40
|
+
export type {IPasskeyAssertion, IPasskeyCredential} from "./extensions/passkey"
|
|
39
41
|
export type {IDated, IDeleted, IPost, IPostWithStatisticsAndDeal, IPostWithStatisticsAndLocation, IPostFromTemplate, IPostData, IPostingFailure, IPostingSuccess, IPostError, IServicePostError, IPostLocation, IPostTypeData, IPostTypeDataDeal, IPostTypeDataFacebookCarousel, IPostTypeDataFacebookLive, IPostTypeDataFacebookReel, ICarouselItem} from "./extensions/posts"
|
|
40
42
|
export type {IPublicDeal} from "./extensions/publicDeals"
|
|
41
43
|
export type {IPublicLocation} from "./extensions/publicLocations"
|