Borrado de un usuario para que lo use la web de bajas

This commit is contained in:
David Arranz 2022-12-05 18:34:22 +01:00
parent 1738cce3d7
commit d068c0443c
10 changed files with 146 additions and 14 deletions

View File

@ -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
}

View File

@ -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);
}

View File

@ -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 });
});

View File

@ -72,8 +72,8 @@ const extraMethods = {
where: {
id: userId,
email: userEmail,
userPhone: userPhone,
entityLevel: 1,
phone: userPhone,
level: 1,
}
});
}

View File

@ -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
};

View File

@ -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);

View File

@ -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);

View File

@ -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(

View File

@ -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);

View File

@ -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;
}