54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
var mongoose = require('mongoose');
|
|
var Schema = mongoose.Schema;
|
|
|
|
module.exports.userSchema = mongoose.Schema({
|
|
email: String,
|
|
password_hash: String,
|
|
nickname: String,
|
|
account_type: {type: String, default: "email"},
|
|
created_at: {type: Date, default: Date.now},
|
|
updated_at: {type: Date, default: Date.now},
|
|
avatar_original_uri: String,
|
|
avatar_thumb_uri: String,
|
|
src: String,
|
|
confirmation_token: String,
|
|
confirmed_at: Date,
|
|
password_reset_token: String,
|
|
home_folder_id: Schema.Types.ObjectId,
|
|
team : { type: Schema.Types.ObjectId, ref: 'Team' },
|
|
preferences: {
|
|
language: String,
|
|
email_notifications: {type: Boolean, default: true},
|
|
daily_digest_last_send: Date,
|
|
daily_digest: {type: Boolean, default: true}
|
|
},
|
|
sessions: [
|
|
{
|
|
token: String,
|
|
expires: Date,
|
|
device: String,
|
|
ip: String,
|
|
created_at: Date
|
|
}
|
|
],
|
|
payment_info: String,
|
|
payment_plan_key: {type: String, default: "free"},
|
|
payment_customer_id: String,
|
|
payment_subscription_id: String,
|
|
payment_notification_state: Number
|
|
});
|
|
|
|
module.exports.userSchema.index({
|
|
email: 1,
|
|
"sessions.token": 1,
|
|
team: 1,
|
|
created_at: 1,
|
|
home_folder_id: 1
|
|
});
|
|
|
|
module.exports.userSchema.statics.findBySessionToken = function (token, cb) {
|
|
return this.findOne({ "sessions.token": token}, cb);
|
|
};
|