Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- module.exports = function (app, permissions, storageClient) {
- let Router = require('koa-router')
- /**
- * Controllers
- */
- , userAuthorizationController = require('../api/controllers/userAuthorization')
- , accountAuthorizationController = require('../api/controllers/accountAuthorization')
- , teamController = require('../api/controllers/team')
- , accountController = require('../api/controllers/account')
- , storageController = require('../api/controllers/storage')
- , adminController = require('../api/controllers/admin')
- , depotController = require('../api/controllers/depot')
- , userController = require('../api/controllers/user')
- , projectController = require('../api/controllers/project')
- /**
- * Services
- */
- , authorizeUser = require('../api/services/authorizeUser')
- , fetchAccount = require('../api/services/fetchAccount')
- , fetchTeam = require('../api/services/fetchTeam')
- , fetchProject = require('../api/services/fetchProject')
- , fetchTeamContext = require('../api/services/fetchTeamContext')
- , createUser = require('../api/services/createAccountOwner')
- , inviteUser = require('../api/services/inviteUser')
- , updateToken = require('../api/services/updateToken');
- /**
- * Create routes
- */
- let publicRoute = new Router();
- let adminRoute = new Router();
- let userRoute = new Router();
- let accountRoute = new Router();
- let storageRoute = new Router();
- let projectRoute = new Router();
- let teamRoute = new Router();
- let depotRoute = new Router();
- /**
- * Public routes
- */
- publicRoute.post('/login', userAuthorizationController.login);
- publicRoute.post('/account', createUser(), accountAuthorizationController.create);
- /**
- * Storage middleware
- */
- storageRoute.use(authorizeUser());
- /**
- * Storage routes
- */
- storageRoute.get('/s3/download/:filePath', storageController.download(storageClient));
- storageRoute.get('/s3/sign', storageController.signUrl(storageClient));
- /**
- * Depot Middleware
- */
- depotRoute.use(authorizeUser());
- /**
- * Depot Routes
- */
- depotRoute.post('/depot/:depotId/folder/:folderId/file/:fileName', depotController.addDownload);
- depotRoute.post('/depot/:depotId/folder/:folderId/post/', depotController.createPost);
- depotRoute.post('/depot/:depotId/folder/:folderId/post/:postId', depotController.editPost);
- depotRoute.get('/depot/:depotId/folder/:folderId', depotController.getFolder);
- depotRoute.post('/depot/:depotId/folder', depotController.createFolder);
- /**
- * Admin Middleware
- */
- adminRoute.use(authorizeUser());
- /**
- * Admin routes
- */
- adminRoute.get('/admin/account', permissions.can('manage_channels'), adminController.getAccounts);
- adminRoute.get('/admin/account/:accountId/channel', permissions.can('manage_channels'), adminController.getAccountChannels);
- adminRoute.put('/admin/account/:accountId/channel/:channelId', permissions.can('manage_channels'), adminController.addChannel);
- adminRoute.delete('/admin/account/:accountId/channel/:channelId', permissions.can('manage_channels'), adminController.removeChannel);
- adminRoute.post('/admin/channel/', permissions.can('manage_channels'), adminController.createChannel);
- adminRoute.get('/admin/channel/', permissions.can('manage_channels'), adminController.getChannels);
- /**
- * Account Middleware
- */
- accountRoute.use(authorizeUser());
- accountRoute.use(fetchAccount());
- accountRoute.use(updateToken());
- /**
- * Account routes
- */
- accountRoute.get('/account', permissions.can('manage_account'), accountController.getAccount);
- accountRoute.post('/account/team', permissions.can('manage_account'), accountController.createTeam);
- accountRoute.get('/account/team', permissions.can('manage_account'), accountController.getAll('teams'));
- accountRoute.delete('/account/team/:teamId', permissions.can('manage_account'), accountController.deleteTeam);
- accountRoute.post('/account/user', permissions.can('manage_account'), inviteUser(), accountController.inviteUser);
- accountRoute.get('/account/user', permissions.can('manage_account'), accountController.getAll('users'));
- accountRoute.delete('/account/user/:userId', permissions.can('manage_account'), accountController.deleteUser);
- accountRoute.post('/account/project/', permissions.can('manage_account'), accountController.createProject);
- accountRoute.delete('/account/project/:projectId', permissions.can('manage_account'), fetchProject(), accountController.deleteProject);
- accountRoute.get('/account/project', permissions.can('manage_account'), accountController.getAll('projects'));
- /**
- * User middleware
- */
- userRoute.use(authorizeUser());
- userRoute.use(updateToken());
- /**
- * User routes
- */
- userRoute.get('/user', userAuthorizationController.getToken);
- userRoute.post('/user/password', userAuthorizationController.changePassword);
- // TODO: Change permission -> permissionName for consistencys sake
- userRoute.put('/user/:userId/permission/:permission', permissions.can('add_permission'), userController.addPermission);
- userRoute.delete('/user/:userId/permission/:permission', permissions.can('remove_permission'), userController.removePermission);
- userRoute.get('/user/:userId/permission', userController.getAll('permissions'));
- userRoute.put('/user/:userId/role/:roleName', userController.addRole);
- userRoute.delete('/user/:userId/role/:roleName', userController.removeRole);
- userRoute.get('/user/:userId/role', userController.getAll('roles'));
- /**
- * Team Middleware
- */
- teamRoute.use(authorizeUser());
- teamRoute.use(fetchAccount());
- teamRoute.use(fetchTeam());
- teamRoute.use(updateToken());
- /**
- * Team routes
- */
- teamRoute.put('/team/:teamId/permission/:permissionName', teamController.addPermission);
- teamRoute.delete('/team/:teamId/permission/:permissionName', teamController.removePermission);
- teamRoute.get('/team/:teamId/permission', teamController.getAll('permissions'));
- teamRoute.put('/team/:teamId/role/:roleName', teamController.addRole);
- teamRoute.delete('/team/:teamId/role/:roleName', teamController.removeRole);
- teamRoute.get('/team/:teamId/role/', teamController.getAll('roles'));
- teamRoute.put('/team/:teamId/user/:userId', teamController.addUser);
- teamRoute.delete('/team/:teamId/user/:userId', teamController.removeUser);
- teamRoute.get('/team/:teamId/user/', teamController.getAll('users'));
- /**
- * Project Middleware
- */
- projectRoute.use(authorizeUser());
- projectRoute.use(fetchAccount());
- projectRoute.use(fetchProject());
- projectRoute.use(updateToken());
- /**
- * Project routes
- */
- projectRoute.put('/project/:projectId/team/:teamId', fetchTeam(), projectController.addTeam);
- projectRoute.delete('/project/:projectId/team/:teamId', fetchTeam(), projectController.removeTeam);
- projectRoute.get('/project/:projectId/team', projectController.getAll('teams'));
- /**
- * Initialize routes with the application
- */
- app.use(publicRoute.routes());
- app.use(storageRoute.routes());
- app.use(depotRoute.routes());
- app.use(adminRoute.routes());
- app.use(accountRoute.routes());
- app.use(userRoute.routes());
- app.use(teamRoute.routes());
- app.use(projectRoute.routes());
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement