diff --git a/pages/place/_place.vue b/pages/place/_place.vue index dfbbea1e..820b5e94 100644 --- a/pages/place/_place.vue +++ b/pages/place/_place.vue @@ -35,12 +35,12 @@ export default { ...mapState(['settings']), ...mapGetters(['hide_thumbs', 'is_dark']), }, - asyncData({ $axios, params, error }) { + async asyncData({ $axios, params, error }) { try { - const place = params.place - return $axios.$get(`/place/${encodeURIComponent(place)}`) + const events = await $axios.$get(`/place/${encodeURIComponent(params.place)}`) + return events } catch (e) { - error({ statusCode: 400, message: 'Error!' }) + error({ statusCode: 404, message: 'Place not found!' }) } } diff --git a/pages/tag/_tag.vue b/pages/tag/_tag.vue index 1292f9f8..4d95704e 100644 --- a/pages/tag/_tag.vue +++ b/pages/tag/_tag.vue @@ -40,7 +40,7 @@ export default { const events = await $axios.$get(`/tag/${encodeURIComponent(tag)}`) return { events, tag } } catch (e) { - error({ statusCode: 400, message: 'Error!' }) + error({ statusCode: 404, message: 'Tag not found' }) } } diff --git a/server/api/controller/tag.js b/server/api/controller/tag.js index 138a4ae7..9b7681ab 100644 --- a/server/api/controller/tag.js +++ b/server/api/controller/tag.js @@ -1,7 +1,7 @@ const { Tag, Event } = require('../models/models') const uniq = require('lodash/uniq') const log = require('../../log') - +const Sequelize = require('sequelize') const { where, fn, col, Op } = require('sequelize') const exportController = require('./export') @@ -25,14 +25,21 @@ module.exports = { ) }, - // /feed/rss/tag/:tagname - // /feed/ics/tag/:tagname - // /feed/json/tag/:tagname + // /feed/rss/tag/:tag + // /feed/ics/tag/:tag + // /feed/json/tag/:tag // tag/:tag async getEvents (req, res) { const eventController = require('./event') const format = req.params.format || 'json' const tags = req.params.tag + + // check if this tag exists + if(!await Tag.findOne({ where: + Sequelize.where( Sequelize.fn( 'LOWER', Sequelize.col('tag')), + Sequelize.Op.eq, tags.toLocaleLowerCase())})) { + return res.sendStatus(404) + } const events = await eventController._select({ tags: tags.toLocaleLowerCase(), show_recurrent: true, show_multidate: true, start: 0, reverse: true }) switch (format) { case 'rss':