From 892eccb4fc8ac235e9ee7d2df39a0c3044deaf0d Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Tue, 31 Dec 2019 00:44:53 +0100 Subject: [PATCH] - DashBoard, Profile, Order Menu --- emails/registration/it/html.pug | 4 +- package.json | 6 +-- src/server/config/config.js | 8 +-- src/server/models/mypage.js | 11 ++++- src/server/models/user.js | 71 +++++++++++++++++++++++++-- src/server/router/dashboard_router.js | 52 ++++++++++++++++++++ src/server/router/index_router.js | 4 +- src/server/router/users_router.js | 4 +- src/server/sendemail.js | 6 ++- src/server/server.js | 2 + src/server/tools/general.js | 2 +- src/server/tools/shared_nodejs.js | 2 +- 12 files changed, 150 insertions(+), 22 deletions(-) create mode 100644 src/server/router/dashboard_router.js diff --git a/emails/registration/it/html.pug b/emails/registration/it/html.pug index d7b1cbe..7ce2789 100644 --- a/emails/registration/it/html.pug +++ b/emails/registration/it/html.pug @@ -2,8 +2,8 @@ p Benvenuto #{name} nel portale di #{nomeapp}! p I tuoi dati di accesso da ricordare sono: span Username:  strong #{username}
-span hai dimenticato la Password? :  - strong Trovala qui
+span Password :  (** non mostrata per privacy **)
+ span Email:  strong #{emailto}
p Per confermare la registrazione clicca sul bottone: diff --git a/package.json b/package.json index 0f96736..6ac51ff 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "freeplanet-serverside", - "version": "1.0.1", + "version": "1.0.2", "description": "freeplanet serverside", - "main": "server.js", + "main": "server/server.js", "scripts": { "start": "nodemon src/server/server.js", "build": "gulp build", @@ -12,7 +12,7 @@ "test-watch": "nodemon --exec 'npm test'" }, "engines": { - "node": "^8.9.0" + "node": "^12.14.0" }, "author": "Paolo Arena", "license": "MIT", diff --git a/src/server/config/config.js b/src/server/config/config.js index 01fddcd..c9cc0d8 100644 --- a/src/server/config/config.js +++ b/src/server/config/config.js @@ -130,12 +130,12 @@ if (process.env.NODE_ENV === 'production') { }, { idapp: '7', - name: 'Notevole', - adminemail: '', + name: 'Notevole (Server Test)', + adminemail: 'pao.loarena77@gmail.com', manageremail: '', - host: 'https://notevole.freeplanet.app', + host: 'https://testnotevole.freeplanet.app', portapp: '0', - dir: '/var/www/notevole.freeplanet.app', + dir: '/var/www/testnotevole.freeplanet.app', }, ]; } else { diff --git a/src/server/models/mypage.js b/src/server/models/mypage.js index b48be10..a1b98f1 100644 --- a/src/server/models/mypage.js +++ b/src/server/models/mypage.js @@ -19,13 +19,20 @@ const MyPageSchema = new Schema({ author_username: { type: String, }, + lang: { + type: String, + }, title: { type: String, }, - path: { + icon: { type: String, }, - icon: { + order: { + type: Number, + default: 1000, + }, + path: { type: String, }, keywords: { diff --git a/src/server/models/user.js b/src/server/models/user.js index 3df2225..6bc9ca4 100644 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -69,6 +69,9 @@ var UserSchema = new mongoose.Schema({ verified_email: { type: Boolean, }, + made_gift: { + type: Boolean, + }, tokens: [{ access: { type: String, @@ -127,6 +130,9 @@ var UserSchema = new mongoose.Schema({ cell: { type: String }, + country_pay: { + type: String + }, email_paypal: { type: String }, @@ -155,7 +161,7 @@ UserSchema.methods.generateAuthToken = function (req) { var user = this; const useragent = req.get('User-Agent'); - tools.mylog("GENERATE USER-AGENT = ", useragent); + // tools.mylog("GENERATE USER-AGENT = ", useragent); const access = 'auth'; const browser = useragent; @@ -172,7 +178,7 @@ UserSchema.methods.generateAuthToken = function (req) { return user.save() .then(() => { - console.log("TOKEN CREATO IN LOGIN : " + token); + // console.log("TOKEN CREATO IN LOGIN : " + token); return token; }) .catch(err => { @@ -283,6 +289,51 @@ UserSchema.statics.findByUsername = function (idapp, username) { }); }; +UserSchema.statics.getUserShortDataByUsername = function (idapp, username) { + const User = this; + + return User.findOne({ + 'idapp': idapp, + 'username': username, + }, { + username: 1, + name: 1, + surname: 1, + verified_email: 1, + made_gift: 1, + email: 1, + date_reg: 1, + img: 1 + }).then((ris) => { + if (!!ris) { + // console.log('ris', ris); + if (!!ris._doc) + return ris._doc; + else + return null; + } + }); +}; + +UserSchema.statics.getDownlineByUsername = function (idapp, username) { + const User = this; + return User.find({ + 'idapp': idapp, + 'aportador_solidario': username, + }, { + username: 1, + name: 1, + surname: 1, + verified_email: 1, + made_gift: 11, + email: 1, + date_reg: 1, + img: 1 + }, (err, arrrec) => { + return arrrec + }); +}; + UserSchema.statics.findByLinkreg = function (idapp, linkreg) { var User = this; @@ -362,6 +413,7 @@ UserSchema.statics.getUsersList = function (idapp) { name: 1, surname: 1, verified_email: 1, + made_gift: 1, perm: 1, email: 1, date_reg: 1, @@ -381,7 +433,19 @@ UserSchema.statics.getUsersListByParams = function (params) { return User.find( { $match: filterMatchBefore }, { 'idapp': idapp }, - { username: 1, name: 1, surname: 1, verified_email: 1, perm: 1, email: 1, date_reg: 1, img: 1, lasttimeonline: 1, news_on: 1 }) + { + username: 1, + name: 1, + surname: 1, + verified_email: 1, + made_gift: 1, + perm: 1, + email: 1, + date_reg: 1, + img: 1, + lasttimeonline: 1, + news_on: 1 + }) }; @@ -410,7 +474,6 @@ if (tools.INITDB_FIRSTIME) { const User = mongoose.model('User', UserSchema); - class Hero { constructor(name, level) { this.name = name; diff --git a/src/server/router/dashboard_router.js b/src/server/router/dashboard_router.js new file mode 100644 index 0000000..4e7f28d --- /dev/null +++ b/src/server/router/dashboard_router.js @@ -0,0 +1,52 @@ +const express = require('express'); +const router = express.Router(); + +const tools = require('../tools/general'); + +const server_constants = require('../tools/server_constants'); + +const { authenticate } = require('../middleware/authenticate'); + +const { User } = require('../models/user'); + +const mongoose = require('mongoose'); +const Subscription = mongoose.model('subscribers'); + +const _ = require('lodash'); + +const { ObjectID } = require('mongodb'); + + +router.post('/', authenticate, async (req, res) => { + const idapp = req.body.idapp; + + try { + const aportador_solidario = req.user.aportador_solidario; + + // DATA: username, name, surname, email, intcode_cell, cell + const dashboard = { + aportador: {}, + downline: [] + }; + + // Data of my Aportador + dashboard.aportador = await User.getUserShortDataByUsername(idapp, aportador_solidario); + + // Data of my Downline + dashboard.downline = await User.getDownlineByUsername(idapp, req.user.username); + + for (let index = 0; index < dashboard.downline.length; ++index) { + dashboard.downline[index].downline = await User.getDownlineByUsername(idapp, dashboard.downline[index].username); + } + + // Extract all the todos of the userId only + // tools.mylog('dashboard', dashboard); + res.send({ dashboard }); + } catch (e) { + console.error(e); + res.status(400).send(e); + } + +}); + +module.exports = router; diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 07710f8..926e6c4 100644 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -244,7 +244,7 @@ router.patch('/chval', authenticate, (req, res) => { const mytable = getTableByTableName(mydata.table); const fieldsvalue = mydata.fieldsvalue; - tools.mylogshow('PATCH CHVAL: ', id, fieldsvalue); + // tools.mylogshow('PATCH CHVAL: ', id, fieldsvalue); // If I change my record... if ((!User.isAdmin(req.user) && !User.isManager(req.user)) && !(req.user._id.toString() === id)) { @@ -253,7 +253,7 @@ router.patch('/chval', authenticate, (req, res) => { } mytable.findByIdAndUpdate(id, { $set: fieldsvalue }).then((rec) => { - tools.mylogshow(' REC TO MODIFY: ', rec); + // tools.mylogshow(' REC TO MODIFY: ', rec); if (!rec) { return res.status(404).send(); } else { diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index b9464a3..d718842 100644 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -33,7 +33,7 @@ function existSubScribe(userId, access, browser) { // POST /users router.post('/', async (req, res) => { tools.mylog("POST /users"); - const body = _.pick(req.body, ['email', 'password', 'username', 'name', 'surname', 'idapp', 'keyappid', 'lang', 'profile']); + const body = _.pick(req.body, ['email', 'password', 'username', 'name', 'surname', 'idapp', 'keyappid', 'lang', 'profile', 'aportador_solidario']); const user = new User(body); // tools.mylog("LANG PASSATO = " + user.lang, "IDAPP", user.idapp); @@ -77,7 +77,7 @@ router.post('/', async (req, res) => { User.findByUsername(user.idapp, user.username) .then((usertrovato) => { - tools.mylog("TROVATO USERNAME ? ", user.username, usertrovato); + // tools.mylog("TROVATO USERNAME ? ", user.username, usertrovato); if (usertrovato !== null) { return user.generateAuthToken(req); } else { diff --git a/src/server/sendemail.js b/src/server/sendemail.js index fa8d335..ed597e4 100644 --- a/src/server/sendemail.js +++ b/src/server/sendemail.js @@ -57,6 +57,10 @@ module.exports = { paramemail.send = !previewonly; } + // if (!transport) { + // transport = this.getTransport(); + // } + if (transport) { paramemail.transport = transport; } else { @@ -432,7 +436,7 @@ module.exports = { // Create Transport let smtpTransport = null; - if (mylocalsconf.dataemail.email_service !== 'gmail') { + if (mylocalsconf.dataemail.email_service !== 'gmail' && mylocalsconf.dataemail.email_service !== undefined) { smtpTransport = nodemailer.createTransport({ host: mylocalsconf.dataemail.email_service, port: mylocalsconf.dataemail.email_port, diff --git a/src/server/server.js b/src/server/server.js index 521b963..468c5f0 100644 --- a/src/server/server.js +++ b/src/server/server.js @@ -47,6 +47,7 @@ const index_router = require('./router/index_router'); const push_router = require('./router/push_router'); const newsletter_router = require('./router/newsletter_router'); const booking_router = require('./router/booking_router'); +const dashboard_router = require('./router/dashboard_router'); const myevent_router = require('./router/myevent_router'); const subscribe_router = require('./router/subscribe_router'); const sendmsg_router = require('./router/sendmsg_router'); @@ -106,6 +107,7 @@ app.use('/sendmsg', sendmsg_router); app.use('/push', push_router); app.use('/news', newsletter_router); app.use('/booking', booking_router); +app.use('/dashboard', dashboard_router); app.use('/event', myevent_router); app.use('/email', email_router); app.use('/todos', todos_router); diff --git a/src/server/tools/general.js b/src/server/tools/general.js index e7d2cc5..2370b12 100644 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -458,7 +458,7 @@ module.exports = { } ); - console.log('query', query); + // console.log('query', query); return query; diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index 9478fdb..73bb5e0 100644 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -12,7 +12,7 @@ module.exports = { }, fieldsUserToChange() { - return ['_id', 'username', 'email', 'name', 'surname', 'perm', 'date_reg', 'verified_email', 'ipaddr', 'lasttimeonline', 'profile', 'news_on', 'aportador_solidario'] + return ['_id', 'username', 'email', 'name', 'surname', 'perm', 'date_reg', 'verified_email', 'ipaddr', 'lasttimeonline', 'profile', 'news_on', 'aportador_solidario', 'made_gift'] } };