Newer
Older
const config = require(`${libs}/config`);
const log = require(`${libs}/log`)(module);
const User = require(`${libs}/models/user`);
const VerificationToken = require(`${libs}/models/verificationToken`);
const response = require(`${libs}/middlewares/response`);
const email = require(`${libs}/middlewares/email`);
function emailSyntax(email) {
const regex = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
return regex.test(email);
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
userApp.get('/schooling', (req, res, next) => {
req.result = [
'Não estudou',
'Ensino Fundamental Incompleto',
'Ensino Fundamental Completo',
'Ensino Médio',
'Graduação',
'Mestrado',
'Doutorado'
];
next();
}, response('schooling'));
userApp.get('/segment', (req, res, next) => {
req.result = [
'Gestores e equipe gestora das secretarias e ministério da Educação',
'Gestores dos órgãos de planejamento e finanças (das três esferas de governo)',
'Agentes do poder legislativo',
'Agentes dos conselhos de educação',
'Profissionais da educação',
'Sindicato',
'Sociedade civil interessada no financiamento da Educação Básica de qualidade',
'Comunidade acadêmica',
'Imprensa',
'Outro [citar segmento]'
];
next();
}, response('segment'));
userApp.get('/role', (req, res, next) => {
req.result = [
{"Gestores e equipe gestora das secretarias e ministério da Educação" : ["Dirigente municipal, estadual e federal", "Secretário do MEC", "Servidor da área de planejamento educacional", "Membro de associação de gestores (Ex. Undime, Consed, etc)", "Outro [citar função]"]},
{"Gestores dos órgãos de planejamento e finanças (das três esferas de governo)" : ["Equipe gestora dos órgãos de planejamento", "Equipe gestora dos órgãos de finanças", "Outro [citar função]"]},
{"Agentes do poder legislativo" : ["Parlamentar", "Assessor/a parlamentar", "Auditor/a dos tribunais de conta", "Conselheiro/a de tribunais de conta.", "Outro [citar função]"]},
{"Agentes dos conselhos de educação" : ["Conselheiro/a municipais, estaduais e federais", "Conselheiro/a do Fundeb", "Outro [citar função]"]},
{"Profissionais da educação" : ["Professor/a da Educação Básica", "Profissional da educação não-docente", "Outro [citar função]"]},
{"Sindicato" : ["Agente de sindicatos"]},
{"Sociedade civil interessada no financiamento da Educação Básica de qualidade" : ["Membro de fóruns educacionais", "Membro de ONGs e demais entidades sem fins lucrativos", "Estudante da educação básica e membro de entidades estudantis", "Pais e membros de entidades de pais", "Outro [citar função]"]},
{"Comunidade acadêmica" : ["Pesquisador/a", "Estudantes de graduação e pós-graduação", "Representantes de entidades de pesquisa (Ex.: ANPED, ANPAE e FINEDUCA)", "Outro [citar função]"]},
{"Imprensa" : ["Jornalista", "Outro [citar função]"]},
{"Outro [citar segmento]" : []}
]
next();
}, response('role'));
userApp.get('/', passport.authenticate('bearer', {session: false}), (req, res, next) => {
User.find((err, users) => {
if(err) {
log.error(err);
return next(err);
let result = [];
users.forEach((user) => {
let u = user.toObject();
delete u.hashedPassword;
delete u.salt;
result.push(u);
});
req.result = result;
}, response('users'));
userApp.get('/me', passport.authenticate('bearer', { session: false }), (req, res, next) => {
let user = req.user;
delete user.hashedPassword;
delete user.salt;
req.result = user;
}, response('user'));
userApp.get('/:id', (req, res, next) => {
User.findById(req.params.id, (err, user) => {
if(err) {
log.error(err);
return next(err);
if(!user) {
req.statusCode = 404;
next({msg: 'User not found'});
} else {
let u = user.toObject;
delete u.hashedPassword;
delete u.salt;
req.result = u;
next();
}
});
userApp.post('/', (req, res, next) => {
let user = new User({
password: req.body.password,
name: req.body.name,
cpf: req.body.cpf,
schooling: req.body.schooling,
course: req.body.course,
segment: req.body.segment,
role: req.body.role,
state: req.body.state,
city: req.body.city,
receiveEmails: false || req.body.receiveEmails,
origin: req.body.origin
user.save((err) => {
if(err) {
log.error(err);
// Create verification token
let verificationToken = new VerificationToken({
userId: user._id
});
verificationToken.createVerificationToken((err, token) => {
if(err) {
log.error(err);
return next(err);
}
let text = `Olá, ${user.name}, seja bem vindo ao Laboratório de Dados Educacionais.\n
\nClique neste link para confirmar sua conta: ${req.protocol}://${req.get('host')}/verify/${token}`;
// Send confirmation email
let mailOptions = {
to: `"${user.name} <${user.email}>"`,
subject: "Confirme seu cadastro - Laboratório de Dados Educacionais",
text
}
console.log(mailOptions);
email(mailOptions, (err, info) => {
if(err) {
log.error(err);
return next(err);
log.debug(`Message ${info.messageId} sent: ${info.response}`);
res.json({msg: 'User created'});