UNPKG

bauhausjs

Version:
66 lines (59 loc) 1.8 kB
var mongoose = require('mongoose'); var passportLocalMongoose = require('passport-local-mongoose'); var sha1 = require('sha1'); var Schema = mongoose.Schema; var userSchema = new Schema({ username: String, emailConfirmed: Boolean, roles: [Schema.Types.ObjectId], fields: {}, login: { attempts: {type: Number, default: 0}, last: {type: Date, default: Date.now} }, created: { type: Date, default: Date.now }, resetPasswordToken: String, confirmMailToken: String, newLogin: { userId: String, pwData: { hash: String, meta: { salt: String, hashBytes: Number, opslimit: Number, memlimit: Number, algorithm: String } } } }, {collection: 'users'}); userSchema.methods.setResetPasswordToken = function () { var time = Date.now().toString(); var token = sha1( time + this.email + this.username ); this.resetPasswordToken = token; }; userSchema.methods.setConfirmMailToken = function () { var time = Date.now().toString(); var token = sha1( time + this.email + this.username ); this.confirmMailToken = token; }; userSchema.methods.toJSON = function() { var user = this.toObject(); delete user.login; delete user.reset; return user; }; var passportLocalMongooseOptions = { usernameLowerCase: true, hashField: "login.hash", saltField: "login.salt", attemptsField: "login.attempts", lastLoginField: "login.last", limitAttempts: true, interval: 10, digestAlgorithm: "sha1" }; userSchema.plugin(passportLocalMongoose, passportLocalMongooseOptions); var user = module.exports = mongoose.model('User', userSchema); user.schema = userSchema;