From d068c0443cf472aa61e22e54702a26e2ae23d590 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 5 Dec 2022 18:34:22 +0100 Subject: [PATCH] Borrado de un usuario para que lo use la web de bajas --- helpers/sendinblue.helper.js | 24 ++++++++++++++++++- modules/auth/auth.controller.js | 20 ++++++++++++---- modules/auth/auth.routes.js | 18 ++++++++++++++ modules/auth/auth.service.js | 4 ++-- modules/auth/auth.validations.js | 7 ++++++ modules/comments/comment.controller.js | 23 +++++++++++++++++- .../events/events_inscriptions.controller.js | 22 +++++++++++++++++ modules/events/events_inscriptions.service.js | 9 +++++++ modules/events/events_questions.controller.js | 23 +++++++++++++++++- modules/events/marketing_list.service.js | 10 ++++---- 10 files changed, 146 insertions(+), 14 deletions(-) diff --git a/helpers/sendinblue.helper.js b/helpers/sendinblue.helper.js index 11b9fdc..2c489e0 100644 --- a/helpers/sendinblue.helper.js +++ b/helpers/sendinblue.helper.js @@ -119,6 +119,22 @@ function _updateMember(email, member) { }); }; +function _deleteMember(email) { + const api = new SibApiV3Sdk.ContactsApi(); + + return new Promise(function (resolve, reject) { + + api.deleteContact(email) + .then(function (data) { + console.debug('API called successfully. Returned data: ' + data); + resolve(); + }) + .catch(function (error) { + console.error(error); + reject(error); + }); + }); +}; function _addMemberToList(member, listId) { const api = new SibApiV3Sdk.ContactsApi(); @@ -205,16 +221,22 @@ function deleteMemberFromList(listId, member) { return _removeMemberFromList(member, listId); } + function updateMemberByEmail(userEmail, userData) { return _updateMember(userEmail, userData); } +function deleteMemberByEmail(userEmail) { + return _deleteMember(userEmail); +} + module.exports = { sendEmailTransactional, getLists, addMemberToList, deleteMemberFromList, - updateMemberByEmail + updateMemberByEmail, + deleteMemberByEmail } diff --git a/modules/auth/auth.controller.js b/modules/auth/auth.controller.js index 5e2b9c2..bc76a5a 100644 --- a/modules/auth/auth.controller.js +++ b/modules/auth/auth.controller.js @@ -203,10 +203,13 @@ async function register(req, res, next) { const oldUserData = newUser; newUser = await authService.extraMethods.updateUser(newUser.id, data); - const userDTO = marketingService.userToMarktingDTO(newUser); - console.log(userDTO); - marketing.updateMemberByEmail(oldUserData.email, userDTO); + try { + const userDTO = marketingService.userToMarktingDTO(newUser); + marketing.updateMemberByEmail(oldUserData.email, userDTO); + } catch (err) { + console.error(err); + } console.log("MODIFICAMOS EL USUARIO EN NUESTRO SISTEMA", newUser); } catch (error) { @@ -522,13 +525,22 @@ async function deleteUser(req, res, next) { email: req.body ? req.body.email : null, }; - const resultCount = await authService.deleteUser(dataUser.id, dataUser.email, dataUser.phone); + const resultCount = await authService.extraMethods.deleteUser(dataUser.id, dataUser.email, dataUser.phone); if (resultCount < 1) { // No se ha encontrado return controllerHelper.handleResultResponse( "No se ha podido encontrar el usuario", null, params, res, httpStatus.NOT_FOUND); } + // Delete in Sendinblue + try { + const userDTO = marketingService.userToMarktingDTO(dataUser); + marketing.deleteMemberByEmail(userDTO.email); + } catch (err) { + console.error(err); + } + + return controllerHelper.handleResultResponse(resultCount, resultCount, params, res, httpStatus.OK); } diff --git a/modules/auth/auth.routes.js b/modules/auth/auth.routes.js index 7e95bbf..193bb5a 100644 --- a/modules/auth/auth.routes.js +++ b/modules/auth/auth.routes.js @@ -4,6 +4,9 @@ const authController = require("./auth.controller"); const authValidation = require("./auth.validations"); const SchemaValidator = require("../../middlewares/schemaValidator"); const AccessValidator = require("../../middlewares/accessValidator"); +const commentController = require("../comments/comment.controller"); +const events_questionsController = require("../events/events_questions.controller"); +const events_inscriptionsController = require("../events/events_inscriptions.controller"); //const postService = require('./post.service')(models.Post); //const postController = require('./post.controller')(postService); @@ -60,6 +63,18 @@ routes.get( authController.verify ); +routes.post( + "/deleteAccount", + SchemaValidator(authValidation.RequestDeleteAccount, true), + //AccessValidator.isAPIKeyUser, + commentController.deleteCommentsByUser, + events_questionsController.deleteQuestionsByUser, + events_inscriptionsController.deleteInscriptionsByUser, + //events_reservationsController.deleteInscriptionsByUser, + authController.deleteUser +); + + routes.post( "/token", SchemaValidator(authValidation.RequestRefreshTokenInputType, true), @@ -69,6 +84,9 @@ routes.post( routes.post("/token/reject", authController.rejectToken); + + + routes.post("/prueba", AccessValidator.isLoggedUser, function (req, res) { res.json({ success: "You are authenticated with JWT!", user: req.user }); }); diff --git a/modules/auth/auth.service.js b/modules/auth/auth.service.js index 23d0cf1..96e3ae6 100644 --- a/modules/auth/auth.service.js +++ b/modules/auth/auth.service.js @@ -72,8 +72,8 @@ const extraMethods = { where: { id: userId, email: userEmail, - userPhone: userPhone, - entityLevel: 1, + phone: userPhone, + level: 1, } }); } diff --git a/modules/auth/auth.validations.js b/modules/auth/auth.validations.js index e343faf..2a38af5 100644 --- a/modules/auth/auth.validations.js +++ b/modules/auth/auth.validations.js @@ -42,6 +42,12 @@ const RequestRefreshTokenInputType = Joi.object().keys({ email: Joi.string().required(), }); +const RequestDeleteAccount = Joi.object().keys({ + id: Joi.string().required(), + phone: Joi.string().required(), + email: Joi.string().required(), +}); + module.exports = { LoginWithPhoneInputType, LoginWithEmailInputType, @@ -49,4 +55,5 @@ module.exports = { LoginOutputType, VerifyInputType, RequestRefreshTokenInputType, + RequestDeleteAccount }; diff --git a/modules/comments/comment.controller.js b/modules/comments/comment.controller.js index 0ae446e..f7579c8 100644 --- a/modules/comments/comment.controller.js +++ b/modules/comments/comment.controller.js @@ -2,13 +2,34 @@ const generateControllers = require('../../core/controllers'); const commentService = require('./comment.service'); -const { extractParamsFromRequest, handleErrorResponse, handleResultResponse } = require('../../helpers/controller.helper'); +const { buildContext } = require('../../core/controllers'); // Module Name const MODULE_NAME = '[comment.controller]'; const controllerOptions = { MODULE_NAME }; const extraControllers = { + deleteCommentsByUser: async (req, res, next) => { + const context = {}; + + try { + const user = { + id: req.body.id, + phone: req.body.phone, + email: req.body.email, + }; + + await commentService.delete({ + query: { + userId: user.id + } + }, context); + + next(); + } catch (error) { + console.error(error); + } + } }; module.exports = generateControllers(commentService, extraControllers, controllerOptions); diff --git a/modules/events/events_inscriptions.controller.js b/modules/events/events_inscriptions.controller.js index 022ff94..4ca1346 100644 --- a/modules/events/events_inscriptions.controller.js +++ b/modules/events/events_inscriptions.controller.js @@ -517,6 +517,28 @@ const extraControllers = { } }, + deleteInscriptionsByUser: async (req, res, next) => { + + try { + //const context = buildContext(req, config); + //const user = context.user ? context.user : null; + + const user = { + id: req.body.id, + phone: req.body.phone, + email: req.body.email, + }; + + await eventInscriptionService._deleteInscriptionByUser(user.id); + + next(); + } catch (error) { + console.error(error); + } + } + + + }; module.exports = generateControllers(eventInscriptionService, extraControllers, controllerOptions); diff --git a/modules/events/events_inscriptions.service.js b/modules/events/events_inscriptions.service.js index 956b7d9..6f9b4ee 100644 --- a/modules/events/events_inscriptions.service.js +++ b/modules/events/events_inscriptions.service.js @@ -228,6 +228,15 @@ const extraMethods = { }); }, + _deleteInscriptionByUser: (userId) => { + + return models.EventInscription.destroy({ + where: { + userId: userId, + }, + }); + }, + //Validamos la inscripcion la quitamos de las lista de espera y asignamos el usuario que la ha validado _validateInscription: (inscriptionId, userId) => { return models.EventInscription.update( diff --git a/modules/events/events_questions.controller.js b/modules/events/events_questions.controller.js index 9dff323..4f49b4b 100644 --- a/modules/events/events_questions.controller.js +++ b/modules/events/events_questions.controller.js @@ -2,13 +2,34 @@ const generateControllers = require('../../core/controllers'); const eventQuestionService = require('./events_questions.service'); +const { buildContext } = require('../../core/controllers'); // Module Name const MODULE_NAME = '[eventQuestion.controller]'; const controllerOptions = { MODULE_NAME }; -const extraControllers = {}; +const extraControllers = { + deleteQuestionsByUser: async (req, res, next) => { + try { + const context = {}; + + const user = { + id: req.body.id, + phone: req.body.phone, + email: req.body.email, + }; + + await eventQuestionService.delete({ + query: { userId: user.id } + }, context); + + next(); + } catch (error) { + console.error(error); + } + } +}; module.exports = generateControllers(eventQuestionService, extraControllers, controllerOptions); diff --git a/modules/events/marketing_list.service.js b/modules/events/marketing_list.service.js index 2807c89..ac3dea3 100644 --- a/modules/events/marketing_list.service.js +++ b/modules/events/marketing_list.service.js @@ -147,11 +147,11 @@ async function syncronizeEventWithMarketingList(eventId) { function userToMarktingDTO(user) { const result = {}; - result.email = user.email; - result.name = user.name; - result.surname = user.surname; - result.userId = user.id; - result.entity = user.Entity ? user.Entity.name : ""; + result.email = user.email ? user.email : ''; + result.name = user.name ? user.name : ''; + result.surname = user.surname ? user.surname : ''; + result.userId = user.id ? user.id : ''; + result.entity = user.Entity ? user.Entity.name : ''; return result; }