From a0f389fc3e23071d4c78f53f9b33b23057470368 Mon Sep 17 00:00:00 2001 From: Deluan Date: Tue, 7 Apr 2020 16:58:02 -0400 Subject: [PATCH] Consolidate UI configuration in one place, allowing it to be overridden from the server --- ui/src/authProvider.js | 3 ++- ui/src/config.js | 20 ++++++++++++++++++++ ui/src/layout/Login.js | 5 +++-- ui/src/utils/baseUrl.js | 4 +++- 4 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 ui/src/config.js diff --git a/ui/src/authProvider.js b/ui/src/authProvider.js index cc6bc0fd..58e68bb3 100644 --- a/ui/src/authProvider.js +++ b/ui/src/authProvider.js @@ -1,11 +1,12 @@ import jwtDecode from 'jwt-decode' import md5 from 'md5-hex' import baseUrl from './utils/baseUrl' +import config from './config' const authProvider = { login: ({ username, password }) => { let url = baseUrl('/app/login') - if (localStorage.getItem('initialAccountCreation')) { + if (config.firstTime) { url = baseUrl('/app/createAdmin') } const request = new Request(url, { diff --git a/ui/src/config.js b/ui/src/config.js new file mode 100644 index 00000000..01de2b2d --- /dev/null +++ b/ui/src/config.js @@ -0,0 +1,20 @@ +const defaultConfig = { + firstTime: false, + baseURL: '', + loginBackgroundURL: 'https://source.unsplash.com/random/1600x900?music' +} + +let config + +try { + const appConfig = JSON.parse(window.__APP_CONFIG__) + + config = { + ...defaultConfig, + ...appConfig + } +} catch (e) { + config = defaultConfig +} + +export default config diff --git a/ui/src/layout/Login.js b/ui/src/layout/Login.js index 64acc94c..1825a4cb 100644 --- a/ui/src/layout/Login.js +++ b/ui/src/layout/Login.js @@ -15,6 +15,7 @@ import LockIcon from '@material-ui/icons/Lock' import { Notification, useLogin, useNotify, useTranslate } from 'react-admin' import LightTheme from '../themes/light' +import config from '../config' const useStyles = makeStyles((theme) => ({ main: { @@ -23,7 +24,7 @@ const useStyles = makeStyles((theme) => ({ minHeight: '100vh', alignItems: 'center', justifyContent: 'flex-start', - background: 'url(https://source.unsplash.com/random/1600x900?music)', + background: `url(${config.loginBackgroundURL})`, backgroundRepeat: 'no-repeat', backgroundSize: 'cover', backgroundPosition: 'center' @@ -253,7 +254,7 @@ const Login = ({ location }) => { return errors } - if (localStorage.getItem('initialAccountCreation') === 'true') { + if (config.firstTime) { return ( { - const base = localStorage.getItem('baseURL') || '' + const base = config.baseURL || '' const parts = [base] parts.push(path.replace(/^\//, '')) return parts.join('/')