diff --git a/middlewares/accessValidator.js b/middlewares/accessValidator.js index 4e95037..0f93f4e 100644 --- a/middlewares/accessValidator.js +++ b/middlewares/accessValidator.js @@ -7,6 +7,15 @@ 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 isOptionalUser = (req, res, next) => { + const token = ((req && req.headers && req.headers['x-access-token']) ? req.headers['x-access-token'] : null); + if (token) { + isLoggedUser(req, res, next) + } else { + next(); + } +} + const isAdministratorUser = compose([isLoggedUser, (req, res, next) => { const user = req.user; @@ -22,5 +31,6 @@ module.exports = { isRegisteredUserEmail, isRegisteredUserPhone, isLoggedUser, + isOptionalUser, isAdministratorUser }; \ No newline at end of file diff --git a/modules/events/event.routes.js b/modules/events/event.routes.js index 4326306..6bc51c0 100644 --- a/modules/events/event.routes.js +++ b/modules/events/event.routes.js @@ -1,6 +1,6 @@ const routes = require('express').Router(); -const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator'); +const { isAdministratorUser, isLoggedUser, isOptionalUser } = require('../../middlewares/accessValidator'); const SchemaValidator = require('../../middlewares/schemaValidator'); const { cacheSuccesses } = require('../../middlewares/cache'); @@ -22,7 +22,7 @@ const generalInvalidFields = [ ]; routes.get('/events', - isLoggedUser, + isOptionalUser, FieldMiddleware.middleware({ invalidFields: generalInvalidFields }), @@ -41,7 +41,7 @@ routes.get('/events', ); routes.get('/events/cities', - isLoggedUser, + isOptionalUser, cacheSuccesses('24 hours'), eventController.find({ scopes: ['CitiesOfEvents'] @@ -50,23 +50,26 @@ routes.get('/events/cities', routes.get('/events/next', - isLoggedUser, + isOptionalUser, FieldMiddleware.middleware({ invalidFields: generalInvalidFields }), PaginateMiddleware.middleware(), SortMiddleware.middleware({ default: "init_available_date" }), (req, res, next) => { - // console.log(moment().add(1, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss')); - return eventController.find({ - scopes: ['defaultScope', 'next', 'includeVenue', 'includeMultimedias', { method: ['includeInscription', req.user.id] }], - })(req, res, next) + const isLogged = req.user && req.user.id; + const scopes = ['defaultScope', 'next', 'includeVenue', 'includeMultimedias']; + if (isLogged) { + scopes.push({ method: ['includeInscription', req.user.id] }); + } + // console.log(moment().add(1, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss')); + return eventController.find({ scopes })(req, res, next) } ); routes.get('/events/past', - isLoggedUser, + isOptionalUser, cacheSuccesses('1 minute'), FieldMiddleware.middleware({ invalidFields: generalInvalidFields @@ -79,7 +82,7 @@ routes.get('/events/past', ); routes.get('/events/yesterday', - isLoggedUser, + isOptionalUser, FieldMiddleware.middleware({ invalidFields: generalInvalidFields }), @@ -92,7 +95,7 @@ routes.get('/events/yesterday', routes.get('/events/today', - isLoggedUser, + isOptionalUser, FieldMiddleware.middleware({ invalidFields: generalInvalidFields }), @@ -127,7 +130,7 @@ routes.get('/events/today', routes.get('/events/tomorrow', - isLoggedUser, + isOptionalUser, FieldMiddleware.middleware({ invalidFields: generalInvalidFields }), @@ -139,7 +142,7 @@ routes.get('/events/tomorrow', ); routes.get('/events/current', - isLoggedUser, + isOptionalUser, FieldMiddleware.middleware({ invalidFields: generalInvalidFields }), @@ -152,7 +155,7 @@ routes.get('/events/current', // Eventos destacados routes.get('/events/featured', - isLoggedUser, + isOptionalUser, cacheSuccesses('1 minute'), FieldMiddleware.middleware({ invalidFields: generalInvalidFields @@ -165,21 +168,25 @@ routes.get('/events/featured', ); routes.get('/events/:id', - isLoggedUser, + isOptionalUser, FieldMiddleware.middleware({ invalidFields: generalInvalidFields }), (req, res, next) => { - return eventController.findOne({ - scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails', 'includeComments', { method: ['includeInscription', req.user.id] }] - })(req, res, next) + const isLogged = req.user && req.user.id; + const scopes = ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails', 'includeComments']; + if (isLogged) { + scopes.push({ method: ['includeInscription', req.user.id] }); + } + + return eventController.findOne({scopes})(req, res, next) } ); // Comentarios routes.get('/events/:id/comments', - isLoggedUser, + isOptionalUser, (req, res, next) => { req.params.association = 'Comments'; next(); @@ -190,7 +197,7 @@ routes.get('/events/:id/comments', // Multimedias routes.get('/events/:id/multimedias', - isLoggedUser, + isOptionalUser, (req, res, next) => { req.params.association = 'Multimedias'; next(); diff --git a/modules/locations/location.routes.js b/modules/locations/location.routes.js index 5bdf0f5..b723ce4 100644 --- a/modules/locations/location.routes.js +++ b/modules/locations/location.routes.js @@ -1,8 +1,7 @@ const routes = require('express').Router(); const { cacheSuccesses } = require('../../middlewares/cache'); -const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator'); -const SchemaValidator = require('../../middlewares/schemaValidator'); +const { isOptionalUser, isLoggedUser } = require('../../middlewares/accessValidator'); //const PaginateMiddleware = require('../../middlewares/paginate'); //const FieldMiddleware = require('../../middlewares/fields'); @@ -10,7 +9,7 @@ const SortMiddleware = require('../../middlewares/sort'); const locationController = require('./location.controller'); routes.get('/locations', - isLoggedUser, + isOptionalUser, cacheSuccesses('24 hours'), SortMiddleware.middleware({ default: "city" }), locationController.find({ @@ -19,7 +18,7 @@ routes.get('/locations', ); routes.get('/locations/:id', - isLoggedUser, + isOptionalUser, cacheSuccesses('24 hours'), //SortMiddleware.middleware({ default: "city" }), locationController.findOne({ diff --git a/modules/speakers/speaker.routes.js b/modules/speakers/speaker.routes.js index 2bed160..2da16a5 100644 --- a/modules/speakers/speaker.routes.js +++ b/modules/speakers/speaker.routes.js @@ -1,7 +1,6 @@ const routes = require('express').Router(); -const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator'); -const SchemaValidator = require('../../middlewares/schemaValidator'); +const { isAdministratorUser, isLoggedUser, isOptionalUser } = require('../../middlewares/accessValidator'); const { cacheSuccesses } = require('../../middlewares/cache'); const PaginateMiddleware = require('../../middlewares/paginate'); @@ -17,7 +16,7 @@ const generalInvalidFields = [ // Todos los ponentes routes.get('/speakers', - isLoggedUser, + isOptionalUser, cacheSuccesses('24 hours'), FieldMiddleware.middleware({ invalidFields: generalInvalidFields @@ -31,7 +30,7 @@ routes.get('/speakers', // Ponentes destacados routes.get('/speakers/featured', - isLoggedUser, + isOptionalUser, cacheSuccesses('1 minute'), FieldMiddleware.middleware({ invalidFields: generalInvalidFields @@ -45,7 +44,7 @@ routes.get('/speakers/featured', // Ponentes más recientes routes.get('/speakers/last', - isLoggedUser, + isOptionalUser, cacheSuccesses('1 minute'), FieldMiddleware.middleware({ invalidFields: ['userId'] @@ -59,7 +58,7 @@ routes.get('/speakers/last', // Un ponente routes.get('/speakers/:id', - isLoggedUser, + isOptionalUser, cacheSuccesses('24 hours'), FieldMiddleware.middleware({ invalidFields: generalInvalidFields @@ -72,7 +71,7 @@ routes.get('/speakers/:id', // Dar ponentes similares a uno dado routes.get('/speakers/:id/similar', - isLoggedUser, + isOptionalUser, cacheSuccesses('24 hours'), /*FieldMiddleware.middleware({ invalidFields: ['createdAt']