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

View File

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

View File

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

View File

@ -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']