From 6c826c71277bb89e643ce6584b8e4e0b84b4ab0a Mon Sep 17 00:00:00 2001 From: Maksim Eltyshev Date: Thu, 1 Feb 2024 00:31:15 +0100 Subject: [PATCH] feat: Add ability to enforce SSO Closes #543, closes #545 --- client/src/components/Login/Login.jsx | 90 ++++++++++--------- .../src/components/UsersModal/UsersModal.jsx | 14 +-- client/src/containers/LoginContainer.js | 1 + client/src/containers/UsersModalContainer.js | 2 + docker-compose.yml | 1 + server/.env.sample | 1 + .../api/controllers/access-tokens/create.js | 5 +- server/api/controllers/show-config.js | 1 + server/api/controllers/users/create.js | 10 +++ server/config/custom.js | 1 + 10 files changed, 80 insertions(+), 46 deletions(-) diff --git a/client/src/components/Login/Login.jsx b/client/src/components/Login/Login.jsx index 84e6a9d0..6f547ee2 100755 --- a/client/src/components/Login/Login.jsx +++ b/client/src/components/Login/Login.jsx @@ -68,6 +68,7 @@ const Login = React.memo( isSubmittingUsingOidc, error, withOidc, + isOidcEnforced, onAuthenticate, onAuthenticateUsingOidc, onMessageDismiss, @@ -107,8 +108,10 @@ const Login = React.memo( }, [onAuthenticate, data]); useEffect(() => { - emailOrUsernameField.current.focus(); - }, []); + if (!isOidcEnforced) { + emailOrUsernameField.current.focus(); + } + }, [isOidcEnforced]); useEffect(() => { if (wasSubmitting && !isSubmitting && error) { @@ -159,51 +162,57 @@ const Login = React.memo( onDismiss={onMessageDismiss} /> )} -
-
-
{t('common.emailOrUsername')}
- +
+
{t('common.emailOrUsername')}
+ +
+
+
{t('common.password')}
+ +
+ -
-
-
{t('common.password')}
- -
- - + + )} {withOidc && ( + /> )} @@ -242,6 +251,7 @@ Login.propTypes = { isSubmittingUsingOidc: PropTypes.bool.isRequired, error: PropTypes.object, // eslint-disable-line react/forbid-prop-types withOidc: PropTypes.bool.isRequired, + isOidcEnforced: PropTypes.bool.isRequired, onAuthenticate: PropTypes.func.isRequired, onAuthenticateUsingOidc: PropTypes.func.isRequired, onMessageDismiss: PropTypes.func.isRequired, diff --git a/client/src/components/UsersModal/UsersModal.jsx b/client/src/components/UsersModal/UsersModal.jsx index 280cd08a..68f0f82f 100755 --- a/client/src/components/UsersModal/UsersModal.jsx +++ b/client/src/components/UsersModal/UsersModal.jsx @@ -10,6 +10,7 @@ import Item from './Item'; const UsersModal = React.memo( ({ items, + canAdd, onUpdate, onUsernameUpdate, onUsernameUpdateMessageDismiss, @@ -130,11 +131,13 @@ const UsersModal = React.memo( - - -