Skip to content
Snippets Groups Projects
user.js 2.06 KiB
Newer Older
const mongoose = require('mongoose');
const crypto = require('crypto')
const libs = `${process.cwd()}/libs`;
const log = require(`${libs}/log`)(module);
const Schema = mongoose.Schema;

// set up a mongoose model
var UserSchema = new Schema({
Lucas Gabriel Lima's avatar
Lucas Gabriel Lima committed
    email: {
        type: String,
        unique: true,
        required: [true, 'O campo Email é obrigatório.']
Vytor Calixto's avatar
Vytor Calixto committed
    hashedPassword: {
        type: String,
        required: [true, 'O campo Senha é obrigatório.']
Vytor Calixto's avatar
Vytor Calixto committed
    salt: {
        type: String,
        required: true
    },
        required: [true, 'O campo Nome é obrigatório.']
        unique: true,
        required: [true, 'O campo CPF é obrigatório.']
        required: [true, 'O campo Escolaridade é obrigatório.']
    },
    course: {
        type: String,
    },
    segment: {
        type: String,
        required: [true, 'O campo Segmento é obrigatório.']
        required: [true, 'O campo Função é obrigatório.']
    },
    institution_name: {
        type: String,
        required: [true, 'O campo Instituição em que trabalha é obrigatório.']
        required: [true, 'O campo Estado é obrigatório.']
        required: [true, 'O campo Cidade é obrigatório.']
    receive_emails: {
Vytor Calixto's avatar
Vytor Calixto committed
    },
    createdAt: {
        type: Date,
        default: Date.now
    },
    origin: {
        type: String,
        enum: ['LDE', 'SimCAQ'],
        required: true
Vytor Calixto's avatar
Vytor Calixto committed
UserSchema.methods.encryptPassword = (password) => {
    return crypto.pbkdf2Sync(password, this.salt, 10000, 512);
Vytor Calixto's avatar
Vytor Calixto committed
UserSchema.virtual('password').set((password) => {
    this._plainPassword = password;
    this.salt = crypto.randomBytes(128).toString('hex');
    this.hashedPassword = this.encryptPassword(password);
}).get(() => {
    return this._plainPassword;
});

module.exports = mongoose.model('User', UserSchema);