diff --git a/packages/backend/src/config/app.js b/packages/backend/src/config/app.js index de2d2c0e..72892bb2 100644 --- a/packages/backend/src/config/app.js +++ b/packages/backend/src/config/app.js @@ -97,6 +97,7 @@ const appConfig = { disableNotificationsPage: process.env.DISABLE_NOTIFICATIONS_PAGE === 'true', disableFavicon: process.env.DISABLE_FAVICON === 'true', additionalDrawerLink: process.env.ADDITIONAL_DRAWER_LINK, + additionalDrawerLinkIcon: process.env.ADDITIONAL_DRAWER_LINK_ICON, additionalDrawerLinkText: process.env.ADDITIONAL_DRAWER_LINK_TEXT, disableSeedUser: process.env.DISABLE_SEED_USER === 'true', }; diff --git a/packages/backend/src/controllers/api/v1/automatisch/config.ee.js b/packages/backend/src/controllers/api/v1/automatisch/config.ee.js index 44fd957c..e8538cde 100644 --- a/packages/backend/src/controllers/api/v1/automatisch/config.ee.js +++ b/packages/backend/src/controllers/api/v1/automatisch/config.ee.js @@ -7,6 +7,7 @@ export default async (request, response) => { disableNotificationsPage: appConfig.disableNotificationsPage, disableFavicon: appConfig.disableFavicon, additionalDrawerLink: appConfig.additionalDrawerLink, + additionalDrawerLinkIcon: appConfig.additionalDrawerLinkIcon, additionalDrawerLinkText: appConfig.additionalDrawerLinkText, }; diff --git a/packages/backend/src/controllers/api/v1/automatisch/config.ee.test.js b/packages/backend/src/controllers/api/v1/automatisch/config.ee.test.js index 438d39c5..28b8bde3 100644 --- a/packages/backend/src/controllers/api/v1/automatisch/config.ee.test.js +++ b/packages/backend/src/controllers/api/v1/automatisch/config.ee.test.js @@ -4,6 +4,7 @@ import { createConfig } from '../../../../../test/factories/config.js'; import app from '../../../../app.js'; import configMock from '../../../../../test/mocks/rest/api/v1/automatisch/config.js'; import * as license from '../../../../helpers/license.ee.js'; +import appConfig from '../../../../config/app.js'; describe('GET /api/v1/automatisch/config', () => { it('should return Automatisch config', async () => { @@ -48,4 +49,18 @@ describe('GET /api/v1/automatisch/config', () => { expect(response.body).toEqual(expectedPayload); }); + + it('should return additional environment variables', async () => { + vi.spyOn(appConfig, 'disableNotificationsPage', 'get').mockReturnValue(true); + vi.spyOn(appConfig, 'disableFavicon', 'get').mockReturnValue(true); + vi.spyOn(appConfig, 'additionalDrawerLink', 'get').mockReturnValue('link'); + vi.spyOn(appConfig, 'additionalDrawerLinkIcon', 'get').mockReturnValue('icon'); + vi.spyOn(appConfig, 'additionalDrawerLinkText', 'get').mockReturnValue('text'); + + expect(appConfig.disableNotificationsPage).toEqual(true); + expect(appConfig.disableFavicon).toEqual(true); + expect(appConfig.additionalDrawerLink).toEqual('link'); + expect(appConfig.additionalDrawerLinkIcon).toEqual('icon'); + expect(appConfig.additionalDrawerLinkText).toEqual('text'); + }); }); diff --git a/packages/web/src/components/Layout/index.jsx b/packages/web/src/components/Layout/index.jsx index c36026d8..3e96442b 100644 --- a/packages/web/src/components/Layout/index.jsx +++ b/packages/web/src/components/Layout/index.jsx @@ -8,8 +8,9 @@ import AppsIcon from '@mui/icons-material/Apps'; import SwapCallsIcon from '@mui/icons-material/SwapCalls'; import HistoryIcon from '@mui/icons-material/History'; import NotificationsIcon from '@mui/icons-material/Notifications'; -import ArrowBackIosNew from '@mui/icons-material/ArrowBackIosNew'; import PropTypes from 'prop-types'; +import ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew'; +import SecurityIcon from '@mui/icons-material/Security'; import * as URLS from 'config/urls'; import useFormatMessage from 'hooks/useFormatMessage'; @@ -18,6 +19,11 @@ import AppBar from 'components/AppBar'; import Drawer from 'components/Drawer'; import useAutomatischConfig from 'hooks/useAutomatischConfig'; +const additionalDrawerLinkIcons = { + Security: SecurityIcon, + ArrowBackIosNew: ArrowBackIosNewIcon, +}; + const drawerLinks = [ { Icon: SwapCallsIcon, @@ -43,6 +49,7 @@ const generateDrawerBottomLinks = async ({ disableNotificationsPage, notificationBadgeContent = 0, additionalDrawerLink, + additionalDrawerLinkIcon, additionalDrawerLinkText, formatMessage, }) => { @@ -57,7 +64,9 @@ const generateDrawerBottomLinks = async ({ additionalDrawerLink && additionalDrawerLinkText; const additionalDrawerLinkObject = { - Icon: ArrowBackIosNew, + Icon: + additionalDrawerLinkIcons[additionalDrawerLinkIcon] || + ArrowBackIosNewIcon, primary: additionalDrawerLinkText || '', to: additionalDrawerLink || '', target: '_blank', @@ -95,6 +104,7 @@ function PublicLayout({ children }) { notificationBadgeContent: version.newVersionCount, disableNotificationsPage: config?.disableNotificationsPage, additionalDrawerLink: config?.additionalDrawerLink, + additionalDrawerLinkIcon: config?.additionalDrawerLinkIcon, additionalDrawerLinkText: config?.additionalDrawerLinkText, formatMessage, });