Borrado de un usuario, API KEY

This commit is contained in:
David Arranz 2022-12-07 13:45:54 +01:00
parent d068c0443c
commit c143ee25ba
8 changed files with 55 additions and 5550 deletions

View File

@ -106,6 +106,33 @@ passport.use(
}) })
); );
/**
*
*/
passport.use("api-key",
new CustomStrategy(async (req, done) => {
const token =
req && req.headers && req.headers["x-access-key"]
? req.headers["x-access-key"]
: null;
if (!token) {
console.error("Unauthorized. API KEY missing.");
return done(null, false, { message: "Unauthorized. API KEY missing." });
}
const result = securityHelper.verify(token);
if (result) {
console.log('Valid API KEY');
return done(null, {}, { message: "Valid API KEY" });
} else {
//console.log('Token no válido');
console.error("Unauthorized. Invalid token.");
return done(null, false, { message: "Unauthorized. Invalid API KEY." });
}
})
);
// JWT // JWT
passport.use( passport.use(
"jwt", "jwt",

View File

@ -115,7 +115,11 @@ module.exports = {
return _sign(payload, signOptions); return _sign(payload, signOptions);
}, },
verify: (token) => { verify: (tokenOrKey) => {
return _verify(token, signOptions); if (tokenOrKey === 'AKlqdviapp-xcCJs5BfYCzHSIWKpLL1JY5Ypl3HCKHNKhXhAHVYGb2uL9YMJzNprKaTLCzcGcVUQgN6RBh3taBlnaxAhv1pQdmzyxmtAIIBzxYvVy8OusNQmRrsv95tf') {
return true;
} else {
return _verify(tokenOrKey, signOptions);
}
}, },
}; };

View File

@ -7,6 +7,8 @@ const compose = require('../helpers/middleware.helper');
const isRegisteredUserEmail = passport.authenticate('local-email', { session: false }); const isRegisteredUserEmail = passport.authenticate('local-email', { session: false });
const isRegisteredUserPhone = passport.authenticate('local-phone', { session: false }); const isRegisteredUserPhone = passport.authenticate('local-phone', { session: false });
const isLoggedUser = passport.authenticate('jwt', { session: false }); const isLoggedUser = passport.authenticate('jwt', { session: false });
const isAPIKeyUser = passport.authenticate('api-key', { session: false });
const isOptionalUser = (req, res, next) => { const isOptionalUser = (req, res, next) => {
const token = ((req && req.headers && req.headers['x-access-token']) ? req.headers['x-access-token'] : null); const token = ((req && req.headers && req.headers['x-access-token']) ? req.headers['x-access-token'] : null);
if (token) { if (token) {
@ -32,5 +34,6 @@ module.exports = {
isRegisteredUserPhone, isRegisteredUserPhone,
isLoggedUser, isLoggedUser,
isOptionalUser, isOptionalUser,
isAdministratorUser isAdministratorUser,
isAPIKeyUser
}; };

View File

@ -536,11 +536,11 @@ async function deleteUser(req, res, next) {
try { try {
const userDTO = marketingService.userToMarktingDTO(dataUser); const userDTO = marketingService.userToMarktingDTO(dataUser);
marketing.deleteMemberByEmail(userDTO.email); marketing.deleteMemberByEmail(userDTO.email);
} catch (err) { } catch (error) {
console.error(err); console.error(error);
return controllerHelper.handleErrorResponse(MODULE_NAME, "deleteUser", error, res);
} }
return controllerHelper.handleResultResponse(resultCount, resultCount, params, res, httpStatus.OK); return controllerHelper.handleResultResponse(resultCount, resultCount, params, res, httpStatus.OK);
} }

View File

@ -66,7 +66,7 @@ routes.get(
routes.post( routes.post(
"/deleteAccount", "/deleteAccount",
SchemaValidator(authValidation.RequestDeleteAccount, true), SchemaValidator(authValidation.RequestDeleteAccount, true),
//AccessValidator.isAPIKeyUser, AccessValidator.isAPIKeyUser,
commentController.deleteCommentsByUser, commentController.deleteCommentsByUser,
events_questionsController.deleteQuestionsByUser, events_questionsController.deleteQuestionsByUser,
events_inscriptionsController.deleteInscriptionsByUser, events_inscriptionsController.deleteInscriptionsByUser,

View File

@ -61,12 +61,12 @@ module.exports = function (sequelize, DataTypes) {
model: sequelize.models.SpeakerType, model: sequelize.models.SpeakerType,
as: 'type' as: 'type'
}, },
/* { /* {
model: sequelize.models.Value, model: sequelize.models.Value,
as: 'values', as: 'values',
required: false, required: false,
}, },
*/ */
] ]
}, },
}); });
@ -84,8 +84,8 @@ module.exports = function (sequelize, DataTypes) {
Speaker.EventDetails = Speaker.hasMany(models.EventDetail, { foreignKey: 'speakerId', as: "eventdetails" }); Speaker.EventDetails = Speaker.hasMany(models.EventDetail, { foreignKey: 'speakerId', as: "eventdetails" });
Speaker.Questions = Speaker.hasMany(models.EventQuestion, { foreignKey: 'speakerId', as: "questions", required: false, }); Speaker.Questions = Speaker.hasMany(models.EventQuestion, { foreignKey: 'speakerId', as: "questions", required: false, });
//OJO antes de force comentar //OJO antes de force comentar
// OJO GENERA UN FOREIGN KEY Con eventos y habrá ID de otras entidades que no exitan en la tabla eventos, porque son post o speakers // OJO GENERA UN FOREIGN KEY Con eventos y habrá ID de otras entidades que no exitan en la tabla eventos, porque son post o speakers
Speaker.Multimedias = Speaker.hasMany(models.Multimedia, { Speaker.Multimedias = Speaker.hasMany(models.Multimedia, {
foreignKey: 'entityId', foreignKey: 'entityId',
as: { singular: 'multimedia', plural: 'multimedias' }, as: { singular: 'multimedia', plural: 'multimedias' },
@ -126,7 +126,7 @@ module.exports = function (sequelize, DataTypes) {
include: [{ include: [{
model: sequelize.models.MultimediaFile, model: sequelize.models.MultimediaFile,
as: "multimediaFile", as: "multimediaFile",
order: [['createdAt', 'DESC']], order: [['createdAt', 'DESC']], // <- esto no funciona por ahora en Sequelize
}] }]
}, },
] ]

View File

@ -1,6 +1,6 @@
{ {
"name": "lqdvi-api3", "name": "lqdvi-api3",
"version": "1.3.4", "version": "1.3.5",
"description": "", "description": "",
"author": "Rodax Software", "author": "Rodax Software",
"license": "ISC", "license": "ISC",

5529
yarn.lock

File diff suppressed because it is too large Load Diff