Advertisement
Guest User

Untitled

a guest
Apr 26th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2. module.exports = function (app, permissions, storageClient) {
  3.   let Router = require('koa-router')
  4.  
  5.   /**
  6.    * Controllers
  7.    */
  8.  
  9.   ,   userAuthorizationController = require('../api/controllers/userAuthorization')
  10.   ,   accountAuthorizationController = require('../api/controllers/accountAuthorization')
  11.   ,   teamController = require('../api/controllers/team')
  12.   ,   accountController = require('../api/controllers/account')
  13.   ,   storageController = require('../api/controllers/storage')
  14.   ,   adminController = require('../api/controllers/admin')
  15.   ,   depotController = require('../api/controllers/depot')
  16.   ,   userController = require('../api/controllers/user')
  17.   ,   projectController = require('../api/controllers/project')
  18.  
  19.   /**
  20.    * Services
  21.    */
  22.  
  23.   ,   authorizeUser = require('../api/services/authorizeUser')
  24.   ,   fetchAccount = require('../api/services/fetchAccount')
  25.   ,   fetchTeam = require('../api/services/fetchTeam')
  26.   ,   fetchProject = require('../api/services/fetchProject')
  27.   ,   fetchTeamContext = require('../api/services/fetchTeamContext')
  28.   ,   createUser = require('../api/services/createAccountOwner')
  29.   ,   inviteUser = require('../api/services/inviteUser')
  30.   ,   updateToken = require('../api/services/updateToken');
  31.  
  32.   /**
  33.    * Create routes
  34.    */
  35.  
  36.   let publicRoute = new Router();
  37.   let adminRoute = new Router();
  38.   let userRoute = new Router();
  39.   let accountRoute = new Router();
  40.   let storageRoute = new Router();
  41.   let projectRoute = new Router();
  42.   let teamRoute = new Router();
  43.   let depotRoute = new Router();
  44.  
  45.   /**
  46.    * Public routes
  47.    */
  48.  
  49.   publicRoute.post('/login', userAuthorizationController.login);
  50.   publicRoute.post('/account', createUser(), accountAuthorizationController.create);
  51.  
  52.   /**
  53.    * Storage middleware
  54.    */
  55.  
  56.   storageRoute.use(authorizeUser());
  57.  
  58.  
  59.   /**
  60.    * Storage routes
  61.    */
  62.  
  63.   storageRoute.get('/s3/download/:filePath', storageController.download(storageClient));
  64.   storageRoute.get('/s3/sign', storageController.signUrl(storageClient));
  65.  
  66.  
  67.   /**
  68.    * Depot Middleware
  69.    */
  70.   depotRoute.use(authorizeUser());
  71.  
  72.  
  73.   /**
  74.    * Depot Routes
  75.    */
  76.  
  77.   depotRoute.post('/depot/:depotId/folder/:folderId/file/:fileName', depotController.addDownload);
  78.   depotRoute.post('/depot/:depotId/folder/:folderId/post/', depotController.createPost);
  79.   depotRoute.post('/depot/:depotId/folder/:folderId/post/:postId', depotController.editPost);
  80.   depotRoute.get('/depot/:depotId/folder/:folderId',  depotController.getFolder);
  81.   depotRoute.post('/depot/:depotId/folder', depotController.createFolder);
  82.  
  83.  
  84.   /**
  85.    * Admin Middleware
  86.    */
  87.  
  88.   adminRoute.use(authorizeUser());
  89.  
  90.   /**
  91.    * Admin routes
  92.    */
  93.  
  94.   adminRoute.get('/admin/account', permissions.can('manage_channels'), adminController.getAccounts);
  95.   adminRoute.get('/admin/account/:accountId/channel', permissions.can('manage_channels'), adminController.getAccountChannels);
  96.   adminRoute.put('/admin/account/:accountId/channel/:channelId', permissions.can('manage_channels'), adminController.addChannel);
  97.   adminRoute.delete('/admin/account/:accountId/channel/:channelId', permissions.can('manage_channels'), adminController.removeChannel);
  98.   adminRoute.post('/admin/channel/', permissions.can('manage_channels'), adminController.createChannel);
  99.   adminRoute.get('/admin/channel/', permissions.can('manage_channels'), adminController.getChannels);
  100.  
  101.   /**
  102.    * Account Middleware
  103.    */
  104.  
  105.   accountRoute.use(authorizeUser());
  106.   accountRoute.use(fetchAccount());
  107.   accountRoute.use(updateToken());
  108.  
  109.   /**
  110.    * Account routes
  111.    */
  112.  
  113.   accountRoute.get('/account', permissions.can('manage_account'), accountController.getAccount);
  114.   accountRoute.post('/account/team', permissions.can('manage_account'), accountController.createTeam);
  115.   accountRoute.get('/account/team', permissions.can('manage_account'), accountController.getAll('teams'));
  116.   accountRoute.delete('/account/team/:teamId', permissions.can('manage_account'), accountController.deleteTeam);
  117.   accountRoute.post('/account/user', permissions.can('manage_account'), inviteUser(), accountController.inviteUser);
  118.   accountRoute.get('/account/user', permissions.can('manage_account'), accountController.getAll('users'));
  119.   accountRoute.delete('/account/user/:userId', permissions.can('manage_account'), accountController.deleteUser);
  120.   accountRoute.post('/account/project/', permissions.can('manage_account'), accountController.createProject);
  121.   accountRoute.delete('/account/project/:projectId', permissions.can('manage_account'), fetchProject(), accountController.deleteProject);
  122.   accountRoute.get('/account/project', permissions.can('manage_account'), accountController.getAll('projects'));
  123.  
  124.   /**
  125.    * User middleware
  126.    */
  127.  
  128.   userRoute.use(authorizeUser());
  129.   userRoute.use(updateToken());
  130.  
  131.   /**
  132.    * User routes
  133.    */
  134.  
  135.   userRoute.get('/user', userAuthorizationController.getToken);
  136.   userRoute.post('/user/password', userAuthorizationController.changePassword);
  137.   // TODO: Change permission -> permissionName for consistencys sake
  138.   userRoute.put('/user/:userId/permission/:permission', permissions.can('add_permission'), userController.addPermission);
  139.   userRoute.delete('/user/:userId/permission/:permission', permissions.can('remove_permission'), userController.removePermission);
  140.   userRoute.get('/user/:userId/permission', userController.getAll('permissions'));
  141.   userRoute.put('/user/:userId/role/:roleName', userController.addRole);
  142.   userRoute.delete('/user/:userId/role/:roleName', userController.removeRole);
  143.   userRoute.get('/user/:userId/role', userController.getAll('roles'));
  144.  
  145.   /**
  146.    * Team Middleware
  147.    */
  148.  
  149.   teamRoute.use(authorizeUser());
  150.   teamRoute.use(fetchAccount());
  151.   teamRoute.use(fetchTeam());
  152.   teamRoute.use(updateToken());
  153.  
  154.   /**
  155.    * Team routes
  156.    */
  157.   teamRoute.put('/team/:teamId/permission/:permissionName', teamController.addPermission);
  158.   teamRoute.delete('/team/:teamId/permission/:permissionName', teamController.removePermission);
  159.   teamRoute.get('/team/:teamId/permission', teamController.getAll('permissions'));
  160.   teamRoute.put('/team/:teamId/role/:roleName', teamController.addRole);
  161.   teamRoute.delete('/team/:teamId/role/:roleName', teamController.removeRole);
  162.   teamRoute.get('/team/:teamId/role/', teamController.getAll('roles'));
  163.   teamRoute.put('/team/:teamId/user/:userId', teamController.addUser);
  164.   teamRoute.delete('/team/:teamId/user/:userId', teamController.removeUser);
  165.   teamRoute.get('/team/:teamId/user/', teamController.getAll('users'));
  166.  
  167.   /**
  168.    * Project Middleware
  169.    */
  170.  
  171.   projectRoute.use(authorizeUser());
  172.   projectRoute.use(fetchAccount());
  173.   projectRoute.use(fetchProject());
  174.   projectRoute.use(updateToken());
  175.  
  176.   /**
  177.    * Project routes
  178.    */
  179.   projectRoute.put('/project/:projectId/team/:teamId', fetchTeam(), projectController.addTeam);
  180.   projectRoute.delete('/project/:projectId/team/:teamId', fetchTeam(), projectController.removeTeam);
  181.   projectRoute.get('/project/:projectId/team', projectController.getAll('teams'));
  182.  
  183.   /**
  184.    * Initialize routes with the application
  185.    */
  186.  
  187.   app.use(publicRoute.routes());
  188.   app.use(storageRoute.routes());
  189.   app.use(depotRoute.routes());
  190.   app.use(adminRoute.routes());
  191.   app.use(accountRoute.routes());
  192.   app.use(userRoute.routes());
  193.   app.use(teamRoute.routes());
  194.   app.use(projectRoute.routes());
  195. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement