How to generate new Meteor login tokens (server side) in order to make a quick login link

meteor

Solution

As Johnny said, you can use the `Accounts._generateStampedLoginToken()` function, which is actually nothing special, just the following function:

_generateStampedLoginToken = function () {
  return {
    token: Random.secret(),
    when: new Date
  };
}

anyway, to use it, here is an example:

// Server //

// Creates a stamped login token
var stampedLoginToken = Accounts._generateStampedLoginToken();

/**
 * Hashes the stamped login token and inserts the stamped login token 
 * to the user with the id specified, adds it to the field 
 * services.resume.loginTokens.$.hashedToken. 
 * (you can use Accounts._hashLoginToken(stampedLoginToken.token) 
 * to get the same token that gets inserted)
 */
Accounts._insertLoginToken(user._id, stampedLoginToken);


// Client //

// Login with the stamped loginToken's token
Meteor.loginWithToken(stampedLoginToken.token);

Problem

Meteor has a `loginWithToken` method, and there are `resume` tokens in the user object. So one can login using one of these tokens with `loginWithToken`. That works. Is there a way to generate new login tokens, or should I just use the resume tokens to create a quick login link?

Original source