system.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { User } from '../database/config.js';
  2. import { readFileSync } from 'fs';
  3. // Navbar
  4. export async function Navbar (req) {
  5. let username = req.session.username;
  6. let language = await getLanguage(req);
  7. // Check if the user wants to hide their profile name.
  8. if (req.session.userID != '00000000-0000-0000-0000-000000000000') {
  9. let user = await User.findOne({ where: { userID: req.session.userID }});
  10. let preferences = JSON.parse(user.preferences);
  11. if (preferences.hide_profile == true) { username = 'Anon'; }
  12. }
  13. let navbar = readFileSync('./views/partials/navbar.html', 'utf8');
  14. if (language == 'english') {
  15. navbar = navbar.replace(/Username/g, username);
  16. navbar = navbar.replace(/Userrole/g, req.session.role);
  17. return navbar;
  18. } else {
  19. let lang = readFileSync(`./languages/${language}.json`, 'utf8');
  20. lang = JSON.parse(lang);
  21. navbar = navbar.replace(/Dashboard/g, lang.Dashboard);
  22. navbar = navbar.replace(/Images/g, lang.Images);
  23. navbar = navbar.replace(/Volumes/g, lang.Volumes);
  24. navbar = navbar.replace(/Networks/g, lang.Networks);
  25. navbar = navbar.replace(/Apps/g, lang.Apps);
  26. navbar = navbar.replace(/Users/g, lang.Users);
  27. navbar = navbar.replace(/Syslogs/g, lang.Syslogs);
  28. navbar = navbar.replace(/Username/g, username);
  29. navbar = navbar.replace(/Userrole/g, req.session.role);
  30. return navbar;
  31. }
  32. }
  33. // Header Alert
  34. export function Alert (type, message) {
  35. return `
  36. <div class="alert alert-${type} alert-dismissible" role="alert" style="margin-bottom: 0;">
  37. <div class="d-flex">
  38. <div>
  39. <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon alert-icon"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M5 12l5 5l10 -10"></path></svg>
  40. </div>
  41. <div>
  42. ${message}
  43. </div>
  44. </div>
  45. <a class="btn-close" data-bs-dismiss="alert" aria-label="close"></a>
  46. </div>`;
  47. }
  48. export async function getLanguage (req) {
  49. // No userID if authentication is disabled.
  50. if (req.session.userID == '00000000-0000-0000-0000-000000000000') {
  51. let user = await User.findOne({ where: { role: 'admin' }});
  52. let preferences = JSON.parse(user.preferences);
  53. return preferences.language;
  54. } else {
  55. let user = await User.findOne({ where: { userID: req.session.userID }});
  56. let preferences = JSON.parse(user.preferences);
  57. return preferences.language;
  58. }
  59. }
  60. export function Capitalize (string) {
  61. return string.charAt(0).toUpperCase() + string.slice(1);
  62. }