router.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import express from 'express';
  2. export const router = express.Router();
  3. import { Login, submitLogin, Logout } from './controllers/login.js';
  4. import { Register, submitRegister } from './controllers/register.js';
  5. import { Dashboard, submitDashboard, ServerMetrics } from './controllers/dashboard.js';
  6. import { Settings, submitSettings } from './controllers/settings.js';
  7. import { Images, submitImages } from './controllers/images.js';
  8. import { Volumes, submitVolumes } from './controllers/volumes.js';
  9. import { Networks, submitNetworks } from './controllers/networks.js';
  10. import { Users, submitUsers } from './controllers/users.js';
  11. import { Apps, submitApps } from './controllers/apps.js';
  12. import { Account } from './controllers/account.js';
  13. import { containerAction } from './utils/docker.js';
  14. import { Preferences, submitPreferences } from './controllers/preferences.js';
  15. import { sessionCheck, adminOnly, permissionCheck } from './utils/permissions.js';
  16. router.get('/login', Login);
  17. router.post('/login', submitLogin);
  18. router.get('/logout', Logout);
  19. router.get('/register', Register);
  20. router.post('/register', submitRegister);
  21. router.get("/:host?/dashboard", sessionCheck, Dashboard);
  22. router.get("/server_metrics", sessionCheck, ServerMetrics);
  23. router.post("/:host?/container/:action", permissionCheck, containerAction);
  24. router.get('/images', adminOnly, Images);
  25. router.post('/images', adminOnly, submitImages);
  26. router.get('/volumes', adminOnly, Volumes);
  27. router.post('/volumes', adminOnly, submitVolumes);
  28. router.get('/networks', adminOnly, Networks);
  29. router.post('/networks', adminOnly, submitNetworks);
  30. router.get('/settings', adminOnly, Settings);
  31. router.post('/settings', adminOnly, submitSettings);
  32. router.get("/apps/:page?/:template?", adminOnly, Apps);
  33. router.post('/apps', adminOnly, submitApps);
  34. router.get('/users', adminOnly, Users);
  35. router.post('/users', adminOnly, submitUsers);
  36. router.get('/preferences', sessionCheck, Preferences);
  37. router.post('/preferences', sessionCheck, submitPreferences);
  38. router.get('/account', sessionCheck, Account);
  39. // Search
  40. router.post("/search", function (req, res) {
  41. // Check which page you're searching from
  42. let page = (req.header('hx-current-url')).split("/").pop();
  43. // Redirect to the controller
  44. switch(page) {
  45. case "dashboard":
  46. submitDashboard(req, res);
  47. break;
  48. case "images":
  49. submitImages(req, res);
  50. break;
  51. case "volumes":
  52. submitsubmitVolumes(req, res);
  53. break;
  54. case "networks":
  55. submitNetworks(req, res);
  56. break;
  57. case "apps":
  58. submitappSearch(req, res);
  59. break;
  60. default:
  61. res.send("Invalid search");
  62. }
  63. });
  64. router.get('*', (req, res) => {
  65. res.redirect('/1/dashboard');
  66. });