summaryrefslogtreecommitdiff
path: root/server/lib/schemas/User.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-07-02 16:22:51 -0400
committerJules Laplace <jules@okfoc.us>2014-07-02 16:22:51 -0400
commit221a14315b09946db2485036bbf4a80295dc4889 (patch)
treea0c96d11dac2aed77cc453e2fcb9841fcae4d19e /server/lib/schemas/User.js
parentbde9f3e47d66a1c8a334763146671320ac0359f9 (diff)
password reset / username dupe stuff from PH
Diffstat (limited to 'server/lib/schemas/User.js')
-rw-r--r--server/lib/schemas/User.js33
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;