Skip to content
Snippets Groups Projects
routes.js 2.25 KiB
Newer Older
Louis's avatar
Louis committed
const Router = require('koa-router')
const controller = (name, method) => require(`./controllers/${ name }`)[method]
const multer = require('@koa/multer')
Louis's avatar
Louis committed
const AuthServer = require('domain/authentication/AuthServer')

const includes = require('./middleware/parseIncludes')

const upload = multer({ dest: '/tmp/' })

Louis's avatar
Louis committed
const web = new Router()
web.get('/login', ctx => {
	const data = {}
	if (ctx.query.login_state) {
		data.login_state = ctx.query.login_state
	}
	return ctx.render('auth/login', data)
})
web.post('/login', controller('auth', 'login'))

Louis's avatar
Louis committed
web.get('/reset-password', controller('auth', 'resetPassword'))
web.post('/reset-password', controller('auth', 'handleResetPassword'))
Louis's avatar
Louis committed

web.get('/auth/authorize', AuthServer.authorize)
web.post('/auth/authorize', AuthServer.authorize)
Louis's avatar
Louis committed
web.post('/auth/token', AuthServer.token)

Louis's avatar
Louis committed
// --- API ROUTES

Louis's avatar
Louis committed
function mount(api) {
	api.use(require('./middleware/api/errors'))
	api.use(includes)
	api.post('/metrics', controller('api/content', 'postMetric'))
	api.get('/metrics', controller('api/content', 'getWithin'))
Louis's avatar
Louis committed

Louis's avatar
Louis committed
	api.get('/images', controller('api/storage', 'getFiles'))
	api.post('/images', upload.single('featured_image'), controller('api/storage', 'saveFile'))
	api.post('/images/:imageId/feature', controller('api/storage', 'featureImage'))
Louis's avatar
Louis committed
	/** @deprecated */
	api.post('/feature', upload.single('featured_image'), controller('api/storage', 'saveFile'))
Louis's avatar
Louis committed
	api.get('/feed', controller('api/storage', 'feed'))
	api.post('/feed/:fileId/like',controller('api/storage', 'like'))
	api.post('/feed/:fileId/unlike', controller('api/storage', 'unlike'))
Louis's avatar
Louis committed
	api.post('/register', controller('api/auth', 'register'))
	api.post('/login', controller('api/auth', 'login'))
	api.post('/auth/reset-token', controller('api/auth', 'triggerPasswordReset'))
	api.post('/auth/reset-password', controller('api/auth', 'handlePasswordReset'))

Louis's avatar
Louis committed
	api.get('/self', controller('api/user', 'self'))
	api.get('/self/bundles', controller('api/app', 'getBundles'))
Louis's avatar
Louis committed
	api.put('/self/:property', controller('api/user', 'updateOne'))
Louis's avatar
Louis committed

Louis's avatar
Louis committed
	api.post('/feedback', controller('api/feedback', 'send'))
}

const apiRouter = new Router({ prefix: '/api' })
const apiLegacy = new Router({ prefix: '/api/api' })

mount(apiRouter)
mount(apiLegacy)
Louis's avatar
Louis committed

Louis's avatar
Louis committed
module.exports = {
Louis's avatar
Louis committed
	web,
Louis's avatar
Louis committed
	apiRouter,
	apiLegacy,
Louis's avatar
Louis committed
}