tracman-server/config/routes/map.js

73 lines
2.0 KiB
JavaScript
Raw Normal View History

2017-12-12 17:40:07 -07:00
'use strict'
2017-12-12 17:40:07 -07:00
const router = require('express').Router()
const mw = require('../middleware.js')
const env = require('../env/env.js')
2018-03-04 13:39:45 -07:00
const sanitize = require('mongo-sanitize')
2017-12-12 17:40:07 -07:00
const User = require('../models.js').user
2017-04-01 11:03:05 -06:00
// Redirect to real slug
2017-12-12 17:40:07 -07:00
router.get('/', mw.ensureAuth, (req, res) => {
res.redirect(`/map/${req.user.slug}`)
2017-12-12 17:40:07 -07:00
})
2016-05-31 21:54:21 -06:00
2017-06-27 11:36:46 -06:00
// Demo
2017-12-12 17:40:07 -07:00
router.get('/demo', (req, res, next) => {
res.render('map', {
active: 'demo',
mapuser: {
_id: 'demo',
name: 'Demo',
last: {
lat: 40.1165853,
lon: -87.5417312,
dir: 249.0,
spd: 19.015747
},
settings: {
2017-12-13 11:39:05 -07:00
marker: 'red',
2017-12-12 17:40:07 -07:00
showAlt: false,
showTemp: false,
showSpeed: false,
showScale: false,
showStreetview: true,
defaultZoom: 13,
defaultMap: 'road',
units: 'standard'
}
},
mapKey: env.googleMapsAPI,
2017-12-12 17:40:07 -07:00
user: req.user,
noFooter: '1',
noHeader: (req.query.noheader) ? req.query.noheader.match(/\d/)[0] : 0,
disp: (req.query.disp) ? req.query.disp.match(/\d/)[0] : 2, // 0=map, 1=streetview, 2=both
newuserurl: (req.query.new) ? env.url + '/map/' + req.params.slug : ''
})
})
2017-06-27 11:36:46 -06:00
2016-05-31 21:54:21 -06:00
// Show map
router.get('/:slug?', async (req, res, next) => {
try {
2018-03-04 13:39:45 -07:00
if (req.params.slug != sanitize(req.params.slug)) {
throw new Error(`Possible injection attempt with slug: ${req.params.slug}`)
} else {
let map_user = await User.findOne({slug: req.params.slug})
if (!map_user) next() // 404
else {
res.render('map', {
active: (req.user && req.user.id===map_user.id)?'map':'',
2018-03-04 13:39:45 -07:00
mapuser: map_user,
mapKey: env.googleMapsAPI,
2018-03-04 13:39:45 -07:00
user: req.user,
noFooter: '1',
noHeader: (req.query.noheader) ? req.query.noheader.match(/\d/)[0] : 0,
disp: (req.query.disp) ? req.query.disp.match(/\d/)[0] : 2, // 0=map, 1=streetview, 2=both
newuserurl: (req.query.new) ? env.url + '/map/' + req.params.slug : ''
})
}
2017-12-12 17:40:07 -07:00
}
} catch (err) { mw.throwErr(err, req) }
2017-12-12 17:40:07 -07:00
})
2016-05-31 21:54:21 -06:00
2017-12-12 17:40:07 -07:00
module.exports = router