- aggiornato la guida per installare la App

- aggiornato la Guida Completa e Breve di RISO.
- pagina per ricevere i RIS.
- sistemato problema creazione nuovi Circuiti (admin non corretti).
- corretto giro delle email, invitante, invitato e ricezione msg su telegram.
This commit is contained in:
Surya Paolo
2025-11-23 01:13:32 +01:00
parent 5b1f3eafbc
commit 00bdc278d8
23 changed files with 2765 additions and 701 deletions

File diff suppressed because it is too large Load Diff

375
src/router/users_router_new.js Executable file
View File

@@ -0,0 +1,375 @@
const express = require('express');
const router = express.Router();
const UserController = require('../controllers/UserController');
const { authenticate, authenticate_noerror, authenticate_withUser } = require('../middleware/authenticate');
const { checkBlocked } = require('../middleware/securityMiddleware');
// Initialize controller
const userController = new UserController();
// ===== PUBLIC ROUTES =====
/**
* Register new user
* POST /users
*/
router.post('/', (req, res) => userController.register(req, res));
/**
* Check if username exists
* GET /users/:idapp/:username
*/
router.get('/:idapp/:username', (req, res) => userController.checkUsername(req, res));
/**
* User login
* POST /users/login
*/
router.post('/login', checkBlocked, (req, res) => userController.login(req, res));
/**
* Refresh authentication token
* POST /users/newtok
*/
router.post('/newtok', (req, res) => userController.refreshToken(req, res));
/**
* Get user activities (public profile)
* POST /users/activities
*/
router.post('/activities', authenticate_noerror, (req, res) =>
userController.getProfile(req, res)
);
// ===== AUTHENTICATED ROUTES =====
/**
* Get user profile
* POST /users/profile
*/
router.post('/profile', authenticate, (req, res) =>
userController.getProfile(req, res)
);
/**
* Get user panel info (admin/manager only)
* POST /users/panel
*/
router.post('/panel', authenticate, (req, res) => {
const { User } = require('../models/user');
const server_constants = require('../tools/server_constants');
if (!req.user || (!User.isAdmin(req.user.perm) &&
!User.isManager(req.user.perm) &&
!User.isFacilitatore(req.user.perm))) {
return res.status(server_constants.RIS_CODE_ERR_UNAUTHORIZED).send({
code: server_constants.RIS_CODE_ERR_UNAUTHORIZED,
msg: ''
});
}
userController.getProfile(req, res);
});
/**
* Update user balance
* POST /users/updatesaldo
*/
router.post('/updatesaldo', authenticate, (req, res) =>
userController.updateSaldo(req, res)
);
/**
* Get user's friends
* POST /users/friends
*/
router.post('/friends', authenticate, (req, res) =>
userController.getFriends(req, res)
);
/**
* Execute friend command
* POST /users/friends/cmd
*/
router.post('/friends/cmd', authenticate, (req, res) =>
userController.executeFriendCommand(req, res)
);
/**
* Send command to user
* POST /users/sendcmd
*/
router.post('/sendcmd', authenticate, (req, res) => {
const usernameLogged = req.user.username;
const { idapp, usernameOrig, usernameDest, cmd, value } = req.body;
userController.userService.sendCommand(
req, idapp, usernameOrig, usernameDest, cmd, value
).then(result => res.send(result))
.catch(error => res.status(400).send({ error: error.message }));
});
/**
* Get user's groups
* POST /users/groups
*/
router.post('/groups', authenticate, (req, res) =>
userController.getGroups(req, res)
);
/**
* Execute group command
* POST /users/groups/cmd
*/
router.post('/groups/cmd', authenticate, (req, res) => {
const usernameLogged = req.user.username;
const { idapp, usernameOrig, groupnameDest, cmd, value } = req.body;
userController.userService.executeGroupCommand(
idapp, usernameOrig, groupnameDest, cmd, value, usernameLogged
).then(result => res.send(result))
.catch(error => res.status(400).send({ error: error.message }));
});
/**
* Get user's circuits
* POST /users/circuits
*/
router.post('/circuits', authenticate_withUser, (req, res) =>
userController.getCircuits(req, res)
);
/**
* Execute circuit command
* POST /users/circuits/cmd
*/
router.post('/circuits/cmd', authenticate, async (req, res) => {
const usernameLogged = req.user.username;
const { idapp, usernameOrig, circuitname, cmd, value, extrarec } = req.body;
try {
const result = await userController.userService.executeCircuitCommand(
idapp, usernameOrig, circuitname, cmd, value, usernameLogged, extrarec
);
res.send(result);
} catch (error) {
res.status(400).send({ error: error.message });
}
});
/**
* Logout user
* DELETE /users/me/token
*/
router.delete('/me/token', authenticate_withUser, (req, res) =>
userController.logout(req, res)
);
/**
* Set user permissions
* POST /users/setperm
*/
router.post('/setperm', authenticate, (req, res) =>
userController.setPermissions(req, res)
);
/**
* Get last movements/transactions
* POST /users/lastmovs
*/
router.post('/lastmovs', authenticate, async (req, res) => {
const { nummov, nummov_uscita, idapp } = req.body;
const server_constants = require('../tools/server_constants');
const tools = require('../tools/general');
try {
const { Movement } = require('../models/movement');
let last_transactions = [];
if (nummov) {
last_transactions = await Movement.getLastN_Transactions(idapp, nummov, nummov_uscita);
}
res.send({ code: server_constants.RIS_CODE_OK, last_transactions });
} catch (e) {
tools.mylogserr('Error lastmovs: ', e);
res.status(400).send();
}
});
/**
* Set receive RIS flag
* POST /users/receiveris
*/
router.post('/receiveris', authenticate, async (req, res) => {
const username = req.user?.username || '';
const { groupname, idapp } = req.body;
const { User } = require('../models/user');
const { MyGroup } = require('../models/mygroup');
const server_constants = require('../tools/server_constants');
const tools = require('../tools/general');
try {
if (!username) {
return res.send({ code: server_constants.RIS_CODE_ERR });
}
if (groupname) {
await MyGroup.setReceiveRisGroup(idapp, groupname);
} else {
await User.setReceiveRis(idapp, username);
}
res.send({ code: server_constants.RIS_CODE_OK });
} catch (err) {
tools.mylog('ERRORE IN receiveris: ' + err.message);
res.status(400).send();
}
});
/**
* List registration links
* POST /users/listlinkreg
*/
router.post('/listlinkreg', authenticate, async (req, res) => {
const username = req.user?.username || '';
const { idapp } = req.body;
const { User } = require('../models/user');
const server_constants = require('../tools/server_constants');
const tools = require('../tools/general');
try {
if (!username) {
return res.send({ code: server_constants.RIS_CODE_ERR });
}
await User.setLinkReg(idapp, username);
res.send({ code: server_constants.RIS_CODE_OK });
} catch (err) {
tools.mylog('ERRORE IN listlinkreg: ' + err.message);
res.status(400).send();
}
});
// ===== ADMIN ROUTES =====
/**
* Update user (admin only)
* PATCH /users/:id
*/
router.patch('/:id', authenticate, (req, res) => {
const { User } = require('../models/user');
const _ = require('lodash');
const shared_consts = require('../tools/shared_nodejs');
const server_constants = require('../tools/server_constants');
const tools = require('../tools/general');
const id = req.params.id;
const body = _.pick(req.body.user, shared_consts.fieldsUserToChange());
tools.mylogshow('PATCH USER: ', id);
if (!User.isAdmin(req.user.perm)) {
return res.status(server_constants.RIS_CODE_ERR_UNAUTHORIZED).send({
code: server_constants.RIS_CODE_ERR_UNAUTHORIZED,
msg: ''
});
}
User.findByIdAndUpdate(id, { $set: body })
.then((user) => {
tools.mylogshow(' USER TO MODIFY: ', user);
if (!user) {
return res.status(404).send();
}
res.send({ code: server_constants.RIS_CODE_OK, msg: '' });
})
.catch((e) => {
tools.mylogserr('Error patch USER: ', e);
res.status(400).send();
});
});
/**
* Execute database operation (admin only)
* POST /users/dbop
*/
router.post('/dbop', authenticate, (req, res) =>
userController.executeDbOperation(req, res)
);
/**
* Execute user database operation
* POST /users/dbopuser
*/
router.post('/dbopuser', authenticate, async (req, res) => {
const { mydata, idapp } = req.body;
const server_constants = require('../tools/server_constants');
try {
const result = await userController.userService.executeUserDbOperation(
idapp,
mydata,
req.user.username
);
res.send({ code: server_constants.RIS_CODE_OK, ris: result });
} catch (e) {
res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: e.message });
}
});
/**
* Get map information
* POST /users/infomap
*/
router.post('/infomap', authenticate, (req, res) =>
userController.getMapInfo(req, res)
);
/**
* Management telegram operations
* POST /users/mgt
*/
router.post('/mgt', authenticate_withUser, async (req, res) => {
const { mydata, idapp } = req.body;
const telegrambot = require('../telegram/telegrambot');
try {
const { nummsgsent, numrec, textsent, text } =
await telegrambot.sendMsgFromSiteToBotTelegram(idapp, req.user, mydata);
res.send({ numrec, nummsgsent, textsent, text });
} catch (e) {
res.status(400).send({ error: e.message });
}
});
// ===== TEST ROUTES (Development only) =====
if (process.env.NODE_ENV === 'development' || process.env.LOCALE === '1') {
router.post('/test1', async (req, res) => {
const { User } = require('../models/user');
const sendemail = require('../sendemail');
const user = await User.findOne({
idapp: 1,
username: 'paoloar77'
});
if (user) {
await sendemail.sendEmail_Registration(
user.lang,
user.email,
user,
user.idapp,
user.linkreg
);
}
res.send({ success: true });
});
}
module.exports = router;