Express.JS User Activator
Usage
var _ = ;var express = bodyParser = app = ; // lets assume that your model is here// Make sure to specify following fields if you use mongoose://// password_reset_code: String// password_reset_time: Number// activation_code: String// password: String// validated: Boolean//// Obviously password hashing is not handled here, either pre-process it yourself,// or use mongoose middleware//var User = ; var activator = ;var config = user: {} protocol: 'http://' domain: 'localhost' // this will be used to craft email activation links pathActivate: '/api/1/users/activate' // this will be used to craft password reset confirmation links pathResetPassword: '/api/1/users/forgot'; // method to find userconfiguser { // it should return user in the callback, signature is <err, user> User;}; // method to update user// this is used to save data into user,// it's your responsibility to setup protection hereconfiguser { // data contains $set and $del properties, we need to perform actions based // on these properties // Lets assume we use mongodb, then the example would be as simple as this: // You might want to take care of error handling though, since here we just // spit them out User;}; // make sure to initialize itactivator; // handling activationvar activateRoutes = express ; // handling password resetvar passwordResetRoutes = express ; app;app;app;
Configuration
Everything in the code is pretty much commented, but here is a little helper to get you started quicker
user
{Object}: must overridefind
{Function}<userId, callback>
signaturesave
{Function}<userId, dataToSave, callback>
signature
user
{Object}: can overridethrottle
{Function}<userModel, type, callback>
signature
Note
User must have these fields available: password_reset_code
, password_reset_time
,
activation_code
, password
templates
{String} - directory for templates used bysmtp
resetExpire
{Number} - duration of expiration link validity, default: 60smtp
: {Function|Object} - function which acceptstype
,lang
,data
,to
,subject
,callback
andcallback
params and sends emails based on them, defaults: built-in mail composerfrom
: {String|Object|Null} - to be used innodemailer
'sfrom
field must overrideemailProperty
: {String} - defaults toemail
idProperty
: {String} - defaults to_id
createNextHandler
: {Function}createResponse
: {Function}transport
: {Function} - set this if you want to use preconfigured transport setup these for generating links in the email templatesprotocol
: {String} - defaults tohttp://
domain
: {String} - defaults tolocalhost
, must overridepathActivate
: {String} - defaults to/api/1/users/activate
pathResetPassword
: {String} - defaults to/api/1/users/forgot
password_reset_subject
: {String} - subject for password reset emailsactivation_subject
: {String} - subject for account activation emailsvalidatedProperty
: {String} - use this to mark account as validated
Testing
To run the tests, from the root directory, run npm test
.
License
Released under the MIT License.
Originally developed by Avi Deitcher
Rewritten by Vitaly Aminev