gancio-upstream/server/api/index.js

109 lines
3.6 KiB
JavaScript
Raw Normal View History

2019-04-03 00:25:12 +02:00
const express = require('express')
const multer = require('multer')
2019-06-06 23:54:32 +02:00
const cookieParser = require('cookie-parser')
const bodyParser = require('body-parser')
const expressJwt = require('express-jwt')
const config = require('config')
2019-06-06 23:54:32 +02:00
2019-04-03 00:25:12 +02:00
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 storage = require('./storage')
2019-04-03 00:25:12 +02:00
const upload = multer({ storage })
const api = express.Router()
2019-05-30 12:04:14 +02:00
api.use(cookieParser())
2019-06-06 23:54:32 +02:00
api.use(bodyParser.urlencoded({ extended: false }))
api.use(bodyParser.json())
2019-06-25 01:05:38 +02:00
// api.use(settingsController.init)
2019-06-06 23:54:32 +02:00
const jwt = expressJwt({
secret: config.secret,
credentialsRequired: false,
getToken: function fromHeaderOrQuerystring (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 [ prefix, token ] = req.cookies['auth._token.local'].split(' ')
if (prefix === 'Bearer') return token
}
return null
}
2019-06-06 23:54:32 +02:00
})
2019-04-26 23:14:43 +02:00
// AUTH
api.post('/auth/login', userController.login)
api.post('/auth/logout', userController.logout)
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)
2019-06-18 14:45:04 +02:00
// register and add users
api.post('/user/register', userController.register)
api.post('/user', jwt, isAuth, isAdmin, userController.create)
// update user (disable/)
api.put('/user', jwt, isAuth, isAdmin, userController.update)
2019-04-03 00:25:12 +02:00
2019-06-18 15:13:13 +02:00
//delete user
api.delete('/user/:id', jwt, isAuth, isAdmin, userController.remove)
//
// api.delete('/user', userController.remove)
2019-04-03 00:25:12 +02:00
// get all users
api.get('/users', jwt, isAuth, isAdmin, userController.getAll)
2019-04-03 00:25:12 +02:00
// update a tag (modify color)
api.put('/tag', jwt, isAuth, isAdmin, eventController.updateTag)
2019-04-03 00:25:12 +02:00
// update a place (modify address..)
api.put('/place', jwt, isAuth, isAdmin, eventController.updatePlace)
2019-04-03 00:25:12 +02:00
2019-06-18 14:45:04 +02:00
// add event
api.post('/user/event', jwt, fillUser, upload.single('image'), userController.addEvent)
// update event
api.put('/user/event', jwt, isAuth, upload.single('image'), userController.updateEvent)
2019-04-03 00:25:12 +02:00
// remove event
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
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.getAllRequest)
api.post('/settings', jwt, fillUser, isAdmin, settingsController.setRequest)
2019-04-03 00:25:12 +02:00
// get event
api.get('/event/:event_id', eventController.get)
// confirm event
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-06-18 14:45:04 +02:00
api.get('/event/:month/:year', eventController.getAll)
// api.get('/event/:month/:year', eventController.getAfter)
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