diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-07-02 16:22:51 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-07-02 16:22:51 -0400 |
| commit | 221a14315b09946db2485036bbf4a80295dc4889 (patch) | |
| tree | a0c96d11dac2aed77cc453e2fcb9841fcae4d19e /server/lib/schemas/User.js | |
| parent | bde9f3e47d66a1c8a334763146671320ac0359f9 (diff) | |
password reset / username dupe stuff from PH
Diffstat (limited to 'server/lib/schemas/User.js')
| -rw-r--r-- | server/lib/schemas/User.js | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/server/lib/schemas/User.js b/server/lib/schemas/User.js index 77e2e02..b64f8fc 100644 --- a/server/lib/schemas/User.js +++ b/server/lib/schemas/User.js @@ -41,10 +41,8 @@ var UserSchema = new mongoose.Schema({ }, "{PATH} is not an acceptable name"] }, email: { type: String, default: "" }, - emailVerified: { - type: Boolean, - default: false, - }, + emailVerified: { type: Boolean, default: false, }, + emailOptout: { type: Boolean, default: false, }, password: { type: String, validate: [function (val) { @@ -52,6 +50,11 @@ var UserSchema = new mongoose.Schema({ return true }, "{PATH} is not an acceptable password"] }, + passwordNonce: { + type: String, + default: "", + }, + location: { type: String, default: "" }, photo: { type: String, default: "" }, bio: { type: String, default: "" }, @@ -72,6 +75,26 @@ UserSchema.methods.validPassword = function (pw) { shasum.update(pw) return this.password === shasum.digest('hex'); } - +UserSchema.statics.findByUsername = function (username, cb) { + this.findOne({ username: new RegExp("^" + username + "$", "i") }, cb) +} +UserSchema.statics.findByEmail = function (email, cb) { + email = util.escapeRegExp(email) + this.findOne({ email: new RegExp("^" + email + "$", "i") }, cb) +} +UserSchema.statics.findByIP = function (ip, cb) { + ip = util.ip2num(ip) + this.findOne({ $or: [{ created_ip: ip }, { last_ip: ip }] }, cb) +} +UserSchema.statics.resetPasswordNonce = function(user, cb){ + crypto.pseudoRandomBytes(256, function (err, buf){ + var shasum = crypto.createHash('sha1') + shasum.update(buf) + user.passwordNonce = shasum.digest('hex') + user.save(function(err, doc){ + cb() + }) + }) +} module.exports = exports = mongoose.model('user', UserSchema); exports.schema = UserSchema; |
