From 90142bd07f926ef8a7f3ea86a563ec0ca648ca5d Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 3 Jun 2014 17:51:34 -0400 Subject: pulling in more stuff from posthang --- server/lib/schemas/User.js | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 server/lib/schemas/User.js (limited to 'server/lib/schemas') 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; -- cgit v1.2.3-70-g09d2