@choiceform/shared-auth 0.1.16 → 0.1.18
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/README.md +286 -134
- package/dist/__tests__/auth-utils.test.d.ts +5 -0
- package/dist/__tests__/auth-utils.test.d.ts.map +1 -0
- package/dist/__tests__/auth-utils.test.js +96 -0
- package/dist/__tests__/store.test.d.ts +5 -0
- package/dist/__tests__/store.test.d.ts.map +1 -0
- package/dist/__tests__/store.test.js +210 -0
- package/dist/__tests__/user-mapper.test.d.ts +5 -0
- package/dist/__tests__/user-mapper.test.d.ts.map +1 -0
- package/dist/__tests__/user-mapper.test.js +76 -0
- package/dist/api/auth-api.d.ts +93 -9
- package/dist/api/auth-api.d.ts.map +1 -1
- package/dist/api/auth-api.js +219 -80
- package/dist/api/client.d.ts +10 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +10 -0
- package/dist/api/organization-api.d.ts +2 -7
- package/dist/api/organization-api.d.ts.map +1 -1
- package/dist/api/organization-api.js +2 -17
- package/dist/api/team-api.d.ts +1 -5
- package/dist/api/team-api.d.ts.map +1 -1
- package/dist/api/team-api.js +5 -11
- package/dist/components/auth-sync.d.ts +27 -0
- package/dist/components/auth-sync.d.ts.map +1 -0
- package/dist/components/auth-sync.js +117 -0
- package/dist/components/protected-route.d.ts +18 -0
- package/dist/components/protected-route.d.ts.map +1 -0
- package/dist/components/protected-route.js +34 -0
- package/dist/components/sign-in-page.d.ts +21 -0
- package/dist/components/sign-in-page.d.ts.map +1 -0
- package/dist/components/sign-in-page.js +31 -0
- package/dist/config.js +1 -1
- package/dist/core.d.ts +148 -71
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +109 -28
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/use-auth-init.d.ts +4 -3
- package/dist/hooks/use-auth-init.d.ts.map +1 -1
- package/dist/hooks/use-auth-init.js +18 -30
- package/dist/hooks/use-auth-sync.d.ts +60 -0
- package/dist/hooks/use-auth-sync.d.ts.map +1 -0
- package/dist/hooks/use-auth-sync.js +116 -0
- package/dist/hooks/use-email-verification.d.ts +85 -0
- package/dist/hooks/use-email-verification.d.ts.map +1 -0
- package/dist/hooks/use-email-verification.js +145 -0
- package/dist/hooks/use-protected-route.d.ts +67 -0
- package/dist/hooks/use-protected-route.d.ts.map +1 -0
- package/dist/hooks/use-protected-route.js +102 -0
- package/dist/index.d.ts +12 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +43 -13
- package/dist/init.d.ts +127 -70
- package/dist/init.d.ts.map +1 -1
- package/dist/lib/auth-client.d.ts.map +1 -1
- package/dist/lib/auth-client.js +75 -2
- package/dist/services/auth-service.d.ts +101 -0
- package/dist/services/auth-service.d.ts.map +1 -0
- package/dist/services/auth-service.js +356 -0
- package/dist/services/callback-service.d.ts +33 -0
- package/dist/services/callback-service.d.ts.map +1 -0
- package/dist/services/callback-service.js +473 -0
- package/dist/services/companion-team.d.ts.map +1 -1
- package/dist/services/companion-team.js +41 -39
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -0
- package/dist/store/actions.d.ts +54 -51
- package/dist/store/actions.d.ts.map +1 -1
- package/dist/store/actions.js +111 -243
- package/dist/store/computed.d.ts +72 -1
- package/dist/store/computed.d.ts.map +1 -1
- package/dist/store/computed.js +90 -3
- package/dist/store/index.d.ts +3 -3
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +2 -2
- package/dist/store/state.d.ts +10 -0
- package/dist/store/state.d.ts.map +1 -1
- package/dist/store/state.js +11 -1
- package/dist/store/utils.d.ts +3 -34
- package/dist/store/utils.d.ts.map +1 -1
- package/dist/store/utils.js +2 -22
- package/dist/types/auth.d.ts +106 -0
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/callback.d.ts +35 -0
- package/dist/types/callback.d.ts.map +1 -0
- package/dist/types/callback.js +1 -0
- package/dist/types/index.d.ts +4 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/organization.d.ts +19 -3
- package/dist/types/organization.d.ts.map +1 -1
- package/dist/types/team.d.ts +6 -2
- package/dist/types/team.d.ts.map +1 -1
- package/dist/types/user.d.ts +7 -3
- package/dist/types/user.d.ts.map +1 -1
- package/dist/utils/auth-utils.d.ts +60 -0
- package/dist/utils/auth-utils.d.ts.map +1 -0
- package/dist/utils/auth-utils.js +146 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/user-mapper.d.ts.map +1 -1
- package/dist/utils/user-mapper.js +2 -1
- package/package.json +10 -2
package/dist/init.d.ts
CHANGED
|
@@ -25,16 +25,6 @@ interface InitAuthConfig {
|
|
|
25
25
|
* - 如果用户传入自定义 plugins,则使用用户配置(不会合并默认插件)
|
|
26
26
|
*/
|
|
27
27
|
export declare function initAuth(config: InitAuthConfig): {
|
|
28
|
-
getCurrentUser: () => import("./types").SessionUser | null;
|
|
29
|
-
getCurrentUserId: () => string | null;
|
|
30
|
-
isAuthenticated: () => boolean;
|
|
31
|
-
isLoading: () => boolean;
|
|
32
|
-
isLoaded: () => boolean;
|
|
33
|
-
waitForAuth: () => Promise<void>;
|
|
34
|
-
getAuthToken: () => Promise<string | null>;
|
|
35
|
-
getAuthTokenSync: () => string | null;
|
|
36
|
-
getAuthHeaders: () => Promise<Record<string, string>>;
|
|
37
|
-
getAuthHeadersSync: () => Record<string, string>;
|
|
38
28
|
apiClient: {
|
|
39
29
|
get<T = unknown>(path: string, options?: RequestInit): Promise<import("./api").ApiResponse<T>>;
|
|
40
30
|
post<T = unknown>(path: string, body?: unknown, options?: RequestInit): Promise<import("./api").ApiResponse<T>>;
|
|
@@ -42,37 +32,131 @@ export declare function initAuth(config: InitAuthConfig): {
|
|
|
42
32
|
delete<T = unknown>(path: string, options?: RequestInit): Promise<import("./api").ApiResponse<T>>;
|
|
43
33
|
fetch(path: string, options?: RequestInit): Promise<Response>;
|
|
44
34
|
};
|
|
45
|
-
userManager: {
|
|
46
|
-
getUser: () => import("./types").SessionUser | null;
|
|
47
|
-
getUserId: () => string | null;
|
|
48
|
-
};
|
|
49
|
-
authActions: {
|
|
50
|
-
initialize(user: import("./types").SessionUser | null, isLoaded: boolean): Promise<void>;
|
|
51
|
-
fetchSessionWithToken(token: string): Promise<void>;
|
|
52
|
-
handleUnauthorized(): void;
|
|
53
|
-
setLoading(loading: boolean): void;
|
|
54
|
-
setError(error: string | null): void;
|
|
55
|
-
signIn(provider: string, callbackURL: string, newUserCallbackURL?: string, errorCallbackURL?: string): Promise<void>;
|
|
56
|
-
signInWithMagicLink(email: string, callbackURL: string, name?: string, newUserCallbackURL?: string): Promise<boolean>;
|
|
57
|
-
signInWithEmail(email: string, password: string): Promise<boolean>;
|
|
58
|
-
signUpWithEmail(email: string, password: string, name: string): Promise<boolean>;
|
|
59
|
-
signOut(redirectTo?: string): Promise<void>;
|
|
60
|
-
updateUser(user: import("./types").SessionUser | null): void;
|
|
61
|
-
getUser(): import("./types").SessionUser | null;
|
|
62
|
-
};
|
|
63
35
|
authApi: {
|
|
64
|
-
getSession(
|
|
36
|
+
getSession(): Promise<import("./types").SessionUser | null>;
|
|
65
37
|
getSessionWithToken(token: string): Promise<import("./types").SessionUser | null>;
|
|
66
|
-
setActiveOrganization(params: import("./types").SetActiveOrganizationRequest, token?: string): Promise<void>;
|
|
67
|
-
setActiveTeam(params: import("./types").SetActiveTeamRequest, token?: string): Promise<void>;
|
|
68
38
|
onboard(token: string): Promise<void>;
|
|
69
39
|
updateUser(data: import("./types").UpdateUserRequest): Promise<import("./types").SessionUser | null>;
|
|
70
40
|
sendMagicLink(params: import("./types").MagicLinkRequest): Promise<{
|
|
71
41
|
status: boolean;
|
|
72
42
|
}>;
|
|
73
|
-
|
|
43
|
+
resendVerificationEmail(email: string, callbackURL?: string): Promise<{
|
|
44
|
+
status: boolean;
|
|
45
|
+
}>;
|
|
74
46
|
checkEmailExists(email: string): Promise<boolean>;
|
|
47
|
+
linkCredential(newPassword: string, token?: string): Promise<void>;
|
|
48
|
+
changePassword(currentPassword: string, newPassword: string, token?: string): Promise<{
|
|
49
|
+
success: boolean;
|
|
50
|
+
}>;
|
|
51
|
+
changeEmail(newEmail: string, callbackURL?: string, token?: string): Promise<{
|
|
52
|
+
success: boolean;
|
|
53
|
+
}>;
|
|
54
|
+
listAccounts(token?: string): Promise<import("./types").Account[]>;
|
|
55
|
+
getOAuthAccountInfo(accountId: string, token?: string): Promise<import("./types").OAuthAccountInfo | null>;
|
|
56
|
+
unlinkAccount(providerId: string, accountId?: string, token?: string): Promise<{
|
|
57
|
+
success: boolean;
|
|
58
|
+
}>;
|
|
59
|
+
deleteUser(password?: string, callbackURL?: string, token?: string): Promise<{
|
|
60
|
+
message: string;
|
|
61
|
+
success: boolean;
|
|
62
|
+
}>;
|
|
63
|
+
listSessions(token?: string): Promise<import("./types").UserSession[]>;
|
|
64
|
+
revokeSession(params: import("./types").RevokeSessionRequest, token?: string): Promise<{
|
|
65
|
+
success: boolean;
|
|
66
|
+
}>;
|
|
67
|
+
};
|
|
68
|
+
organizationApi: {
|
|
69
|
+
create(request: import("./types").CreateOrganizationRequest): Promise<import("./types").Organization>;
|
|
70
|
+
update(request: import("./types").UpdateOrganizationRequest): Promise<import("./types").Organization>;
|
|
71
|
+
delete(request: import("./types").DeleteOrganizationRequest): Promise<string>;
|
|
72
|
+
list(): Promise<import("./types").Organization[]>;
|
|
73
|
+
getFullOrganization(): Promise<import("./types").FullOrganization | null>;
|
|
74
|
+
checkSlug(request: import("./types").CheckSlugRequest): Promise<boolean>;
|
|
75
|
+
getActiveMember(): Promise<import("./types").Member | null>;
|
|
76
|
+
getActiveMemberRole(): Promise<{
|
|
77
|
+
role: string;
|
|
78
|
+
} | null>;
|
|
79
|
+
removeMember(request: import("./types").RemoveMemberRequest): Promise<import("./types").Member>;
|
|
80
|
+
updateMemberRole(request: import("./types").UpdateMemberRoleRequest): Promise<import("./types").Member>;
|
|
81
|
+
inviteMember(request: import("./types").InviteMemberRequest): Promise<import("./types").Invitation>;
|
|
82
|
+
listInvitations(): Promise<import("./types").Invitation[]>;
|
|
83
|
+
getInvitation(invitationId: string): Promise<import("./types").InvitationDetail | null>;
|
|
84
|
+
cancelInvitation(request: import("./types").CancelInvitationRequest): Promise<void>;
|
|
85
|
+
acceptInvitation(request: import("./types").AcceptInvitationRequest): Promise<import("./types").InvitationResponse>;
|
|
86
|
+
rejectInvitation(request: import("./types").RejectInvitationRequest): Promise<import("./types").InvitationResponse>;
|
|
87
|
+
leave(organizationId: string): Promise<void>;
|
|
88
|
+
};
|
|
89
|
+
teamApi: {
|
|
90
|
+
create(request: import("./types").CreateTeamRequest): Promise<import("./types").Team>;
|
|
91
|
+
list(): Promise<import("./types").Team[]>;
|
|
92
|
+
update(request: import("./types").UpdateTeamRequest): Promise<import("./types").Team>;
|
|
93
|
+
delete(request: import("./types").DeleteTeamRequest): Promise<void>;
|
|
94
|
+
listUserTeams(): Promise<import("./types").Team[]>;
|
|
95
|
+
listMembers(teamId: string): Promise<import("./types").TeamMember[]>;
|
|
96
|
+
addMember(request: import("./types").AddTeamMemberRequest): Promise<import("./types").TeamMember>;
|
|
97
|
+
removeMember(request: import("./types").RemoveTeamMemberRequest): Promise<void>;
|
|
98
|
+
leaveTeam(teamId: string): Promise<void>;
|
|
75
99
|
};
|
|
100
|
+
authStore: import("@legendapp/state").Observable<import("./types").AuthState>;
|
|
101
|
+
authComputed: {
|
|
102
|
+
isInitializing: import("@legendapp/state").ObservableBoolean;
|
|
103
|
+
isReady: import("@legendapp/state").ObservableBoolean;
|
|
104
|
+
isUnauthenticated: import("@legendapp/state").ObservableBoolean;
|
|
105
|
+
hasError: import("@legendapp/state").ObservableBoolean;
|
|
106
|
+
userId: import("@legendapp/state").ObservablePrimitive<string | null>;
|
|
107
|
+
userEmail: import("@legendapp/state").ObservablePrimitive<string | null>;
|
|
108
|
+
userName: import("@legendapp/state").ObservablePrimitive<string | null>;
|
|
109
|
+
userImage: import("@legendapp/state").ObservablePrimitive<string | null>;
|
|
110
|
+
emailVerified: import("@legendapp/state").ObservableBoolean;
|
|
111
|
+
activeOrganizationId: import("@legendapp/state").ObservablePrimitive<string | null>;
|
|
112
|
+
activeTeamId: import("@legendapp/state").ObservablePrimitive<string | null>;
|
|
113
|
+
inherentOrganizationId: import("@legendapp/state").ObservablePrimitive<string | null>;
|
|
114
|
+
inherentTeamId: import("@legendapp/state").ObservablePrimitive<string | null>;
|
|
115
|
+
hasActiveOrganization: import("@legendapp/state").ObservableBoolean;
|
|
116
|
+
hasActiveTeam: import("@legendapp/state").ObservableBoolean;
|
|
117
|
+
isInInherentOrganization: import("@legendapp/state").ObservableBoolean;
|
|
118
|
+
isInInherentTeam: import("@legendapp/state").ObservableBoolean;
|
|
119
|
+
};
|
|
120
|
+
tokenStorage: import("./api").TokenStorage;
|
|
121
|
+
storeActions: {
|
|
122
|
+
getUser(): import("./types").SessionUser | null;
|
|
123
|
+
getUserId(): string | null;
|
|
124
|
+
isAuthenticated(): boolean;
|
|
125
|
+
isLoading(): boolean;
|
|
126
|
+
isLoaded(): boolean;
|
|
127
|
+
setUser(user: import("./types").SessionUser | null): void;
|
|
128
|
+
updateUser(updates: Partial<import("./types").SessionUser>): void;
|
|
129
|
+
setLoading(loading: boolean): void;
|
|
130
|
+
setLoaded(loaded: boolean): void;
|
|
131
|
+
setError(error: string | null): void;
|
|
132
|
+
setAuthenticated(user: import("./types").SessionUser): void;
|
|
133
|
+
clearAuth(): void;
|
|
134
|
+
handleUnauthorized(): void;
|
|
135
|
+
setActiveOrganizationId(organizationId: string | null | undefined): void;
|
|
136
|
+
setActiveTeamId(teamId: string | null | undefined): void;
|
|
137
|
+
initialize(user: import("./types").SessionUser | null, isLoaded: boolean): void;
|
|
138
|
+
};
|
|
139
|
+
authService: {
|
|
140
|
+
fetchAndSetSession: (token: string) => Promise<import("./types").SessionUser | null>;
|
|
141
|
+
signInWithOAuth: (provider: string, callbackURL: string, newUserCallbackURL?: string, errorCallbackURL?: string) => Promise<void>;
|
|
142
|
+
signInWithMagicLink: (email: string, callbackURL: string, name?: string, newUserCallbackURL?: string) => Promise<boolean>;
|
|
143
|
+
signInWithEmail: (email: string, password: string) => Promise<{
|
|
144
|
+
emailVerified?: boolean;
|
|
145
|
+
success: boolean;
|
|
146
|
+
}>;
|
|
147
|
+
signUpWithEmail: (email: string, password: string, name: string, callbackURL?: string) => Promise<{
|
|
148
|
+
emailVerified?: boolean;
|
|
149
|
+
success: boolean;
|
|
150
|
+
}>;
|
|
151
|
+
signOut: (redirectTo?: string) => Promise<void>;
|
|
152
|
+
deleteUser: (callbackURL: string, password?: string) => Promise<{
|
|
153
|
+
needsVerification: boolean;
|
|
154
|
+
success: boolean;
|
|
155
|
+
}>;
|
|
156
|
+
};
|
|
157
|
+
setActiveOrganization: (request: import("./types").SetActiveOrganizationRequest) => Promise<import("./types").Organization>;
|
|
158
|
+
setActiveTeam: (request: import("./types").SetActiveTeamRequest) => Promise<void>;
|
|
159
|
+
setActiveOrganizationAndTeam: (organizationId: string, teamId: string) => Promise<import("./types").Organization>;
|
|
76
160
|
authClient: {
|
|
77
161
|
signIn: {
|
|
78
162
|
social: <FetchOptions extends import("better-auth").ClientFetchOption<Partial<{
|
|
@@ -731,45 +815,18 @@ export declare function initAuth(config: InitAuthConfig): {
|
|
|
731
815
|
[x: string]: any;
|
|
732
816
|
};
|
|
733
817
|
};
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
checkSlug(request: import("./types").CheckSlugRequest): Promise<boolean>;
|
|
746
|
-
getActiveMember(): Promise<import("./types").Member | null>;
|
|
747
|
-
getActiveMemberRole(): Promise<{
|
|
748
|
-
role: string;
|
|
749
|
-
} | null>;
|
|
750
|
-
removeMember(request: import("./types").RemoveMemberRequest): Promise<import("./types").Member>;
|
|
751
|
-
updateMemberRole(request: import("./types").UpdateMemberRoleRequest): Promise<import("./types").Member>;
|
|
752
|
-
inviteMember(request: import("./types").InviteMemberRequest, inviteLink?: string): Promise<import("./types").Invitation>;
|
|
753
|
-
listInvitations(): Promise<import("./types").Invitation[]>;
|
|
754
|
-
getInvitation(invitationId: string): Promise<import("./types").InvitationDetail | null>;
|
|
755
|
-
cancelInvitation(request: import("./types").CancelInvitationRequest): Promise<void>;
|
|
756
|
-
acceptInvitation(request: import("./types").AcceptInvitationRequest): Promise<import("./types").InvitationResponse>;
|
|
757
|
-
rejectInvitation(request: import("./types").RejectInvitationRequest): Promise<import("./types").InvitationResponse>;
|
|
758
|
-
leave(organizationId: string): Promise<void>;
|
|
759
|
-
};
|
|
760
|
-
teamApi: {
|
|
761
|
-
create(request: import("./types").CreateTeamRequest): Promise<import("./types").Team>;
|
|
762
|
-
list(): Promise<import("./types").Team[]>;
|
|
763
|
-
update(request: import("./types").UpdateTeamRequest): Promise<import("./types").Team>;
|
|
764
|
-
delete(request: import("./types").DeleteTeamRequest): Promise<void>;
|
|
765
|
-
setActive(request: import("./types").SetActiveTeamRequest): Promise<void>;
|
|
766
|
-
listUserTeams(): Promise<import("./types").Team[]>;
|
|
767
|
-
listMembers(teamId: string): Promise<import("./types").TeamMember[]>;
|
|
768
|
-
addMember(request: import("./types").AddTeamMemberRequest): Promise<import("./types").TeamMember>;
|
|
769
|
-
removeMember(request: import("./types").RemoveTeamMemberRequest): Promise<void>;
|
|
770
|
-
leaveTeam(teamId: string): Promise<void>;
|
|
818
|
+
getCurrentUser: () => import("./types").SessionUser | null;
|
|
819
|
+
getCurrentUserId: () => string | null;
|
|
820
|
+
isAuthenticated: () => boolean;
|
|
821
|
+
isLoading: () => boolean;
|
|
822
|
+
isLoaded: () => boolean;
|
|
823
|
+
getAuthToken: () => string | null;
|
|
824
|
+
getAuthHeaders: () => Record<string, string>;
|
|
825
|
+
waitForAuth: () => Promise<void>;
|
|
826
|
+
userManager: {
|
|
827
|
+
getUser: () => import("./types").SessionUser | null;
|
|
828
|
+
getUserId: () => string | null;
|
|
771
829
|
};
|
|
772
|
-
tokenStorage: import("./api").TokenStorage;
|
|
773
830
|
};
|
|
774
831
|
export {};
|
|
775
832
|
//# sourceMappingURL=init.d.ts.map
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC;;GAEG;AACH,UAAU,cAAc;IACtB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;IAC/B,6BAA6B;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC;;GAEG;AACH,UAAU,cAAc;IACtB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;IAC/B,6BAA6B;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAgBypH,CAAC;;;;yBAAitE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAA1xH,CAAC;qBAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA42C,CAAC;;mBAA2D,CAAC;;;;;oBAA8U,CAAC;uBAA8C,CAAC;qBAAmC,CAAC;qBAAmC,CAAC;gBAA+B,CAAC;oBAAuC,CAAC;oBAA2C,CAAC;0BAAwC,CAAC;kBAAwC,CAAC;kBAA8C,CAAC;mBAA+B,CAAC;uBAA0G,CAAC;6BAAuB,CAAC;;mBAAyC,CAAC;;;iBAA2G,CAAC;gBAA+B,CAAC;;;;;;;;;;;;gBAA+e,CAAC;iBAAgB,CAAC;kBAAiB,CAAC;kBAAiB,CAAC;;iBAA8F,CAAC;wBAAkE,CAAC;kBAAgC,CAAC;uBAAmG,CAAC;6BAA2E,CAAC;yBAAwC,CAAC;;;2BAAkF,CAAC;mHAAuL,CAAC;;;;;;;;;;;;;;;;;;;EAD1xL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../src/lib/auth-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../src/lib/auth-client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA6F+U,CAAC;iBAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAA42C,CAAC;;eAA2D,CAAC;;;;;gBAA8U,CAAC;mBAA8C,CAAC;iBAAmC,CAAC;iBAAmC,CAAC;YAA+B,CAAC;gBAAuC,CAAC;gBAA2C,CAAC;sBAAwC,CAAC;cAAwC,CAAC;cAA8C,CAAC;eAA+B,CAAC;mBAA0G,CAAC;yBAAuB,CAAC;;eAAyC,CAAC;;;aAA2G,CAAC;YAA+B,CAAC;;;;;;;;;;;;YAA+e,CAAC;aAAgB,CAAC;cAAiB,CAAC;cAAiB,CAAC;;aAA8F,CAAC;oBAAkE,CAAC;cAAgC,CAAC;mBAAmG,CAAC;yBAA2E,CAAC;qBAAwC,CAAC;;;uBAAkF,CAAC;+GAAuL,CAAC;;;;;;EADriI"}
|
package/dist/lib/auth-client.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inferAdditionalFields, magicLinkClient, organizationClient, } from "better-auth/client/plugins";
|
|
1
2
|
import { createAuthClient } from "better-auth/react";
|
|
2
3
|
/**
|
|
3
4
|
* 创建 Better Auth 客户端
|
|
@@ -12,11 +13,83 @@ import { createAuthClient } from "better-auth/react";
|
|
|
12
13
|
* @returns Better Auth 客户端实例
|
|
13
14
|
*/
|
|
14
15
|
export function createAuthClientFromConfig(config) {
|
|
15
|
-
const { baseURL, plugins = [], tokenStorageKey = "
|
|
16
|
+
const { baseURL, plugins = [], tokenStorageKey = "oneauth_token" } = config;
|
|
16
17
|
return createAuthClient({
|
|
17
18
|
baseURL,
|
|
18
19
|
basePath: "/v1/auth",
|
|
19
|
-
plugins
|
|
20
|
+
plugins: [
|
|
21
|
+
...plugins,
|
|
22
|
+
inferAdditionalFields({
|
|
23
|
+
user: {
|
|
24
|
+
inherentOrganizationId: {
|
|
25
|
+
type: "string",
|
|
26
|
+
description: "Inherent organization ID",
|
|
27
|
+
input: false,
|
|
28
|
+
required: false,
|
|
29
|
+
},
|
|
30
|
+
inherentTeamId: {
|
|
31
|
+
type: "string",
|
|
32
|
+
description: "Inherent team ID",
|
|
33
|
+
input: false,
|
|
34
|
+
required: false,
|
|
35
|
+
},
|
|
36
|
+
metadata: {
|
|
37
|
+
type: "json",
|
|
38
|
+
input: true,
|
|
39
|
+
returned: true,
|
|
40
|
+
required: true,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
}),
|
|
44
|
+
magicLinkClient(),
|
|
45
|
+
organizationClient({
|
|
46
|
+
schema: {
|
|
47
|
+
invitation: {
|
|
48
|
+
additionalFields: {
|
|
49
|
+
linkBaseUrl: {
|
|
50
|
+
type: "string",
|
|
51
|
+
description: "Invitation link base URL",
|
|
52
|
+
required: true,
|
|
53
|
+
returned: true,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
organization: {
|
|
58
|
+
additionalFields: {
|
|
59
|
+
inherentFrom: {
|
|
60
|
+
type: "string",
|
|
61
|
+
description: "Inherited from user ID",
|
|
62
|
+
input: false,
|
|
63
|
+
returned: true,
|
|
64
|
+
},
|
|
65
|
+
metadata: {
|
|
66
|
+
type: "json",
|
|
67
|
+
input: true,
|
|
68
|
+
returned: true,
|
|
69
|
+
required: true,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
team: {
|
|
74
|
+
additionalFields: {
|
|
75
|
+
inherentFrom: {
|
|
76
|
+
type: "string",
|
|
77
|
+
description: "Inherited from user ID",
|
|
78
|
+
input: false,
|
|
79
|
+
returned: true,
|
|
80
|
+
},
|
|
81
|
+
metadata: {
|
|
82
|
+
type: "json",
|
|
83
|
+
input: true,
|
|
84
|
+
returned: true,
|
|
85
|
+
required: true,
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
teams: { enabled: true },
|
|
91
|
+
}),
|
|
92
|
+
],
|
|
20
93
|
fetchOptions: {
|
|
21
94
|
auth: {
|
|
22
95
|
type: "Bearer",
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 认证服务
|
|
3
|
+
*
|
|
4
|
+
* 封装所有认证相关的业务逻辑:
|
|
5
|
+
* - 登录(OAuth、MagicLink、Email/Password)
|
|
6
|
+
* - 注册
|
|
7
|
+
* - 登出
|
|
8
|
+
* - 账户删除
|
|
9
|
+
*
|
|
10
|
+
* 职责分离:
|
|
11
|
+
* - 调用 API 层发送请求
|
|
12
|
+
* - 调用 StoreActions 更新状态(不直接操作 authStore)
|
|
13
|
+
* - 处理业务流程(如注册后 onboard)
|
|
14
|
+
*/
|
|
15
|
+
import type { SessionUser } from "../types";
|
|
16
|
+
import type { TokenStorage } from "../api";
|
|
17
|
+
import type { AuthApi } from "../api/auth-api";
|
|
18
|
+
import type { StoreActions } from "../store/actions";
|
|
19
|
+
export interface AuthServiceConfig {
|
|
20
|
+
authApi: AuthApi;
|
|
21
|
+
storeActions: StoreActions;
|
|
22
|
+
tokenStorage: TokenStorage;
|
|
23
|
+
}
|
|
24
|
+
export interface BetterAuthClientMethods {
|
|
25
|
+
deleteUser?: (options: {
|
|
26
|
+
callbackURL?: string;
|
|
27
|
+
password?: string;
|
|
28
|
+
}, callbacks?: {
|
|
29
|
+
onError?: (context: {
|
|
30
|
+
error: Error;
|
|
31
|
+
}) => void;
|
|
32
|
+
onSuccess?: (context: {
|
|
33
|
+
response: Response;
|
|
34
|
+
}) => void;
|
|
35
|
+
}) => Promise<unknown>;
|
|
36
|
+
signIn: {
|
|
37
|
+
email?: (credentials: {
|
|
38
|
+
email: string;
|
|
39
|
+
password: string;
|
|
40
|
+
}, options?: {
|
|
41
|
+
onError?: (context: {
|
|
42
|
+
error: Error;
|
|
43
|
+
}) => void;
|
|
44
|
+
onSuccess?: (context: {
|
|
45
|
+
response: Response;
|
|
46
|
+
}) => void;
|
|
47
|
+
}) => Promise<unknown>;
|
|
48
|
+
magicLink?: (options: {
|
|
49
|
+
callbackURL: string;
|
|
50
|
+
email: string;
|
|
51
|
+
name?: string;
|
|
52
|
+
newUserCallbackURL?: string;
|
|
53
|
+
}) => Promise<unknown>;
|
|
54
|
+
social: (options: {
|
|
55
|
+
callbackURL: string;
|
|
56
|
+
errorCallbackURL?: string;
|
|
57
|
+
newUserCallbackURL?: string;
|
|
58
|
+
provider: string;
|
|
59
|
+
}) => Promise<unknown>;
|
|
60
|
+
};
|
|
61
|
+
signOut: () => Promise<unknown>;
|
|
62
|
+
signUp?: {
|
|
63
|
+
email?: (credentials: {
|
|
64
|
+
callbackURL?: string;
|
|
65
|
+
email: string;
|
|
66
|
+
metadata?: Record<string, unknown>;
|
|
67
|
+
name: string;
|
|
68
|
+
password: string;
|
|
69
|
+
}, options?: {
|
|
70
|
+
onError?: (context: {
|
|
71
|
+
error: Error;
|
|
72
|
+
}) => void;
|
|
73
|
+
onSuccess?: (context: {
|
|
74
|
+
response: Response;
|
|
75
|
+
}) => void;
|
|
76
|
+
}) => Promise<unknown>;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 创建认证服务
|
|
81
|
+
*/
|
|
82
|
+
export declare function createAuthService(config: AuthServiceConfig, betterAuthClient: BetterAuthClientMethods): {
|
|
83
|
+
fetchAndSetSession: (token: string) => Promise<SessionUser | null>;
|
|
84
|
+
signInWithOAuth: (provider: string, callbackURL: string, newUserCallbackURL?: string, errorCallbackURL?: string) => Promise<void>;
|
|
85
|
+
signInWithMagicLink: (email: string, callbackURL: string, name?: string, newUserCallbackURL?: string) => Promise<boolean>;
|
|
86
|
+
signInWithEmail: (email: string, password: string) => Promise<{
|
|
87
|
+
emailVerified?: boolean;
|
|
88
|
+
success: boolean;
|
|
89
|
+
}>;
|
|
90
|
+
signUpWithEmail: (email: string, password: string, name: string, callbackURL?: string) => Promise<{
|
|
91
|
+
emailVerified?: boolean;
|
|
92
|
+
success: boolean;
|
|
93
|
+
}>;
|
|
94
|
+
signOut: (redirectTo?: string) => Promise<void>;
|
|
95
|
+
deleteUser: (callbackURL: string, password?: string) => Promise<{
|
|
96
|
+
needsVerification: boolean;
|
|
97
|
+
success: boolean;
|
|
98
|
+
}>;
|
|
99
|
+
};
|
|
100
|
+
export type AuthService = ReturnType<typeof createAuthService>;
|
|
101
|
+
//# sourceMappingURL=auth-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"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"}
|