From 8f13411ca001ab836c322325c00c7738d14e8370 Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Sun, 30 Jul 2023 14:09:35 -0500 Subject: [PATCH] loaded config from server --- client/src/components/Root.jsx | 19 ++++++------------- client/src/index.js | 10 +++++++--- server/api/controllers/appconfig/index.js | 10 ++++++++++ server/config/custom.js | 2 ++ server/config/policies.js | 1 + server/config/routes.js | 2 ++ 6 files changed, 28 insertions(+), 16 deletions(-) create mode 100644 server/api/controllers/appconfig/index.js diff --git a/client/src/components/Root.jsx b/client/src/components/Root.jsx index 1348004..f5b9066 100755 --- a/client/src/components/Root.jsx +++ b/client/src/components/Root.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { AuthProvider } from 'oidc-react'; import { Provider } from 'react-redux'; @@ -17,19 +17,12 @@ import '../lib/custom-ui/styles.css'; import '../styles.module.scss'; import OidcLoginContainer from '../containers/OidcLoginContainer'; -const oidcConfig = { - authority: 'https://auth.jjakt.monster/realms/test-realm/', - clientId: 'planka-dev', - redirectUri: 'http://localhost:3000/OidcLogin', -}; - -function Root({ store, history }) { +function Root({ store, history, config }) { return ( @@ -47,11 +40,11 @@ function Root({ store, history }) { ); } - Root.propTypes = { /* eslint-disable react/forbid-prop-types */ store: PropTypes.object.isRequired, history: PropTypes.object.isRequired, + config: PropTypes.object.isRequired, /* eslint-enable react/forbid-prop-types */ }; diff --git a/client/src/index.js b/client/src/index.js index 574cafe..a7fc523 100755 --- a/client/src/index.js +++ b/client/src/index.js @@ -4,8 +4,12 @@ import ReactDOM from 'react-dom/client'; import store from './store'; import history from './history'; import Root from './components/Root'; - +// import appConfig from './api/appconfig'; import './i18n'; -const root = ReactDOM.createRoot(document.getElementById('root')); -root.render(React.createElement(Root, { store, history })); +fetch('http://localhost:1337/api/appconfig').then((response) => { + response.json().then((config) => { + const root = ReactDOM.createRoot(document.getElementById('root')); + root.render(React.createElement(Root, { store, history, config })); + }); +}); diff --git a/server/api/controllers/appconfig/index.js b/server/api/controllers/appconfig/index.js new file mode 100644 index 0000000..68cb9e8 --- /dev/null +++ b/server/api/controllers/appconfig/index.js @@ -0,0 +1,10 @@ +module.exports = { + async fn() { + const config = { + authority: sails.config.custom.oidcIssuer, + clientId: sails.config.custom.oidcClientId, + redirectUri: sails.config.custom.oidcredirectUri, + }; + return config; + }, +}; diff --git a/server/config/custom.js b/server/config/custom.js index 0f86410..3dff6fe 100644 --- a/server/config/custom.js +++ b/server/config/custom.js @@ -33,6 +33,8 @@ module.exports.custom = { oidcIssuer: process.env.OIDC_ISSUER, oidcAudience: process.env.OIDC_AUDIENCE, + oidcClientId: process.env.OIDC_CLIENT_ID, oidcRolesAttribute: process.env.OIDC_ROLES_ATTRIBUTE || 'groups', oidcAdminRoles: process.env.OIDC_ADMIN_ROLES.split(',') || [], + oidcredirectUri: process.env.OIDC_REDIRECT_URI, }; diff --git a/server/config/policies.js b/server/config/policies.js index afaa3f7..272355c 100644 --- a/server/config/policies.js +++ b/server/config/policies.js @@ -25,4 +25,5 @@ module.exports.policies = { 'access-tokens/create': true, 'access-tokens/exchange': true, + 'appconfig/index': true, }; diff --git a/server/config/routes.js b/server/config/routes.js index 81dcaf1..9f38065 100644 --- a/server/config/routes.js +++ b/server/config/routes.js @@ -9,6 +9,8 @@ */ module.exports.routes = { + 'GET /api/appconfig': 'appconfig/index', + 'POST /api/access-tokens': 'access-tokens/create', 'POST /api/access-tokens/exchange': 'access-tokens/exchange', 'DELETE /api/access-tokens/me': 'access-tokens/delete',