@@ -40,7 +40,7 @@ const defaultSettings = {
40
40
const errors = {
41
41
noUserFound : 'No current user found - are you logged in?' ,
42
42
noUserTokenFound : 'no user token found' ,
43
- noRecoveryTokenFound : 'no recovery token found' ,
43
+ tokenMissingOrInvalid : 'either no token found or invalid for this purpose ' ,
44
44
} ;
45
45
46
46
type MaybeUserPromise = Promise < User | undefined > ;
@@ -63,7 +63,7 @@ export type ReactNetlifyIdentityAPI = {
63
63
) => MaybeUserPromise ;
64
64
logoutUser : ( ) => MaybeUserPromise ;
65
65
requestPasswordRecovery : ( email : string ) => Promise < void > ;
66
- recoverAccount : ( remember ?: boolean | undefined ) => MaybeUserPromise ;
66
+ recoverAccount : ( remember ?: boolean ) => MaybeUserPromise ;
67
67
updateUser : ( fields : { data : object } ) => MaybeUserPromise ;
68
68
getFreshJWT : ( ) => Promise < string > ;
69
69
authedFetch : {
@@ -75,7 +75,7 @@ export type ReactNetlifyIdentityAPI = {
75
75
_goTrueInstance : GoTrue ;
76
76
_url : string ;
77
77
loginProvider : ( provider : Provider ) => void ;
78
- acceptInviteExternalUrl : ( provider : Provider , token : string ) => string ;
78
+ acceptInviteExternalUrl : ( provider : Provider ) => string ;
79
79
settings : Settings ;
80
80
param : TokenParam ;
81
81
} ;
@@ -174,9 +174,18 @@ export function useNetlifyIdentity(
174
174
) ;
175
175
176
176
const acceptInviteExternalUrl = useCallback (
177
- ( provider : Provider , token : string ) =>
178
- goTrueInstance . acceptInviteExternalUrl ( provider , token ) ,
179
- [ goTrueInstance ]
177
+ ( provider : Provider ) => {
178
+ if ( ! param . token || param . type !== 'invite' ) {
179
+ throw new Error ( errors . tokenMissingOrInvalid ) ;
180
+ }
181
+
182
+ const url = goTrueInstance . acceptInviteExternalUrl ( provider , param . token ) ;
183
+ // clean up consumed token
184
+ setParam ( defaultParam ) ;
185
+
186
+ return url ;
187
+ } ,
188
+ [ goTrueInstance , param ]
180
189
) ;
181
190
182
191
/******* email auth */
@@ -210,8 +219,8 @@ export function useNetlifyIdentity(
210
219
211
220
const recoverAccount = useCallback (
212
221
( remember ?: boolean | undefined ) => {
213
- if ( ! param . token ) {
214
- throw new Error ( errors . noRecoveryTokenFound ) ;
222
+ if ( ! param . token || param . type !== 'recovery' ) {
223
+ throw new Error ( errors . tokenMissingOrInvalid ) ;
215
224
}
216
225
217
226
return goTrueInstance . recover ( param . token , remember ) . then ( user => {
0 commit comments