diff options
Diffstat (limited to 'server/lib/schemas/User.js')
| -rw-r--r-- | server/lib/schemas/User.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/server/lib/schemas/User.js b/server/lib/schemas/User.js new file mode 100644 index 0000000..93c0cd3 --- /dev/null +++ b/server/lib/schemas/User.js @@ -0,0 +1,66 @@ +/* jshint node: true */ + +var NONALPHANUMERICS_REGEX = new RegExp('[^-_a-zA-Z0-9]', 'g') + +var mongoose = require('mongoose'), + _ = require('lodash'), + config = require('../../../config.json'); + +var UserSchema = new mongoose.Schema({ + twitter_id: String, + displayName: String, + username: { + type: String, + required: true, + validate: [function (val) { + val = val.replace(NONALPHANUMERICS_REGEX, "") + this.username = val.toLowerCase() + switch (val) { + case 'login': + case 'logout': + case 'profile': + case 'auth': + case 'upload': + case 'about': + case 'settings': + case 'admin': + case 'terms': + case '': + return false + } + if (! this.displayName) { this.displayName = val; } + return true + }, "{PATH} is not an acceptable name"] + }, + email: { + type: String, + default: "", + }, + emailVerified: { + type: Boolean, + default: false, + }, + password: { + type: String, + validate: [function (val) { + if (! val.length) return true + return true + }, "{PATH} is not an acceptable password"] + }, + photo: { + type: String, + required: true + }, + bio: { + type: String, + default: "" + }, + links: [ + { type: String, default: "" } + ], + isAdmin: { type: Boolean, default: false } +}); + + +module.exports = exports = mongoose.model('user', UserSchema); +exports.schema = UserSchema; |
