@authticon/client 0.0.0-beta39 → 0.0.0-beta40
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/authticon.d.ts +57 -15
- package/dist/authticon.d.ts.map +1 -1
- package/dist/browser.d.ts +57 -15
- package/dist/browser.d.ts.map +1 -1
- package/dist/clients/generated/index.d.ts +2 -2
- package/dist/clients/generated/index.d.ts.map +1 -1
- package/dist/clients/generated/index.js +1 -1
- package/dist/clients/generated/index.js.map +1 -1
- package/dist/clients/generated/sdk.gen.d.ts +9 -5
- package/dist/clients/generated/sdk.gen.d.ts.map +1 -1
- package/dist/clients/generated/sdk.gen.js +20 -8
- package/dist/clients/generated/sdk.gen.js.map +1 -1
- package/dist/clients/generated/types.gen.d.ts +54 -27
- package/dist/clients/generated/types.gen.d.ts.map +1 -1
- package/dist/clients/user.d.ts +25 -2
- package/dist/clients/user.d.ts.map +1 -1
- package/dist/clients/user.js +6 -2
- package/dist/clients/user.js.map +1 -1
- package/dist/generated/index.d.ts +2 -2
- package/dist/generated/index.d.ts.map +1 -1
- package/dist/generated/index.js +1 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/sdk.gen.d.ts +5 -1
- package/dist/generated/sdk.gen.d.ts.map +1 -1
- package/dist/generated/sdk.gen.js +12 -0
- package/dist/generated/sdk.gen.js.map +1 -1
- package/dist/generated/types.gen.d.ts +32 -11
- package/dist/generated/types.gen.d.ts.map +1 -1
- package/dist/node.d.ts +4 -2
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +1 -1
- package/dist/node.js.map +1 -1
- package/dist/session.d.ts +58 -16
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +126 -197
- package/dist/session.js.map +1 -1
- package/package.json +1 -1
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,OAAO,EAEb,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,OAAO,EAAE,CAAC;AAIxB,KAAK,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;IACxD,CAAC,OAAO,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,CAAC,EAAE,mBAAmB,CAAC;KACpC,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO,EAAE,oBAAoB,CAAA;KAAE,CAAC,CAAC;IAClE,CAAC,OAAO,EAAE;QACR,OAAO,EAAE,aAAa,CAAC;QACvB,YAAY,CAAC,EAAE,mBAAmB,CAAC;KACpC,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;CAC5D,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEzD,SAAS,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,OAAO,EAEb,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,OAAO,EAAE,CAAC;AAIxB,KAAK,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;IACxD,CAAC,OAAO,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,CAAC,EAAE,mBAAmB,CAAC;KACpC,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO,EAAE,oBAAoB,CAAA;KAAE,CAAC,CAAC;IAClE,CAAC,OAAO,EAAE;QACR,OAAO,EAAE,aAAa,CAAC;QACvB,YAAY,CAAC,EAAE,mBAAmB,CAAC;KACpC,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;CAC5D,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEzD,SAAS,gBAAgB,GAAG;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAiD/B;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;8BAzCnC,kEAAwB;;;4BAWxB,oEAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA2B3B,8DAAoB;;;;;;;;;;;;;;;;;;;;;6BAOrB,iEAAoB;;;6BAU1B,iEAAuB;;;iCAQjB,qEAA2B;;;;;;;gCAAoP,oEAA0B;;;;;;iCAAqL,qEAA2B,oBAAyB,qEAA2B;;;;;;;iCAAoQ,qEAA2B,oBAAyB,qEAA2B;;;;;;CAfv4B,CAAC;AACF,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,8BAA8B,EAC9B,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,mBAAmB,YAAY,CAAC;AAChC,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/node.js
CHANGED
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,8BAA8B,GAE/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,GAGd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQlD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAajD,MAAM,CAAC,MAAM,eAAe,GAAG,CAG7B,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,8BAA8B,GAE/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,GAGd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQlD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAajD,MAAM,CAAC,MAAM,eAAe,GAAG,CAG7B,OAAwD,EACxD,EAAE;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,OAAO,wBAAwB,CAAC;IAEtE,MAAM,QAAQ,GAAG,mBAAmB,CAClC,OAAO,EACP,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,EACtD,OAAO,CAAC,KAAK,CACd,CAAC;IAEF,MAAM,IAAI,GAAsB;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO;QACP,QAAQ;QACR,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;IAEF,MAAM,OAAO,GAA2B,KAAK,EAAE,cAAc,EAAE,EAAE;QAC/D,MAAM,OAAO,GACX,SAAS,IAAI,cAAc;YACzB,CAAC,CAAC,8BAA8B,CAAC,cAAc,CAAC,OAAO,CAAC;YACxD,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;QAE7B,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,IAAI,EACJ,OAAO,EACP,cAAc,CAAC,YAAY,CAC5B,CAAC;QAEF,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAS,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO;QACL,OAAO;QAEP,MAAM,EAAE;YACN,MAAM,EAAE,QAAQ,CAAC,WAAW;YAC5B,aAAa,EAAE,QAAQ,CAAC,aAAa;SACtC;QAED,IAAI,EAAE,GAAG,EAAE,CACT,gBAAgB,CAAC;YACf,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QAEJ,KAAK,EAAE,CAAC,YAAiC,EAAE,EAAE,CAC3C,iBAAiB,CAAC;YAChB,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAE;YACjD,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;KACL,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,8BAA8B,GAE/B,MAAM,mBAAmB,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
|
package/dist/session.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Logger } from "pino";
|
|
2
|
-
import type { AcceptInvitationData, ChangeEmailData, ChangePasswordData, ChangePhoneData, CreateGuestUserData, CreateInvitationData, DeleteInvitationData, DisableTwoFaData, EnableTwoFaData, ForgotPasswordData, LoginData, RegisterData, ResendEmailConfirmationData, SendMagicLinkData, SendTwoFaCodeData, SetPasswordData, VerifyEmailData, VerifyMagicLinkData, VerifyPhoneData } from "./clients/generated/types.gen.js";
|
|
2
|
+
import type { AcceptInvitationData, ChangeEmailData, ChangePasswordData, ChangePhoneData, CreateGuestUserData, CreateInvitationData, DeleteInvitationData, DisableTwoFaData, EnableTwoFaData, ForgotPasswordData, LoginData, RegisterData, ResendEmailConfirmationData, SendMagicLinkData, SendTwoFaCodeData, SetPasswordData, UpdateMeData, VerifyEmailData, VerifyMagicLinkData, VerifyPhoneData } from "./clients/generated/types.gen.js";
|
|
3
3
|
import { type TokenVerifier } from "./tokens.js";
|
|
4
4
|
import type { AccessTokenPayload, Challenge, CookieAdapter, SessionUser, TokenStorageOptions } from "./types.js";
|
|
5
5
|
export type SessionClientDeps = {
|
|
@@ -11,31 +11,63 @@ export type SessionClientDeps = {
|
|
|
11
11
|
export declare const createSessionUser: <Payload extends Record<string, any> = Record<string, any>>(tokenPayload: AccessTokenPayload<Payload>) => SessionUser<Payload>;
|
|
12
12
|
export type Session<Payload extends Record<string, any> = Record<string, any>> = Awaited<ReturnType<typeof createSession<Payload>>>;
|
|
13
13
|
export declare const createSession: <Payload extends Record<string, any> = Record<string, any>>(deps: SessionClientDeps, cookies: CookieAdapter, tokenStorageOptions?: TokenStorageOptions) => Promise<{
|
|
14
|
-
getFirstChallenge: () => Challenge | undefined;
|
|
15
|
-
getMe: () => Promise<{
|
|
16
|
-
userId: string;
|
|
17
|
-
}>;
|
|
18
14
|
login: (params: LoginData["body"]) => Promise<SessionUser<Payload>>;
|
|
19
15
|
register: (params: RegisterData["body"]) => Promise<{
|
|
20
16
|
userId: string;
|
|
21
17
|
}>;
|
|
22
|
-
sendMagicLink: (params: SendMagicLinkData["body"]) => Promise<
|
|
18
|
+
sendMagicLink: (params: SendMagicLinkData["body"]) => Promise<{
|
|
19
|
+
success: boolean;
|
|
20
|
+
}>;
|
|
23
21
|
loginWithMagicLink: (params: VerifyMagicLinkData["body"]) => Promise<SessionUser<Payload>>;
|
|
24
|
-
forgotPassword: (params: ForgotPasswordData["body"]) => Promise<
|
|
22
|
+
forgotPassword: (params: ForgotPasswordData["body"]) => Promise<{
|
|
23
|
+
success: boolean;
|
|
24
|
+
}>;
|
|
25
25
|
verifyEmail: (params: VerifyEmailData["body"]) => Promise<void>;
|
|
26
26
|
createGuest: (params: CreateGuestUserData["body"]) => Promise<SessionUser<Payload>>;
|
|
27
27
|
acceptInvitation: (params: AcceptInvitationData["body"]) => Promise<SessionUser<Payload>>;
|
|
28
|
-
resendConfirmation: (params: ResendEmailConfirmationData["body"]) => Promise<
|
|
28
|
+
resendConfirmation: (params: ResendEmailConfirmationData["body"]) => Promise<{
|
|
29
|
+
success: boolean;
|
|
30
|
+
}>;
|
|
31
|
+
getMe: () => Promise<{
|
|
32
|
+
id: string;
|
|
33
|
+
email: string;
|
|
34
|
+
firstName: string | null;
|
|
35
|
+
lastName: string | null;
|
|
36
|
+
role: string;
|
|
37
|
+
isGuest: boolean;
|
|
38
|
+
claims: unknown;
|
|
39
|
+
phone: string | null;
|
|
40
|
+
locale: string;
|
|
41
|
+
passwordUpdatedAt: string | null;
|
|
42
|
+
hasPassword: boolean;
|
|
43
|
+
twoFaEnabled: boolean;
|
|
44
|
+
twoFaType: "APP" | "EMAIL" | "PHONE";
|
|
45
|
+
isBlocked: boolean;
|
|
46
|
+
isBlockedUntil: string | null;
|
|
47
|
+
phoneVerified: boolean;
|
|
48
|
+
emailVerified: boolean;
|
|
49
|
+
roles: Array<{
|
|
50
|
+
role: string;
|
|
51
|
+
group: string;
|
|
52
|
+
}>;
|
|
53
|
+
}>;
|
|
54
|
+
updateUser: (params: UpdateMeData["body"]) => Promise<{
|
|
55
|
+
id: string;
|
|
56
|
+
}>;
|
|
57
|
+
updateMe: (params: UpdateMeData["body"]) => Promise<{
|
|
58
|
+
id: string;
|
|
59
|
+
}>;
|
|
29
60
|
getUser: () => SessionUser<Payload> | null;
|
|
30
61
|
requireUser: () => SessionUser<Payload>;
|
|
62
|
+
getFirstChallenge: () => Challenge | undefined;
|
|
31
63
|
hasSession: () => boolean;
|
|
32
64
|
logout: () => Promise<void>;
|
|
33
65
|
refresh: () => Promise<void>;
|
|
34
|
-
changeEmail: (params: ChangeEmailData["body"]) => Promise<
|
|
35
|
-
changePassword: (params: ChangePasswordData["body"]) => Promise<
|
|
36
|
-
setPassword: (params: SetPasswordData["body"]) => Promise<
|
|
37
|
-
changePhone: (params: ChangePhoneData["body"]) => Promise<
|
|
38
|
-
verifyPhone: (params: VerifyPhoneData["body"]) => Promise<
|
|
66
|
+
changeEmail: (params: ChangeEmailData["body"]) => Promise<null>;
|
|
67
|
+
changePassword: (params: ChangePasswordData["body"]) => Promise<null>;
|
|
68
|
+
setPassword: (params: SetPasswordData["body"]) => Promise<null>;
|
|
69
|
+
changePhone: (params: ChangePhoneData["body"]) => Promise<null>;
|
|
70
|
+
verifyPhone: (params: VerifyPhoneData["body"]) => Promise<null>;
|
|
39
71
|
getTwoFaSecret: () => Promise<{
|
|
40
72
|
secret: string;
|
|
41
73
|
uri: string;
|
|
@@ -43,9 +75,19 @@ export declare const createSession: <Payload extends Record<string, any> = Recor
|
|
|
43
75
|
enableTwoFa: (params: EnableTwoFaData["body"]) => Promise<void>;
|
|
44
76
|
disableTwoFa: (params: DisableTwoFaData["body"]) => Promise<void>;
|
|
45
77
|
sendTwoFaCode: (params: SendTwoFaCodeData["body"]) => Promise<void>;
|
|
46
|
-
|
|
47
|
-
createInvitation: (params: CreateInvitationData["body"]) => Promise<
|
|
48
|
-
|
|
78
|
+
verifyTwoFaCode: (code: string, remember?: boolean) => Promise<SessionUser<Payload>>;
|
|
79
|
+
createInvitation: (params: CreateInvitationData["body"]) => Promise<{
|
|
80
|
+
id: string;
|
|
81
|
+
email: string;
|
|
82
|
+
token: string;
|
|
83
|
+
validTo: string;
|
|
84
|
+
role: string | null;
|
|
85
|
+
group: string | null;
|
|
86
|
+
returnUrl: string | null;
|
|
87
|
+
}>;
|
|
88
|
+
deleteInvitation: (params: DeleteInvitationData["path"]) => Promise<{
|
|
89
|
+
id: string;
|
|
90
|
+
}>;
|
|
49
91
|
tokens: {
|
|
50
92
|
getAccessToken: () => string | null;
|
|
51
93
|
getRefreshToken: () => string | null;
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,2BAA2B,EAC3B,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EACV,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,WAAW,EACX,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEzD,cAAc,kBAAkB,CAAC,OAAO,CAAC,KACxC,WAAW,CAAC,OAAO,CAcrB,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAC3E,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAErD,eAAO,MAAM,aAAa,GACxB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEzD,MAAM,iBAAiB,EACvB,SAAS,aAAa,EACtB,sBAAsB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,2BAA2B,EAC3B,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EACV,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,WAAW,EACX,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEzD,cAAc,kBAAkB,CAAC,OAAO,CAAC,KACxC,WAAW,CAAC,OAAO,CAcrB,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAC3E,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAErD,eAAO,MAAM,aAAa,GACxB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEzD,MAAM,iBAAiB,EACvB,SAAS,aAAa,EACtB,sBAAsB,mBAAmB;oBAwFvB,SAAS,CAAC,MAAM,CAAC;uBAWR,YAAY,CAAC,MAAM,CAAC;;;4BAMrB,iBAAiB,CAAC,MAAM,CAAC;;;iCAGd,mBAAmB,CAAC,MAAM,CAAC;6BAUrC,kBAAkB,CAAC,MAAM,CAAC;;;0BAG7B,eAAe,CAAC,MAAM,CAAC;0BAGjB,mBAAmB,CAAC,MAAM,CAAC;+BAQ5B,oBAAoB,CAAC,MAAM,CAAC;iCAM1B,2BAA2B,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;yBAKrC,YAAY,CAAC,MAAM,CAAC;;;uBAGtB,YAAY,CAAC,MAAM,CAAC;;;mBAGhC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;uBAEvB,WAAW,CAAC,OAAO,CAAC;6BAKd,SAAS,GAAG,SAAS;;;;0BA4BhB,eAAe,CAAC,MAAM,CAAC;6BAGpB,kBAAkB,CAAC,MAAM,CAAC;0BAG7B,eAAe,CAAC,MAAM,CAAC;0BAGvB,eAAe,CAAC,MAAM,CAAC;0BAGvB,eAAe,CAAC,MAAM,CAAC;;;;;0BASvB,eAAe,CAAC,MAAM,CAAC;2BAGtB,gBAAgB,CAAC,MAAM,CAAC;4BAGvB,iBAAiB,CAAC,MAAM,CAAC;4BAGzB,MAAM;+BAQH,oBAAoB,CAAC,MAAM,CAAC;;;;;;;;;+BAG5B,oBAAoB,CAAC,MAAM,CAAC;;;;;;yBAMpC,MAAM;;;;EAelC,CAAC"}
|
package/dist/session.js
CHANGED
|
@@ -3,8 +3,7 @@ import { createUserClient } from "./clients/user.js";
|
|
|
3
3
|
import { AuthticonError } from "./errors.js";
|
|
4
4
|
import { createTokenStorage } from "./tokens.js";
|
|
5
5
|
export const createSessionUser = (tokenPayload) => {
|
|
6
|
-
const { authticon, ...
|
|
7
|
-
const { iat, exp, nbf, iss, sub, aud, jti, ...userPayload } = rest;
|
|
6
|
+
const { authticon, iat, exp, nbf, iss, sub, aud, jti, ...userPayload } = tokenPayload;
|
|
8
7
|
return {
|
|
9
8
|
id: authticon.userId,
|
|
10
9
|
sessionId: authticon.sessionId,
|
|
@@ -23,23 +22,20 @@ export const createSession = async (deps, cookies, tokenStorageOptions) => {
|
|
|
23
22
|
let cachedUser = null;
|
|
24
23
|
const buildUserApi = () => {
|
|
25
24
|
const accessToken = storage.getAccessToken();
|
|
26
|
-
if (!accessToken)
|
|
25
|
+
if (!accessToken)
|
|
27
26
|
throw new AuthticonError("No access token available");
|
|
28
|
-
}
|
|
29
27
|
return createUserClient({ accessToken, baseUrl, logger });
|
|
30
28
|
};
|
|
31
29
|
const saveTokens = (tokens) => {
|
|
32
30
|
storage.setAccessToken(tokens.accessToken);
|
|
33
31
|
storage.setRefreshToken(tokens.refreshToken);
|
|
34
|
-
if (tokens.deviceId)
|
|
32
|
+
if (tokens.deviceId)
|
|
35
33
|
storage.setDeviceId(tokens.deviceId);
|
|
36
|
-
}
|
|
37
34
|
};
|
|
38
35
|
const verifyAndBuildUser = async (token) => {
|
|
39
36
|
const accessToken = token ?? storage.getAccessToken();
|
|
40
|
-
if (!accessToken)
|
|
37
|
+
if (!accessToken)
|
|
41
38
|
throw new AuthticonError("No access token found");
|
|
42
|
-
}
|
|
43
39
|
const payload = await verifier.verifyToken(accessToken);
|
|
44
40
|
return createSessionUser(payload);
|
|
45
41
|
};
|
|
@@ -48,14 +44,12 @@ export const createSession = async (deps, cookies, tokenStorageOptions) => {
|
|
|
48
44
|
if (!refreshToken)
|
|
49
45
|
return null;
|
|
50
46
|
try {
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
return null;
|
|
47
|
+
const result = await buildUserApi().refresh(refreshToken);
|
|
48
|
+
if (!result)
|
|
49
|
+
return null;
|
|
50
|
+
storage.setAccessToken(result.accessToken);
|
|
51
|
+
storage.setRefreshToken(result.refreshToken);
|
|
52
|
+
return result.accessToken;
|
|
59
53
|
}
|
|
60
54
|
catch {
|
|
61
55
|
storage.clear();
|
|
@@ -71,202 +65,137 @@ export const createSession = async (deps, cookies, tokenStorageOptions) => {
|
|
|
71
65
|
}
|
|
72
66
|
catch {
|
|
73
67
|
const newToken = await tryRefresh();
|
|
74
|
-
|
|
75
|
-
return null;
|
|
76
|
-
return verifyAndBuildUser(newToken);
|
|
68
|
+
return newToken ? verifyAndBuildUser(newToken) : null;
|
|
77
69
|
}
|
|
78
70
|
};
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const result = await authApi.login(params);
|
|
71
|
+
const authenticateWith = async (apiCall, errorMsg) => {
|
|
72
|
+
const result = await apiCall();
|
|
82
73
|
if (!result)
|
|
83
|
-
throw new AuthticonError(
|
|
74
|
+
throw new AuthticonError(errorMsg);
|
|
84
75
|
saveTokens(result);
|
|
85
76
|
cachedUser = await verifyAndBuildUser(result.accessToken);
|
|
86
77
|
return cachedUser;
|
|
87
78
|
};
|
|
88
|
-
const
|
|
89
|
-
const result = await
|
|
90
|
-
|
|
91
|
-
|
|
79
|
+
const refreshAfterCall = async (apiCall) => {
|
|
80
|
+
const result = await apiCall();
|
|
81
|
+
await tryRefresh();
|
|
82
|
+
cachedUser = await resolveUser();
|
|
83
|
+
if (!cachedUser)
|
|
84
|
+
throw new AuthticonError("User is not authenticated");
|
|
92
85
|
return result;
|
|
93
86
|
};
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
87
|
+
cachedUser = await resolveUser();
|
|
88
|
+
return {
|
|
89
|
+
login: (params) => {
|
|
90
|
+
const deviceId = storage.getDeviceId() || undefined;
|
|
91
|
+
return authenticateWith(() => authApi.login({
|
|
92
|
+
...params,
|
|
93
|
+
deviceId,
|
|
94
|
+
}), "Login failed");
|
|
95
|
+
},
|
|
96
|
+
register: async (params) => {
|
|
97
|
+
const result = await authApi.register(params);
|
|
98
|
+
if (!result)
|
|
99
|
+
throw new AuthticonError("Register failed");
|
|
100
|
+
return result;
|
|
101
|
+
},
|
|
102
|
+
sendMagicLink: (params) => authApi.sendMagicLink(params),
|
|
103
|
+
loginWithMagicLink: async (params) => {
|
|
104
|
+
const result = await authApi.verifyMagicLink(params);
|
|
105
|
+
if (!result)
|
|
106
|
+
throw new AuthticonError("Magic link verification failed");
|
|
107
|
+
if (!("accessToken" in result))
|
|
108
|
+
throw new AuthticonError("2FA challenge required");
|
|
102
109
|
saveTokens(result);
|
|
103
110
|
cachedUser = await verifyAndBuildUser(result.accessToken);
|
|
104
111
|
return cachedUser;
|
|
105
|
-
}
|
|
106
|
-
throw new AuthticonError("2FA challenge required");
|
|
107
|
-
};
|
|
108
|
-
const forgotPassword = async (params) => {
|
|
109
|
-
await authApi.forgotPassword(params);
|
|
110
|
-
};
|
|
111
|
-
const verifyEmail = async (params) => {
|
|
112
|
-
await authApi.verifyEmail(params);
|
|
113
|
-
};
|
|
114
|
-
const createGuest = async (params) => {
|
|
115
|
-
const result = await authApi.createGuestUser(params);
|
|
116
|
-
if (!result)
|
|
117
|
-
throw new AuthticonError("Guest creation failed");
|
|
118
|
-
storage.setAccessToken(result.token);
|
|
119
|
-
cachedUser = await verifyAndBuildUser(result.token);
|
|
120
|
-
return cachedUser;
|
|
121
|
-
};
|
|
122
|
-
const acceptInvitation = async (params) => {
|
|
123
|
-
const result = await authApi.acceptInvitation(params);
|
|
124
|
-
if (!result)
|
|
125
|
-
throw new AuthticonError("Invitation acceptance failed");
|
|
126
|
-
saveTokens(result);
|
|
127
|
-
cachedUser = await verifyAndBuildUser(result.accessToken);
|
|
128
|
-
return cachedUser;
|
|
129
|
-
};
|
|
130
|
-
const resendConfirmation = async (params) => {
|
|
131
|
-
await authApi.resendConfirmation(params);
|
|
132
|
-
};
|
|
133
|
-
const getMe = async () => {
|
|
134
|
-
const userApi = buildUserApi();
|
|
135
|
-
return userApi.getMe();
|
|
136
|
-
};
|
|
137
|
-
const getUser = () => cachedUser;
|
|
138
|
-
const requireUser = () => {
|
|
139
|
-
if (!cachedUser)
|
|
140
|
-
throw new AuthticonError("User is not authenticated");
|
|
141
|
-
return cachedUser;
|
|
142
|
-
};
|
|
143
|
-
const getFirstChallenge = () => {
|
|
144
|
-
if (!cachedUser)
|
|
145
|
-
throw new AuthticonError("User is not authenticated");
|
|
146
|
-
return cachedUser.challenges[0];
|
|
147
|
-
};
|
|
148
|
-
const isLoggedIn = () => storage.getAccessToken() !== null;
|
|
149
|
-
const logout = async () => {
|
|
150
|
-
const refreshToken = storage.getRefreshToken();
|
|
151
|
-
if (refreshToken) {
|
|
152
|
-
try {
|
|
153
|
-
const userApi = buildUserApi();
|
|
154
|
-
await userApi.logout(refreshToken);
|
|
155
|
-
}
|
|
156
|
-
catch {
|
|
157
|
-
// Best-effort server-side logout
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
storage.clear();
|
|
161
|
-
cachedUser = null;
|
|
162
|
-
};
|
|
163
|
-
const refreshSession = async () => {
|
|
164
|
-
const newToken = await tryRefresh();
|
|
165
|
-
if (!newToken)
|
|
166
|
-
throw new AuthticonError("Token refresh failed");
|
|
167
|
-
cachedUser = await verifyAndBuildUser(newToken);
|
|
168
|
-
};
|
|
169
|
-
const changeEmail = async (params) => {
|
|
170
|
-
const userApi = buildUserApi();
|
|
171
|
-
await userApi.changeEmail(params);
|
|
172
|
-
};
|
|
173
|
-
const changePassword = async (params) => {
|
|
174
|
-
const userApi = buildUserApi();
|
|
175
|
-
await userApi.changePassword(params);
|
|
176
|
-
};
|
|
177
|
-
const setPassword = async (params) => {
|
|
178
|
-
const userApi = buildUserApi();
|
|
179
|
-
await userApi.setPassword(params);
|
|
180
|
-
};
|
|
181
|
-
const changePhone = async (params) => {
|
|
182
|
-
const userApi = buildUserApi();
|
|
183
|
-
await userApi.changePhone(params);
|
|
184
|
-
};
|
|
185
|
-
const verifyPhone = async (params) => {
|
|
186
|
-
const userApi = buildUserApi();
|
|
187
|
-
await userApi.verifyPhone(params);
|
|
188
|
-
};
|
|
189
|
-
const getTwoFaSecret = async () => {
|
|
190
|
-
const userApi = buildUserApi();
|
|
191
|
-
const result = await userApi.getTwoFaSecret();
|
|
192
|
-
if (!result)
|
|
193
|
-
throw new AuthticonError("Failed to get 2FA secret");
|
|
194
|
-
return result;
|
|
195
|
-
};
|
|
196
|
-
const enableTwoFa = async (params) => {
|
|
197
|
-
const userApi = buildUserApi();
|
|
198
|
-
await userApi.enableTwoFa(params);
|
|
199
|
-
};
|
|
200
|
-
const disableTwoFa = async (params) => {
|
|
201
|
-
const userApi = buildUserApi();
|
|
202
|
-
await userApi.disableTwoFa(params);
|
|
203
|
-
};
|
|
204
|
-
const sendTwoFaCode = async (params) => {
|
|
205
|
-
const userApi = buildUserApi();
|
|
206
|
-
await userApi.sendTwoFaCode(params);
|
|
207
|
-
};
|
|
208
|
-
const completeTwoFaChallenge = async (code, remember = false) => {
|
|
209
|
-
const userApi = buildUserApi();
|
|
210
|
-
const result = await userApi.verifyTwoFa({ code, remember });
|
|
211
|
-
if (!result)
|
|
212
|
-
throw new AuthticonError("2FA verification failed");
|
|
213
|
-
cachedUser = await resolveUser();
|
|
214
|
-
if (!cachedUser)
|
|
215
|
-
throw new AuthticonError("User is not authenticated");
|
|
216
|
-
return cachedUser;
|
|
217
|
-
};
|
|
218
|
-
const createInvitation = async (params) => {
|
|
219
|
-
const userApi = buildUserApi();
|
|
220
|
-
await userApi.createInvitation(params);
|
|
221
|
-
};
|
|
222
|
-
const deleteInvitation = async (params) => {
|
|
223
|
-
const userApi = buildUserApi();
|
|
224
|
-
await userApi.deleteInvitation(params);
|
|
225
|
-
};
|
|
226
|
-
const tokens = {
|
|
227
|
-
getAccessToken: () => storage.getAccessToken(),
|
|
228
|
-
getRefreshToken: () => storage.getRefreshToken(),
|
|
229
|
-
verify: async (token) => {
|
|
230
|
-
const accessToken = token ?? storage.getAccessToken();
|
|
231
|
-
if (!accessToken)
|
|
232
|
-
throw new AuthticonError("No access token found");
|
|
233
|
-
return verifier.verifyToken(accessToken);
|
|
234
112
|
},
|
|
235
|
-
|
|
236
|
-
|
|
113
|
+
forgotPassword: (params) => authApi.forgotPassword(params),
|
|
114
|
+
verifyEmail: (params) => authApi.verifyEmail(params),
|
|
115
|
+
createGuest: async (params) => {
|
|
116
|
+
const result = await authApi.createGuestUser(params);
|
|
117
|
+
if (!result)
|
|
118
|
+
throw new AuthticonError("Guest creation failed");
|
|
119
|
+
storage.setAccessToken(result.token);
|
|
120
|
+
cachedUser = await verifyAndBuildUser(result.token);
|
|
121
|
+
return cachedUser;
|
|
122
|
+
},
|
|
123
|
+
acceptInvitation: (params) => authenticateWith(() => authApi.acceptInvitation(params), "Invitation acceptance failed"),
|
|
124
|
+
resendConfirmation: (params) => authApi.resendConfirmation(params),
|
|
125
|
+
getMe: async () => buildUserApi().getMe(),
|
|
126
|
+
updateUser: async (params) => buildUserApi().updateMe(params),
|
|
127
|
+
updateMe: async (params) => buildUserApi().updateMe(params),
|
|
128
|
+
getUser: () => cachedUser,
|
|
129
|
+
requireUser: () => {
|
|
130
|
+
if (!cachedUser)
|
|
131
|
+
throw new AuthticonError("User is not authenticated");
|
|
132
|
+
return cachedUser;
|
|
133
|
+
},
|
|
134
|
+
getFirstChallenge: () => {
|
|
135
|
+
if (!cachedUser)
|
|
136
|
+
throw new AuthticonError("User is not authenticated");
|
|
137
|
+
return cachedUser.challenges[0];
|
|
138
|
+
},
|
|
139
|
+
hasSession: () => storage.getAccessToken() !== null,
|
|
140
|
+
logout: async () => {
|
|
141
|
+
const refreshToken = storage.getRefreshToken();
|
|
142
|
+
if (refreshToken) {
|
|
143
|
+
try {
|
|
144
|
+
await buildUserApi().logout(refreshToken);
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
// Best-effort server-side logout
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
storage.clearAccessToken();
|
|
151
|
+
storage.clearRefreshToken();
|
|
152
|
+
storage.clearAdminRefreshToken();
|
|
237
153
|
cachedUser = null;
|
|
238
154
|
},
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
createInvitation,
|
|
268
|
-
deleteInvitation,
|
|
269
|
-
tokens
|
|
155
|
+
refresh: async () => {
|
|
156
|
+
const newToken = await tryRefresh();
|
|
157
|
+
if (!newToken)
|
|
158
|
+
throw new AuthticonError("Token refresh failed");
|
|
159
|
+
cachedUser = await verifyAndBuildUser(newToken);
|
|
160
|
+
},
|
|
161
|
+
changeEmail: async (params) => buildUserApi().changeEmail(params),
|
|
162
|
+
changePassword: async (params) => buildUserApi().changePassword(params),
|
|
163
|
+
setPassword: async (params) => buildUserApi().setPassword(params),
|
|
164
|
+
changePhone: async (params) => buildUserApi().changePhone(params),
|
|
165
|
+
verifyPhone: async (params) => buildUserApi().verifyPhone(params),
|
|
166
|
+
getTwoFaSecret: async () => {
|
|
167
|
+
const result = await buildUserApi().getTwoFaSecret();
|
|
168
|
+
if (!result)
|
|
169
|
+
throw new AuthticonError("Failed to get 2FA secret");
|
|
170
|
+
return result;
|
|
171
|
+
},
|
|
172
|
+
enableTwoFa: async (params) => refreshAfterCall(() => buildUserApi().enableTwoFa(params)),
|
|
173
|
+
disableTwoFa: async (params) => refreshAfterCall(() => buildUserApi().disableTwoFa(params)),
|
|
174
|
+
sendTwoFaCode: async (params) => buildUserApi().sendTwoFaCode(params),
|
|
175
|
+
verifyTwoFaCode: async (code, remember = false) => {
|
|
176
|
+
await buildUserApi().verifyTwoFa({ code, remember });
|
|
177
|
+
await tryRefresh();
|
|
178
|
+
cachedUser = await resolveUser();
|
|
179
|
+
if (!cachedUser)
|
|
180
|
+
throw new AuthticonError("User is not authenticated");
|
|
181
|
+
return cachedUser;
|
|
182
|
+
},
|
|
183
|
+
createInvitation: async (params) => buildUserApi().createInvitation(params),
|
|
184
|
+
deleteInvitation: async (params) => buildUserApi().deleteInvitation(params),
|
|
185
|
+
tokens: {
|
|
186
|
+
getAccessToken: () => storage.getAccessToken(),
|
|
187
|
+
getRefreshToken: () => storage.getRefreshToken(),
|
|
188
|
+
verify: async (token) => {
|
|
189
|
+
const accessToken = token ?? storage.getAccessToken();
|
|
190
|
+
if (!accessToken)
|
|
191
|
+
throw new AuthticonError("No access token found");
|
|
192
|
+
return verifier.verifyToken(accessToken);
|
|
193
|
+
},
|
|
194
|
+
clear: () => {
|
|
195
|
+
storage.clear();
|
|
196
|
+
cachedUser = null;
|
|
197
|
+
},
|
|
198
|
+
},
|
|
270
199
|
cookies,
|
|
271
200
|
};
|
|
272
201
|
};
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|