6.1 KiB
{{#template name="apiPasswords"}}
Passwords
The accounts-password package contains a full system for password-based
authentication. In addition to the basic username and password-based
sign-in process, it also supports email-based sign-in including
address verification and password recovery emails.
The Meteor server stores passwords using the bcrypt algorithm. This helps protect against embarrassing password leaks if the server's database is compromised.
To add password support to your application, run this command in your terminal:
meteor add accounts-password
You can construct your own user interface using the
functions below, or use the accounts-ui package to
include a turn-key user interface for password-based sign-in.
{{> autoApiBox "Accounts.createUser"}}
On the client, this function logs in as the newly created user on successful completion. On the server, it returns the newly created user id.
On the client, you must pass password and at least one of username or
email — enough information for the user to be able to log in again
later. If there are existing users with a username or email only differing in case, createUser will fail. On the server, you do not need to specify password, but the user will
not be able to log in until it has a password (eg, set with
Accounts.setPassword).
To create an account without a password on the server and still let the
user pick their own password, call createUser with the email option
and then
call Accounts.sendEnrollmentEmail. This
will send the user an email with a link to set their initial password.
By default the profile option is added directly to the new user document. To
override this behavior, use Accounts.onCreateUser.
This function is only used for creating users with passwords. The external service login flows do not use this function.
{{> autoApiBox "Accounts.changePassword"}}
{{> autoApiBox "Accounts.forgotPassword"}}
This triggers a call
to Accounts.sendResetPasswordEmail
on the server. When the user visits the link in this email, the callback
registered with Accounts.onResetPasswordLink
will be called.
If you are using the accounts-ui package, this is handled
automatically. Otherwise, it is your responsiblity to prompt the user for the
new password and call resetPassword.
{{> autoApiBox "Accounts.resetPassword"}}
This function accepts tokens passed into the callbacks registered with
AccountsClient#onResetPasswordLink and
Accounts.onEnrollmentLink.
{{> autoApiBox "Accounts.setPassword"}}
{{> autoApiBox "Accounts.verifyEmail"}}
This function accepts tokens passed into the callback registered with
Accounts.onEmailVerificationLink.
{{> autoApiBox "Accounts.sendResetPasswordEmail"}}
When the user visits the link in this email, the callback registered with
AccountsClient#onResetPasswordLink will be called.
To customize the contents of the email, see
Accounts.emailTemplates.
{{> autoApiBox "Accounts.sendEnrollmentEmail"}}
When the user visits the link in this email, the callback registered with
Accounts.onEnrollmentLink will be called.
To customize the contents of the email, see
Accounts.emailTemplates.
{{> autoApiBox "Accounts.sendVerificationEmail"}}
When the user visits the link in this email, the callback registered with
Accounts.onEmailVerificationLink will
be called.
To customize the contents of the email, see
Accounts.emailTemplates.
{{> autoApiBox "Accounts.onResetPasswordLink"}}
{{> autoApiBox "Accounts.onEnrollmentLink"}}
{{> autoApiBox "Accounts.onEmailVerificationLink"}}
{{> autoApiBox "Accounts.emailTemplates"}}
This is an Object with several fields that are used to generate text/html
for the emails sent by sendResetPasswordEmail, sendEnrollmentEmail,
and sendVerificationEmail.
Override fields of the object by assigning to them:
from: AStringwith an RFC5322 From address. By default, the email is sent fromno-reply@meteor.com. If you wish to receive email from users asking for help with their account, be sure to set this to an email address that you can receive email at.siteName: The public name of your application. Defaults to the DNS name of the application (eg:awesome.meteor.com).headers: AnObjectfor custom email headers as described inEmail.send.resetPassword: AnObjectwith the fields:from: AFunctionused to override thefromaddress defined by theemailTemplates.fromfield.subject: AFunctionthat takes a user object and returns aStringfor the subject line of a reset password email.text: An optionalFunctionthat takes a user object and a url, and returns the body text for a reset password email.html: An optionalFunctionthat takes a user object and a url, and returns the body html for a reset password email.enrollAccount: Same asresetPassword, but for initial password setup for new accounts.verifyEmail: Same asresetPassword, but for verifying the users email address.
Example:
Accounts.emailTemplates.siteName = "AwesomeSite";
Accounts.emailTemplates.from = "AwesomeSite Admin <accounts@example.com>";
Accounts.emailTemplates.enrollAccount.subject = function (user) {
return "Welcome to Awesome Town, " + user.profile.name;
};
Accounts.emailTemplates.enrollAccount.text = function (user, url) {
return "You have been selected to participate in building a better future!"
+ " To activate your account, simply click the link below:\n\n"
+ url;
};
{{/template}}