From ea2d3ea8f138a88421dbae258d447fa8e36dbed5 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Wed, 12 Oct 2022 13:45:33 -0700 Subject: [PATCH] Adjust route structure - Items now accessed through servers/:serverId - Auth middleware blanketly applied on routes - Merge params on routes --- src/server/routes/album-artists.route.ts | 17 +++------- src/server/routes/albums.route.ts | 9 +++--- src/server/routes/artists.route.ts | 9 +++--- src/server/routes/auth.route.ts | 16 ++++----- src/server/routes/index.ts | 41 ++++++++++++++++-------- src/server/routes/servers.route.ts | 30 ++++++----------- src/server/routes/songs.route.ts | 7 ++-- src/server/routes/tasks.route.ts | 6 ++-- src/server/routes/users.route.ts | 9 +++--- 9 files changed, 66 insertions(+), 78 deletions(-) diff --git a/src/server/routes/album-artists.route.ts b/src/server/routes/album-artists.route.ts index e1bfd5d1d..594b13ff3 100644 --- a/src/server/routes/album-artists.route.ts +++ b/src/server/routes/album-artists.route.ts @@ -1,17 +1,8 @@ import express, { Router } from 'express'; -import { albumArtistsController } from '../controllers'; -import { authenticateLocal } from '../middleware'; +import { controller } from '../controllers'; -export const albumArtistsRouter: Router = express.Router(); +export const router: Router = express.Router({ mergeParams: true }); -albumArtistsRouter.get( - '/', - authenticateLocal, - albumArtistsController.getAlbumArtists -); +router.get('/', controller.albumArtists.getAlbumArtists); -albumArtistsRouter.get( - '/:id', - authenticateLocal, - albumArtistsController.getAlbumArtistById -); +router.get('/:id', controller.albumArtists.getAlbumArtistById); diff --git a/src/server/routes/albums.route.ts b/src/server/routes/albums.route.ts index 76c816476..f4220d52d 100644 --- a/src/server/routes/albums.route.ts +++ b/src/server/routes/albums.route.ts @@ -1,9 +1,8 @@ import express, { Router } from 'express'; -import { albumsController } from '../controllers'; -import { authenticateLocal } from '../middleware'; +import { controller } from '../controllers'; -export const albumsRouter: Router = express.Router(); +export const router: Router = express.Router({ mergeParams: true }); -albumsRouter.get('/', authenticateLocal, albumsController.getAlbums); +router.get('/', controller.albums.getAlbumList); -albumsRouter.get('/:id', authenticateLocal, albumsController.getAlbumById); +router.get('/:id', controller.albums.getAlbumDetail); diff --git a/src/server/routes/artists.route.ts b/src/server/routes/artists.route.ts index 9dfa8b32c..f4bd5a8be 100644 --- a/src/server/routes/artists.route.ts +++ b/src/server/routes/artists.route.ts @@ -1,9 +1,8 @@ import express, { Router } from 'express'; -import { artistsController } from '../controllers'; -import { authenticateLocal } from '../middleware'; +import { controller } from '../controllers'; -export const artistsRouter: Router = express.Router(); +export const router: Router = express.Router({ mergeParams: true }); -artistsRouter.get('/', authenticateLocal, artistsController.getArtists); +router.get('/', controller.artists.getArtists); -artistsRouter.get('/:id', authenticateLocal, artistsController.getArtistById); +router.get('/:id', controller.artists.getArtistById); diff --git a/src/server/routes/auth.route.ts b/src/server/routes/auth.route.ts index ce7dff392..90013e47e 100644 --- a/src/server/routes/auth.route.ts +++ b/src/server/routes/auth.route.ts @@ -1,16 +1,16 @@ import express, { Router } from 'express'; import passport from 'passport'; -import { authController } from '../controllers'; -import { authenticateLocal } from '../middleware'; +import { controller } from '../controllers'; +import { authenticate } from '../middleware'; -export const authRouter: Router = express.Router(); +export const router: Router = express.Router({ mergeParams: true }); -authRouter.post('/login', passport.authenticate('local'), authController.login); +router.post('/login', passport.authenticate('local'), controller.auth.login); -authRouter.post('/register', authController.register); +router.post('/register', controller.auth.register); -authRouter.post('/logout', authenticateLocal, authController.logout); +router.post('/logout', authenticate, controller.auth.logout); -authRouter.post('/refresh', authController.refresh); +router.post('/refresh', controller.auth.refresh); -authRouter.get('/ping', authController.ping); +router.get('/ping', controller.auth.ping); diff --git a/src/server/routes/index.ts b/src/server/routes/index.ts index 5ac05c70a..2c3aa08d3 100644 --- a/src/server/routes/index.ts +++ b/src/server/routes/index.ts @@ -1,20 +1,33 @@ import { Router } from 'express'; -import { albumArtistsRouter } from './album-artists.route'; -import { albumsRouter } from './albums.route'; -import { artistsRouter } from './artists.route'; -import { authRouter } from './auth.route'; -import { serversRouter } from './servers.route'; -import { songsRouter } from './songs.route'; -import { tasksRouter } from './tasks.route'; -import { usersRouter } from './users.route'; +import { helpers } from '../helpers'; +import { authenticate } from '../middleware'; +import { router as albumArtistsRouter } from './album-artists.route'; +import { router as albumsRouter } from './albums.route'; +import { router as artistsRouter } from './artists.route'; +import { router as authRouter } from './auth.route'; +import { router as serversRouter } from './servers.route'; +import { router as songsRouter } from './songs.route'; +import { router as tasksRouter } from './tasks.route'; +import { router as usersRouter } from './users.route'; -export const routes = Router(); +export const routes = Router({ mergeParams: true }); routes.use('/api/auth', authRouter); -routes.use('/api/servers', serversRouter); + +routes.use(authenticate, (_req, _res, next) => { + next(); +}); + routes.use('/api/tasks', tasksRouter); routes.use('/api/users', usersRouter); -routes.use('/api/album-artists', albumArtistsRouter); -routes.use('/api/artists', artistsRouter); -routes.use('/api/albums', albumsRouter); -routes.use('/api/songs', songsRouter); +routes.use('/api/servers', serversRouter); + +routes.param('serverId', (req, _res, next, serverId) => { + helpers.shared.checkServerPermissions(req.auth, { serverId }); + next(); +}); + +routes.use('/api/servers/:serverId/album-artists', albumArtistsRouter); +routes.use('/api/servers/:serverId/artists', artistsRouter); +routes.use('/api/servers/:serverId/albums', albumsRouter); +routes.use('/api/servers/:serverId/songs', songsRouter); diff --git a/src/server/routes/servers.route.ts b/src/server/routes/servers.route.ts index c1e7f4424..d7ebdaef4 100644 --- a/src/server/routes/servers.route.ts +++ b/src/server/routes/servers.route.ts @@ -1,29 +1,17 @@ import express, { Router } from 'express'; -import { serversController } from '../controllers'; -import { authenticateAdmin, authenticateLocal } from '../middleware'; +import { controller } from '../controllers'; +import { authenticateAdmin } from '../middleware'; -export const serversRouter: Router = express.Router(); +export const router: Router = express.Router({ mergeParams: true }); -serversRouter.get('/', authenticateLocal, serversController.getServers); +router.get('/', controller.servers.getServerList); -serversRouter.get('/:id', authenticateLocal, serversController.getServerById); +router.post('/', authenticateAdmin, controller.servers.createServer); -serversRouter.get( - '/:id/refresh', - authenticateAdmin, - serversController.refreshServer -); +router.get('/:id', controller.servers.getServerDetail); -serversRouter.get( - '/:id/folder', - authenticateAdmin, - serversController.getFolder -); +router.get('/:id/refresh', authenticateAdmin, controller.servers.refreshServer); -serversRouter.post('/', authenticateAdmin, serversController.createServer); +router.get('/:id/folder', authenticateAdmin, controller.servers.getFolder); -serversRouter.post( - '/:id/scan', - authenticateAdmin, - serversController.scanServer -); +router.post('/:id/scan', authenticateAdmin, controller.servers.scanServer); diff --git a/src/server/routes/songs.route.ts b/src/server/routes/songs.route.ts index 6a55cdb9e..948d496d0 100644 --- a/src/server/routes/songs.route.ts +++ b/src/server/routes/songs.route.ts @@ -1,7 +1,6 @@ import express, { Router } from 'express'; -import { songsController } from '../controllers/songs.controller'; -import { authenticateLocal } from '../middleware'; +import { controller } from '../controllers'; -export const songsRouter: Router = express.Router(); +export const router: Router = express.Router({ mergeParams: true }); -songsRouter.get('/', authenticateLocal, songsController.getSongs); +router.get('/', controller.songs.getSongs); diff --git a/src/server/routes/tasks.route.ts b/src/server/routes/tasks.route.ts index 0456bd914..f3cdaca0b 100644 --- a/src/server/routes/tasks.route.ts +++ b/src/server/routes/tasks.route.ts @@ -1,11 +1,11 @@ import express, { Router } from 'express'; -export const tasksRouter: Router = express.Router(); +export const router: Router = express.Router({ mergeParams: true }); -tasksRouter.post('/scan', async (_req, res) => { +router.post('/scan', async (_req, res) => { return res.status(200); }); -tasksRouter.post('/', async (_req, res) => { +router.post('/', async (_req, res) => { return res.status(200).json({}); }); diff --git a/src/server/routes/users.route.ts b/src/server/routes/users.route.ts index 9bbc5af42..3ccf001bb 100644 --- a/src/server/routes/users.route.ts +++ b/src/server/routes/users.route.ts @@ -1,9 +1,8 @@ import express, { Router } from 'express'; -import { usersController } from '../controllers'; -import { authenticateLocal } from '../middleware'; +import { controller } from '../controllers'; -export const usersRouter: Router = express.Router(); +export const router: Router = express.Router({ mergeParams: true }); -usersRouter.get('/', authenticateLocal, usersController.getUsers); +router.get('/', controller.users.getUsers); -usersRouter.get('/:id', authenticateLocal, usersController.getUser); +router.get('/:id', controller.users.getUser);