Files
feishin/server/routes/servers.route.ts
T
2022-11-15 13:31:11 -08:00

164 lines
4.1 KiB
TypeScript

import express, { Router } from 'express';
import { controller } from '@controllers/index';
import { authenticateAdmin } from '@middleware/authenticate-admin';
import { authenticateServerAdmin } from '@middleware/authenticate-server-admin';
import { authenticateServerEditor } from '@middleware/authenticate-server-editor';
import { authenticateServerViewer } from '@middleware/authenticate-server-viewer';
import { service } from '@services/index';
import { validateRequest, validation } from '@validations/index';
export const router: Router = express.Router({ mergeParams: true });
router
.route('/')
.get(
validateRequest(validation.servers.list),
controller.servers.getServerList
)
.post(
authenticateAdmin,
validateRequest(validation.servers.create),
controller.servers.createServer
);
router.route('/map').get(controller.servers.getServerListMap);
router
.route('/:serverId')
.get(
validateRequest(validation.servers.detail),
controller.servers.getServerDetail
)
.patch(
authenticateServerAdmin,
validateRequest(validation.servers.update),
controller.servers.updateServer
)
.delete(
authenticateAdmin,
validateRequest(validation.servers.deleteServer),
controller.servers.deleteServer
);
router
.route('/:serverId/refresh')
.get(
authenticateServerEditor,
validateRequest(validation.servers.refresh),
controller.servers.refreshServer
);
router
.route('/:serverId/scan')
.post(
authenticateServerAdmin,
validateRequest(validation.servers.scan),
controller.servers.quickScanServer
);
router
.route('/:serverId/full-scan')
.post(
authenticateServerAdmin,
validateRequest(validation.servers.scan),
controller.servers.fullScanServer
);
router
.route('/:serverId/url')
.post(
authenticateServerEditor,
validateRequest(validation.servers.createUrl),
controller.servers.createServerUrl
);
router.param('urlId', async (_req, _res, next, urlId) => {
await service.servers.findUrlById({ id: urlId });
next();
});
router
.route('/:serverId/url/:urlId')
.delete(
authenticateServerEditor,
validateRequest(validation.servers.deleteUrl),
controller.servers.deleteServerUrl
);
router
.route('/:serverId/url/:urlId/enable')
.post(
authenticateServerViewer,
validateRequest(validation.servers.enableUrl),
controller.servers.enableServerUrl
);
router
.route('/:serverId/url/:urlId/disable')
.post(
authenticateServerViewer,
validateRequest(validation.servers.disableUrl),
controller.servers.disableServerUrl
);
router
.route('/:serverId/permissions')
.post(
authenticateServerAdmin,
validateRequest(validation.servers.addServerPermission),
controller.servers.addServerPermission
);
router
.route('/:serverId/permissions/:permissionId')
.patch(
authenticateServerAdmin,
validateRequest(validation.servers.updateServerPermission),
controller.servers.updateServerPermission
)
.delete(
authenticateServerAdmin,
validateRequest(validation.servers.deleteServerPermission),
controller.servers.deleteServerPermission
);
router.param('folderId', async (_req, _res, next, folderId) => {
await service.servers.findFolderById({ id: folderId });
next();
});
router
.route('/:serverId/folder/:folderId')
.delete(
authenticateServerAdmin,
validateRequest(validation.servers.deleteFolder),
controller.servers.deleteServerFolder
);
router
.route('/:serverId/folder/:folderId/enable')
.post(
authenticateServerAdmin,
validateRequest(validation.servers.enableFolder),
controller.servers.enableServerFolder
);
router
.route('/:serverId/folder/:folderId/disable')
.post(
authenticateServerAdmin,
validateRequest(validation.servers.disableFolder),
controller.servers.disableServerFolder
);
router
.route('/:serverId/folder/:folderId/permissions')
.post(authenticateServerAdmin, controller.servers.addServerFolderPermission);
router
.route('/:serverId/folder/:folderId/permissions/:folderPermissionId')
.delete(
authenticateServerAdmin,
controller.servers.deleteServerFolderPermission
);