From 74c4a829b0709e45b46a8e10bc047168acd68e2b Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Fri, 8 Dec 2023 14:07:32 +0100 Subject: [PATCH] Creazione Sito Web da pagina --- .env.prod.pcb | 1 + .env.test.pcb | 1 + .env.test.risosrv | 1 + src/server/config/config.js | 1 + src/server/models/site.js | 44 ++++++++++++++++++++- src/server/models/user.js | 62 +++++++++++++++++++++++++++++- src/server/router/index_router.js | 27 +++++++++++++ src/server/telegram/telegrambot.js | 4 +- src/server/tools/shared_nodejs.js | 3 +- 9 files changed, 138 insertions(+), 6 deletions(-) diff --git a/.env.prod.pcb b/.env.prod.pcb index e068be6..733621b 100644 --- a/.env.prod.pcb +++ b/.env.prod.pcb @@ -28,3 +28,4 @@ PATH_SSL_CHAIN_PEM=chain.pem PROD=0 PROJECT_DESCR_MAIN='__PROJECTS' SECRK=iUUb38v23jjDFaosWj92axkBOXCQ +AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNVZZ \ No newline at end of file diff --git a/.env.test.pcb b/.env.test.pcb index d7beb17..5d4fd39 100644 --- a/.env.test.pcb +++ b/.env.test.pcb @@ -28,3 +28,4 @@ PATH_SSL_CHAIN_PEM=chain.pem PROD=0 PROJECT_DESCR_MAIN='__PROJECTS' SECRK=iUUb38v23jjDFaosWj92axkBOXCQ +AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV \ No newline at end of file diff --git a/.env.test.risosrv b/.env.test.risosrv index f5a8b52..52688a1 100644 --- a/.env.test.risosrv +++ b/.env.test.risosrv @@ -26,3 +26,4 @@ PATH_SSL_CHAIN_PEM=chain.pem PROD=0 PROJECT_DESCR_MAIN='__PROJECTS' SECRK=iUUb38v23jjDFaosWj92axkBOXCQ +AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV \ No newline at end of file diff --git a/src/server/config/config.js b/src/server/config/config.js index efa9e0c..1643a53 100755 --- a/src/server/config/config.js +++ b/src/server/config/config.js @@ -10,6 +10,7 @@ var file = `.env.${node_env}`; // GLOBALI (Uguali per TUTTI) process.env.LINKVERIF_REG = '/vreg'; process.env.LINK_REQUEST_NEWPASSWORD = '/requestnewpwd'; +process.env.ADD_NEW_SITE = '/addNewSite'; process.env.LINK_UPDATE_PASSWORD = '/updatepassword'; process.env.LINK_UPDATE_PWD = '/updatepwd'; process.env.LINK_CHECK_UPDATES = '/checkupdates'; diff --git a/src/server/models/site.js b/src/server/models/site.js index 84780d2..e14bf44 100755 --- a/src/server/models/site.js +++ b/src/server/models/site.js @@ -8,7 +8,9 @@ mongoose.level = "F"; mongoose.set('debug', false); -const {ObjectID} = require('mongodb'); +const { ObjectID } = require('mongodb'); + +const _ = require('lodash'); // Resolving error Unknown modifier: $pushAll mongoose.plugin(schema => { @@ -242,6 +244,46 @@ module.exports.findAllIdApp = async function (idapp) { }; +module.exports.generateNewSite_IdApp = async function (idapp, params) { + + let ris = null; + + try { + + if (idapp) { + ris = await Site.find({ idapp: idapp.toString(), host: params.host }); + } else { + + for (let idapp = 20; idapp <= 100; idapp++) { + ris = await Site.find({ idapp: idapp.toString(), host: params.host }); + break; + } + } + + if (ris && ris.length === 0) { + const paramSite = _.pick(params, ['name', 'host', 'email']); + let mysite = new Site(paramSite); + + mysite.active = true; + mysite.idapp = idapp.toString(); + mysite.adminemail = params.email; + + const ris = await mysite.save(); + + if (ris) + return mysite.idapp; + else + return ''; + } + + } catch (e) { + console.error(e); + } + + return ''; + +}; + module.exports.createFirstUserAdmin = async function () { const { User } = require('../models/user'); diff --git a/src/server/models/user.js b/src/server/models/user.js index c9747f9..60e9a37 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -14,6 +14,7 @@ const { Graduatoria } = require('../models/graduatoria'); // const {NavePersistente} = require('../models/navepersistente'); // const { ExtraList } = require('../models/extralist'); +const server_constants = require('../tools/server_constants'); const { Reaction } = require('../models/reaction'); @@ -1291,7 +1292,7 @@ UserSchema.statics.createNewRequestPwd = function (idapp, email, code) { return { ris: false }; } else { // Creo il tokenforgot - user.tokenforgot = jwt.sign({_id: 'prova123##', smart: user._id.toHexString()}, process.env.SIGNCODE). + user.tokenforgot = jwt.sign({ _id: 'prova123##', smart: user._id.toHexString() }, process.env.SIGNCODE). toString(); user.date_tokenforgot = new Date(); user.tokenforgot_code = 100000 + Math.round(Math.random() * 899999); @@ -1322,7 +1323,7 @@ UserSchema.statics.createNewRequestPwdByUsernameAndGetLink = async function (ida }; const prova = 'dasdas1231#11'; // Creo il tokenforgot - user.tokenforgot = jwt.sign({_id: prova, smart: user._id.toHexString(), ...additionalData}, process.env.SIGNCODE). + user.tokenforgot = jwt.sign({ _id: prova, smart: user._id.toHexString(), ...additionalData }, process.env.SIGNCODE). toString(); user.date_tokenforgot = new Date(); user.tokenforgot_code = 100000 + Math.round(Math.random() * 899999); @@ -5348,6 +5349,63 @@ UserSchema.statics.setReceiveRis = async function (idapp, username) { }; +UserSchema.statics.addNewSite = async function (idappPass, body) { + const User = this; + + const Site = require('../models/site'); + + // Inserisci il nuovo Sito (se non esiste) + // Site. + // Inserisci il Nuovo Utente (se non esiste) + + if (!body.code || body.code.toString() !== process.env.AUTH_NEW_SITES) { + return { code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, idapp: -1 }; + } + + try { + // cerca un IdApp Libero + let idapp = await Site.generateNewSite_IdApp(idappPass, body); + + if (idapp) { + let arrSite = await Site.find({ idapp }).lean(); + let numutenti = 0; + if (idapp) { + numutenti = await User.countDocuments({ idapp }); + }; + + if (arrSite && arrSite.length === 1 && numutenti === 0) { + // Nessun Sito Installato e Nessun Utente installato ! + let myuser = new User(); + myuser._id = new ObjectID(); + myuser.idapp = idapp; + myuser.email = body.email; + myuser.username = body.username; + myuser.password = body.password; + myuser.name = body.username; + myuser.index = 1; + myuser.surname = ''; + myuser.lang = 'it'; + myuser.verified_email = true; + myuser.verified_by_aportador = true; + myuser.perm = '3'; + myuser.profile.special_req = true; + myuser.profile.nationality = 'IT'; + myuser.lasttimeonline = new Date(); + myuser.date_reg = new Date(); + + await myuser.save(); + + return { code: server_constants.RIS_CODE_OK, idapp }; + } + } + + return { code: server_constants.RIS_CODE_ERR, idapp: -1 }; + } catch (e) { + console.error('Error in addNewSite:', e.message); + } + +}; + UserSchema.statics.createNewSubRecord = async function (idapp, req) { const User = this; diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 2757808..8817ef8 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -136,6 +136,33 @@ router.post(process.env.LINKVERIF_REG, (req, res) => { }); + +router.post(process.env.ADD_NEW_SITE, async (req, res) => { + + try { + const body = req.body; + const idapp = body.idappSent; + const name = body.name; + const email = body.email.toLowerCase().trim(); + + console.log('Add New Site: idapp = ', idapp, 'email=', email, 'name=', name); + + const ris = await User.addNewSite(idapp, body); + + if (ris) { + res.send(ris); + } else { + res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: 'Errore' }); + } + + } catch (e) { + console.log(process.env.ADD_NEW_SITE, e.message); + res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: e }); + } + +}); + + // Faccio richiesta di una Nuova Password router.post(process.env.LINK_REQUEST_NEWPASSWORD, async (req, res) => { diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index 55f0594..90efa30 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -3,8 +3,8 @@ const tools = require('../tools/general'); const appTelegram = [tools.FREEPLANET, tools.RISO]; const appTelegram_TEST = [tools.FREEPLANET, tools.RISO]; -const appTelegram_DEVELOP = [tools.RISO]; -// const appTelegram_DEVELOP = [tools.FIOREDELLAVITA]; +//const appTelegram_DEVELOP = [tools.RISO]; +const appTelegram_DEVELOP = [tools.FIOREDELLAVITA]; const appTelegramFinti = ['2', tools.CNM]; const appTelegramDest = [tools.FREEPLANET, tools.FREEPLANET]; diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index 3a93621..51c423b 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -242,7 +242,8 @@ module.exports = { { table: 'skills', key: 'descr' }, { table: 'statusSkills', key: 'descr' }, ], - + + VISIB_ALL: 0, VISIB_ONLYIF_VERIFIED: 1, VISIB_ONLY_MANAGER: 2,