Initial commit
This commit is contained in:
73
server/src/database/schemas/user.js
Normal file
73
server/src/database/schemas/user.js
Normal file
@@ -0,0 +1,73 @@
|
||||
import { Schema } from 'mongoose'
|
||||
import { regExpPattern } from 'regexp-pattern'
|
||||
|
||||
export let userSchema = new Schema({
|
||||
_id: { type: Schema.Types.ObjectId, required: true, auto: true },
|
||||
loginToken: { type: String, index: true, unique: true, sparse: true },
|
||||
passwordHash: {
|
||||
type: {
|
||||
hash: String,
|
||||
salt: String,
|
||||
keyLength: Number,
|
||||
hashMethod: String,
|
||||
iterations: Number
|
||||
}
|
||||
},
|
||||
email: { type: String, match: regExpPattern.email, required: true, index: true, unique: true },
|
||||
newEmail: { type: String, match: regExpPattern.email },
|
||||
imageId: { type: Schema.Types.ObjectId },
|
||||
thumbnailImageId: { type: Schema.Types.ObjectId },
|
||||
emailToken: {
|
||||
type: {
|
||||
value: { type: String, index: true, unique: true, sparse: true },
|
||||
created: Date
|
||||
}
|
||||
},
|
||||
passwordToken: {
|
||||
type: {
|
||||
value: { type: String, index: true, unique: true, sparse: true },
|
||||
created: Date
|
||||
}
|
||||
},
|
||||
firstName: { type: String, required: true },
|
||||
lastName: { type: String, required: true },
|
||||
role: { type: String, required: true, enum: {
|
||||
values: [ 'administrator', 'normal'],
|
||||
message: 'enum validator failed for path `{PATH}` with value `{VALUE}`'
|
||||
}},
|
||||
}, { timestamps: true, id: false })
|
||||
|
||||
userSchema.methods.toClient = function(authUser) {
|
||||
if (authUser === undefined) {
|
||||
authUser = this
|
||||
}
|
||||
|
||||
let user = {
|
||||
_id: this._id,
|
||||
email: this.email,
|
||||
emailValidated: (!!this.emailToken !== true),
|
||||
imageId: this.imageId,
|
||||
thumbnailImageId: this.thumbnailImageId,
|
||||
firstName: this.firstName,
|
||||
lastName: this.lastName,
|
||||
role: this.role
|
||||
}
|
||||
|
||||
if ((authUser.role === 'administrator' || authUser.role === 'executive') || authUser._id.equals(this._id)) {
|
||||
user.zip = this.zip
|
||||
user.state = this.state
|
||||
user.city = this.city
|
||||
user.address1 = this.address1
|
||||
user.address2 = this.address2
|
||||
user.homePhone = this.homePhone
|
||||
user.cellPhone = this.cellPhone
|
||||
user.ssn = this.ssn
|
||||
user.dateOfBirth = this.dateOfBirth
|
||||
user.dateOfHire = this.dateOfHire
|
||||
user.numHouseholds = this.numHouseholds
|
||||
user.t12 = this.t12
|
||||
user.aum = this.aum
|
||||
}
|
||||
|
||||
return user
|
||||
}
|
||||
Reference in New Issue
Block a user