@@ -37,6 +37,7 @@ const defaultOptions = {
37
37
userObjectSanitizer : ( user : User ) => user ,
38
38
sendMail,
39
39
siteUrl : 'http://localhost:3000' ,
40
+ createNewSessionTokenOnRefresh : false ,
40
41
} ;
41
42
42
43
export class AccountsServer {
@@ -138,7 +139,7 @@ Please change it with a strong random token.`);
138
139
*/
139
140
public async loginWithUser ( user : User , infos : ConnectionInformations ) : Promise < LoginResult > {
140
141
const { ip, userAgent } = infos ;
141
- const token = generateRandomToken ( ) ;
142
+ const token = await this . createSessionToken ( user ) ;
142
143
const sessionId = await this . db . createSession ( user . id , token , {
143
144
ip,
144
145
userAgent,
@@ -300,8 +301,14 @@ Please change it with a strong random token.`);
300
301
if ( ! user ) {
301
302
throw new Error ( 'User not found' ) ;
302
303
}
303
- const tokens = this . createTokens ( { token : sessionToken , userId : user . id } ) ;
304
- await this . db . updateSession ( session . id , { ip, userAgent } ) ;
304
+
305
+ let newToken ;
306
+ if ( this . options . createNewSessionTokenOnRefresh ) {
307
+ newToken = await this . createSessionToken ( user ) ;
308
+ }
309
+
310
+ const tokens = this . createTokens ( { token : newToken || sessionToken , userId : user . id } ) ;
311
+ await this . db . updateSession ( session . id , { ip, userAgent } , newToken ) ;
305
312
306
313
const result = {
307
314
sessionId : session . id ,
@@ -515,6 +522,12 @@ Please change it with a strong random token.`);
515
522
const siteUrl = this . options . siteUrl ;
516
523
return `${ siteUrl } /${ pathFragment } /${ token } ` ;
517
524
}
525
+
526
+ private async createSessionToken ( user : User ) : Promise < string > {
527
+ return this . options . tokenCreator
528
+ ? this . options . tokenCreator . createToken ( user )
529
+ : generateRandomToken ( ) ;
530
+ }
518
531
}
519
532
520
533
export default AccountsServer ;
0 commit comments