2019-04-03 00:25:12 +02:00
|
|
|
const express = require('express')
|
|
|
|
const multer = require('multer')
|
|
|
|
const { fillUser, isAuth, isAdmin } = require('./auth')
|
|
|
|
const eventController = require('./controller/event')
|
|
|
|
const exportController = require('./controller/export')
|
|
|
|
const userController = require('./controller/user')
|
|
|
|
const settingsController = require('./controller/settings')
|
2019-05-30 12:04:14 +02:00
|
|
|
const { SECRET_CONF } = require('../../config')
|
|
|
|
const cookieParser = require('cookie-parser')
|
|
|
|
|
|
|
|
const expressJwt = require('express-jwt')
|
|
|
|
const jwt = expressJwt({
|
|
|
|
secret: SECRET_CONF.secret,
|
|
|
|
credentialsRequired: false,
|
|
|
|
getToken: req => {
|
|
|
|
if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
|
|
|
|
return req.headers.authorization.split(' ')[1];
|
|
|
|
} else if (req.cookies && req.cookies['auth._token.local']) {
|
|
|
|
const tmp = req.cookies['auth._token.local'].split(' ');
|
|
|
|
return tmp[1]
|
|
|
|
}
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
})
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
const storage = require('./storage')({
|
|
|
|
destination: 'uploads/'
|
|
|
|
})
|
|
|
|
|
|
|
|
const upload = multer({ storage })
|
|
|
|
const api = express.Router()
|
2019-05-30 12:04:14 +02:00
|
|
|
api.use(cookieParser())
|
2019-04-26 23:14:43 +02:00
|
|
|
// AUTH
|
|
|
|
api.post('/auth/login', userController.login)
|
|
|
|
api.post('/auth/logout', userController.logout)
|
2019-04-29 00:27:29 +02:00
|
|
|
api.get('/auth/user', jwt, fillUser, userController.current)
|
2019-04-26 23:14:43 +02:00
|
|
|
|
2019-04-03 00:25:12 +02:00
|
|
|
api.post('/user/recover', userController.forgotPassword)
|
|
|
|
api.post('/user/check_recover_code', userController.checkRecoverCode)
|
|
|
|
api.post('/user/recover_password', userController.updatePasswordWithRecoverCode)
|
|
|
|
|
|
|
|
api
|
|
|
|
.route('/user')
|
|
|
|
// register
|
|
|
|
.post(userController.register)
|
|
|
|
// get current user
|
2019-04-26 23:14:43 +02:00
|
|
|
// .get(isAuth, userController.current)
|
2019-04-03 00:25:12 +02:00
|
|
|
// update user (eg. confirm)
|
2019-04-29 00:27:29 +02:00
|
|
|
.put(jwt, isAuth, isAdmin, userController.update)
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
// get all users
|
2019-04-29 00:27:29 +02:00
|
|
|
api.get('/users', jwt, isAuth, isAdmin, userController.getAll)
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
// update a tag (modify color)
|
2019-04-29 00:27:29 +02:00
|
|
|
api.put('/tag', jwt, isAuth, isAdmin, eventController.updateTag)
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
// update a place (modify address..)
|
2019-04-29 00:27:29 +02:00
|
|
|
api.put('/place', jwt, isAuth, isAdmin, eventController.updatePlace)
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
api
|
|
|
|
.route('/user/event')
|
|
|
|
// add event
|
2019-04-29 00:27:29 +02:00
|
|
|
.post(jwt, fillUser, upload.single('image'), userController.addEvent)
|
2019-04-03 00:25:12 +02:00
|
|
|
// update event
|
2019-04-29 00:27:29 +02:00
|
|
|
.put(jwt, isAuth, upload.single('image'), userController.updateEvent)
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
// remove event
|
2019-04-29 00:27:29 +02:00
|
|
|
api.delete('/user/event/:id', jwt, isAuth, userController.delEvent)
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
// get tags/places
|
|
|
|
api.get('/event/meta', eventController.getMeta)
|
|
|
|
|
|
|
|
// get unconfirmed events
|
2019-04-29 00:27:29 +02:00
|
|
|
api.get('/event/unconfirmed', jwt, isAuth, isAdmin, eventController.getUnconfirmed)
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
// add event notification
|
|
|
|
api.post('/event/notification', eventController.addNotification)
|
|
|
|
api.delete('/event/notification/:code', eventController.delNotification)
|
|
|
|
|
|
|
|
api.get('/settings', settingsController.getAdminSettings)
|
|
|
|
api.post('/settings', settingsController.setAdminSetting)
|
|
|
|
|
|
|
|
// get event
|
|
|
|
api.get('/event/:event_id', eventController.get)
|
|
|
|
|
|
|
|
// confirm event
|
2019-04-29 00:27:29 +02:00
|
|
|
api.get('/event/confirm/:event_id', jwt, isAuth, isAdmin, eventController.confirm)
|
|
|
|
api.get('/event/unconfirm/:event_id', jwt, isAuth, isAdmin, eventController.unconfirm)
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
// export events (rss/ics)
|
|
|
|
api.get('/export/:type', exportController.export)
|
|
|
|
|
|
|
|
// get events in this range
|
2019-04-29 00:27:29 +02:00
|
|
|
api.get('/event/:month/:year', eventController.getAll)
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
// mastodon oauth auth
|
2019-05-30 12:04:14 +02:00
|
|
|
api.post('/settings/getauthurl', jwt, isAuth, isAdmin, settingsController.getAuthURL)
|
|
|
|
api.get('/settings/oauth', jwt, isAuth, isAdmin, settingsController.code)
|
2019-04-03 00:25:12 +02:00
|
|
|
|
|
|
|
module.exports = api
|