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
passport.use(
"jwt",

View File

@ -115,7 +115,11 @@ module.exports = {
return _sign(payload, signOptions);
},
verify: (token) => {
return _verify(token, signOptions);
verify: (tokenOrKey) => {
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 isRegisteredUserPhone = passport.authenticate('local-phone', { session: false });
const isLoggedUser = passport.authenticate('jwt', { session: false });
const isAPIKeyUser = passport.authenticate('api-key', { session: false });
const isOptionalUser = (req, res, next) => {
const token = ((req && req.headers && req.headers['x-access-token']) ? req.headers['x-access-token'] : null);
if (token) {
@ -29,8 +31,9 @@ const isAdministratorUser = compose([isLoggedUser,
module.exports = {
isRegisteredUserEmail,
isRegisteredUserPhone,
isRegisteredUserPhone,
isLoggedUser,
isOptionalUser,
isAdministratorUser
isAdministratorUser,
isAPIKeyUser
};

View File

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

View File

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

View File

@ -19,7 +19,7 @@ module.exports = function (sequelize, DataTypes) {
},
slogan: {
type: DataTypes.STRING,
},
},
twitter: {
type: DataTypes.STRING,
},
@ -58,15 +58,15 @@ module.exports = function (sequelize, DataTypes) {
defaultScope: {
include: [{
model: sequelize.models.SpeakerType,
model: sequelize.models.SpeakerType,
as: 'type'
},
/* {
model: sequelize.models.Value,
as: 'values',
required: false,
},
*/
/* {
model: sequelize.models.Value,
as: 'values',
required: false,
},
*/
]
},
});
@ -82,10 +82,10 @@ module.exports = function (sequelize, DataTypes) {
});
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 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 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
Speaker.Multimedias = Speaker.hasMany(models.Multimedia, {
foreignKey: 'entityId',
as: { singular: 'multimedia', plural: 'multimedias' },
@ -126,7 +126,7 @@ module.exports = function (sequelize, DataTypes) {
include: [{
model: sequelize.models.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",
"version": "1.3.4",
"version": "1.3.5",
"description": "",
"author": "Rodax Software",
"license": "ISC",

5529
yarn.lock

File diff suppressed because it is too large Load Diff