@@ -37,6 +37,7 @@ const defaultOptions = {
3737 userObjectSanitizer : ( user : User ) => user ,
3838 sendMail,
3939 siteUrl : 'http://localhost:3000' ,
40+ createNewSessionTokenOnRefresh : false ,
4041} ;
4142
4243export class AccountsServer {
@@ -138,7 +139,7 @@ Please change it with a strong random token.`);
138139 */
139140 public async loginWithUser ( user : User , infos : ConnectionInformations ) : Promise < LoginResult > {
140141 const { ip, userAgent } = infos ;
141- const token = generateRandomToken ( ) ;
142+ const token = await this . createSessionToken ( user ) ;
142143 const sessionId = await this . db . createSession ( user . id , token , {
143144 ip,
144145 userAgent,
@@ -300,8 +301,14 @@ Please change it with a strong random token.`);
300301 if ( ! user ) {
301302 throw new Error ( 'User not found' ) ;
302303 }
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 ) ;
305312
306313 const result = {
307314 sessionId : session . id ,
@@ -515,6 +522,12 @@ Please change it with a strong random token.`);
515522 const siteUrl = this . options . siteUrl ;
516523 return `${ siteUrl } /${ pathFragment } /${ token } ` ;
517524 }
525+
526+ private async createSessionToken ( user : User ) : Promise < string > {
527+ return this . options . tokenCreator
528+ ? this . options . tokenCreator . createToken ( user )
529+ : generateRandomToken ( ) ;
530+ }
518531}
519532
520533export default AccountsServer ;
0 commit comments