#22 -> Poder acceder a la aplicación sin registro.

/events
/events/cities
/events/next
/events/past
/events/yesterday
/events/today
/events/tomorrow
/events/current
/events/featured
/events/:id
/events/:id/comments
/events/:id/multimedias
/locations
/locations/:id
/speakers
/speakers/featured
/speakers/last
/speakers/:id
/speakers/:id/similar
This commit is contained in:
David Arranz 2022-02-08 17:33:23 +01:00
parent a84ae23257
commit 0e4489c72f
4 changed files with 46 additions and 31 deletions

View File

@ -7,6 +7,15 @@ 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 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, const isAdministratorUser = compose([isLoggedUser,
(req, res, next) => { (req, res, next) => {
const user = req.user; const user = req.user;
@ -22,5 +31,6 @@ module.exports = {
isRegisteredUserEmail, isRegisteredUserEmail,
isRegisteredUserPhone, isRegisteredUserPhone,
isLoggedUser, isLoggedUser,
isOptionalUser,
isAdministratorUser isAdministratorUser
}; };

View File

@ -1,6 +1,6 @@
const routes = require('express').Router(); const routes = require('express').Router();
const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator'); const { isAdministratorUser, isLoggedUser, isOptionalUser } = require('../../middlewares/accessValidator');
const SchemaValidator = require('../../middlewares/schemaValidator'); const SchemaValidator = require('../../middlewares/schemaValidator');
const { cacheSuccesses } = require('../../middlewares/cache'); const { cacheSuccesses } = require('../../middlewares/cache');
@ -22,7 +22,7 @@ const generalInvalidFields = [
]; ];
routes.get('/events', routes.get('/events',
isLoggedUser, isOptionalUser,
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
}), }),
@ -41,7 +41,7 @@ routes.get('/events',
); );
routes.get('/events/cities', routes.get('/events/cities',
isLoggedUser, isOptionalUser,
cacheSuccesses('24 hours'), cacheSuccesses('24 hours'),
eventController.find({ eventController.find({
scopes: ['CitiesOfEvents'] scopes: ['CitiesOfEvents']
@ -50,23 +50,26 @@ routes.get('/events/cities',
routes.get('/events/next', routes.get('/events/next',
isLoggedUser, isOptionalUser,
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
}), }),
PaginateMiddleware.middleware(), PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "init_available_date" }), SortMiddleware.middleware({ default: "init_available_date" }),
(req, res, next) => { (req, res, next) => {
// console.log(moment().add(1, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss')); const isLogged = req.user && req.user.id;
return eventController.find({ const scopes = ['defaultScope', 'next', 'includeVenue', 'includeMultimedias'];
scopes: ['defaultScope', 'next', 'includeVenue', 'includeMultimedias', { method: ['includeInscription', req.user.id] }], if (isLogged) {
})(req, res, next) 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', routes.get('/events/past',
isLoggedUser, isOptionalUser,
cacheSuccesses('1 minute'), cacheSuccesses('1 minute'),
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
@ -79,7 +82,7 @@ routes.get('/events/past',
); );
routes.get('/events/yesterday', routes.get('/events/yesterday',
isLoggedUser, isOptionalUser,
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
}), }),
@ -92,7 +95,7 @@ routes.get('/events/yesterday',
routes.get('/events/today', routes.get('/events/today',
isLoggedUser, isOptionalUser,
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
}), }),
@ -127,7 +130,7 @@ routes.get('/events/today',
routes.get('/events/tomorrow', routes.get('/events/tomorrow',
isLoggedUser, isOptionalUser,
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
}), }),
@ -139,7 +142,7 @@ routes.get('/events/tomorrow',
); );
routes.get('/events/current', routes.get('/events/current',
isLoggedUser, isOptionalUser,
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
}), }),
@ -152,7 +155,7 @@ routes.get('/events/current',
// Eventos destacados // Eventos destacados
routes.get('/events/featured', routes.get('/events/featured',
isLoggedUser, isOptionalUser,
cacheSuccesses('1 minute'), cacheSuccesses('1 minute'),
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
@ -165,21 +168,25 @@ routes.get('/events/featured',
); );
routes.get('/events/:id', routes.get('/events/:id',
isLoggedUser, isOptionalUser,
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
}), }),
(req, res, next) => { (req, res, next) => {
return eventController.findOne({ const isLogged = req.user && req.user.id;
scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails', 'includeComments', { method: ['includeInscription', req.user.id] }] const scopes = ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails', 'includeComments'];
})(req, res, next) if (isLogged) {
scopes.push({ method: ['includeInscription', req.user.id] });
}
return eventController.findOne({scopes})(req, res, next)
} }
); );
// Comentarios // Comentarios
routes.get('/events/:id/comments', routes.get('/events/:id/comments',
isLoggedUser, isOptionalUser,
(req, res, next) => { (req, res, next) => {
req.params.association = 'Comments'; req.params.association = 'Comments';
next(); next();
@ -190,7 +197,7 @@ routes.get('/events/:id/comments',
// Multimedias // Multimedias
routes.get('/events/:id/multimedias', routes.get('/events/:id/multimedias',
isLoggedUser, isOptionalUser,
(req, res, next) => { (req, res, next) => {
req.params.association = 'Multimedias'; req.params.association = 'Multimedias';
next(); next();

View File

@ -1,8 +1,7 @@
const routes = require('express').Router(); const routes = require('express').Router();
const { cacheSuccesses } = require('../../middlewares/cache'); const { cacheSuccesses } = require('../../middlewares/cache');
const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator'); const { isOptionalUser, isLoggedUser } = require('../../middlewares/accessValidator');
const SchemaValidator = require('../../middlewares/schemaValidator');
//const PaginateMiddleware = require('../../middlewares/paginate'); //const PaginateMiddleware = require('../../middlewares/paginate');
//const FieldMiddleware = require('../../middlewares/fields'); //const FieldMiddleware = require('../../middlewares/fields');
@ -10,7 +9,7 @@ const SortMiddleware = require('../../middlewares/sort');
const locationController = require('./location.controller'); const locationController = require('./location.controller');
routes.get('/locations', routes.get('/locations',
isLoggedUser, isOptionalUser,
cacheSuccesses('24 hours'), cacheSuccesses('24 hours'),
SortMiddleware.middleware({ default: "city" }), SortMiddleware.middleware({ default: "city" }),
locationController.find({ locationController.find({
@ -19,7 +18,7 @@ routes.get('/locations',
); );
routes.get('/locations/:id', routes.get('/locations/:id',
isLoggedUser, isOptionalUser,
cacheSuccesses('24 hours'), cacheSuccesses('24 hours'),
//SortMiddleware.middleware({ default: "city" }), //SortMiddleware.middleware({ default: "city" }),
locationController.findOne({ locationController.findOne({

View File

@ -1,7 +1,6 @@
const routes = require('express').Router(); 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'); const { cacheSuccesses } = require('../../middlewares/cache');
const PaginateMiddleware = require('../../middlewares/paginate'); const PaginateMiddleware = require('../../middlewares/paginate');
@ -17,7 +16,7 @@ const generalInvalidFields = [
// Todos los ponentes // Todos los ponentes
routes.get('/speakers', routes.get('/speakers',
isLoggedUser, isOptionalUser,
cacheSuccesses('24 hours'), cacheSuccesses('24 hours'),
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
@ -31,7 +30,7 @@ routes.get('/speakers',
// Ponentes destacados // Ponentes destacados
routes.get('/speakers/featured', routes.get('/speakers/featured',
isLoggedUser, isOptionalUser,
cacheSuccesses('1 minute'), cacheSuccesses('1 minute'),
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
@ -45,7 +44,7 @@ routes.get('/speakers/featured',
// Ponentes más recientes // Ponentes más recientes
routes.get('/speakers/last', routes.get('/speakers/last',
isLoggedUser, isOptionalUser,
cacheSuccesses('1 minute'), cacheSuccesses('1 minute'),
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: ['userId'] invalidFields: ['userId']
@ -59,7 +58,7 @@ routes.get('/speakers/last',
// Un ponente // Un ponente
routes.get('/speakers/:id', routes.get('/speakers/:id',
isLoggedUser, isOptionalUser,
cacheSuccesses('24 hours'), cacheSuccesses('24 hours'),
FieldMiddleware.middleware({ FieldMiddleware.middleware({
invalidFields: generalInvalidFields invalidFields: generalInvalidFields
@ -72,7 +71,7 @@ routes.get('/speakers/:id',
// Dar ponentes similares a uno dado // Dar ponentes similares a uno dado
routes.get('/speakers/:id/similar', routes.get('/speakers/:id/similar',
isLoggedUser, isOptionalUser,
cacheSuccesses('24 hours'), cacheSuccesses('24 hours'),
/*FieldMiddleware.middleware({ /*FieldMiddleware.middleware({
invalidFields: ['createdAt'] invalidFields: ['createdAt']