@@ -4,14 +4,23 @@ import { getDiscoveryDataInfo } from './SSOUtils';
44import { ShieldCheckIconOutline } from '@neo4j-ndl/react/icons' ;
55import { Button , IconButton } from '@neo4j-ndl/react' ;
66
7- export const SSOLoginButton = ( { discoveryAPIUrl, hostname, port, onSSOAttempt, onClick } ) => {
7+ export const SSOLoginButton = ( { discoveryAPIUrl, hostname, port, onSSOAttempt, onClick, providers } ) => {
88 const [ savedSSOProviders , setSSOProviders ] = useState ( [ ] ) ;
99 const [ discoveryUrlValidated , setDiscoveryUrlValidated ] = useState ( undefined ) ;
10+
11+ const filterByProvidersList = ( discoveredProviders , validProviders ) => {
12+ if ( validProviders . length == 0 ) {
13+ return discoveredProviders ;
14+ }
15+ return validProviders . length == 0
16+ ? discoveredProviders
17+ : discoveredProviders . filter ( ( p ) => validProviders . includes ( p . id ) ) ;
18+ } ;
1019 const attemptManualSSOProviderRetrieval = ( ) => {
1120 // Do an extra check to see if the hostname provides some SSO provider configuration.
1221 getDiscoveryDataInfo ( `https://${ hostname } :${ port } ` )
1322 . then ( ( mergedSSOProviders ) => {
14- setSSOProviders ( mergedSSOProviders ) ;
23+ setSSOProviders ( filterByProvidersList ( mergedSSOProviders , providers ) ) ;
1524 if ( mergedSSOProviders . length == 0 ) {
1625 setDiscoveryUrlValidated ( undefined ) ;
1726 } else {
@@ -26,7 +35,7 @@ export const SSOLoginButton = ({ discoveryAPIUrl, hostname, port, onSSOAttempt,
2635 // First, try to get the SSO discovery URL from the config.json configuration file and see if it contains anything.
2736 getDiscoveryDataInfo ( discoveryAPIUrl )
2837 . then ( ( mergedSSOProviders ) => {
29- setSSOProviders ( mergedSSOProviders ) ;
38+ setSSOProviders ( filterByProvidersList ( mergedSSOProviders , providers ) ) ;
3039 if ( mergedSSOProviders . length == 0 ) {
3140 attemptManualSSOProviderRetrieval ( ) ;
3241 } else {
0 commit comments