@@ -4,6 +4,48 @@ let keycloak = null
44let isInitialized = false
55let initPromise = null
66
7+ // check out [ENT]/HMDA-Operations/hmda-devops/blob/master/eks/hmda_urls.md for more details
8+ // about the different HMDA environments
9+
10+ const prodKeycloakDomain = 'ffiec.cfpb.gov'
11+ const domainsToBeRedirectedToProdKeycloak = [
12+ 'ffiec.beta.cfpb.gov' ,
13+ 'prod-regtech' ,
14+ 'ffiec-beta-test' ,
15+ 'ffiec-test' ,
16+ ]
17+
18+ const devKeycloakDomain = 'hmdadev.cfpb.gov'
19+ const domainsToBeRedirectedToDevKeycloak = [ 'hmda4-beta.demo' ]
20+
21+ const getKeycloakInstance = ( hostname ) => {
22+ const isRedirectedToProd = domainsToBeRedirectedToProdKeycloak . some (
23+ ( domain ) => hostname . includes ( domain ) ,
24+ )
25+ const isRedirectedToDev = domainsToBeRedirectedToDevKeycloak . some ( ( domain ) =>
26+ hostname . includes ( domain ) ,
27+ )
28+
29+ if ( isRedirectedToProd ) return prodKeycloakDomain
30+ if ( isRedirectedToDev ) return devKeycloakDomain
31+
32+ // if hostname doesn't match any known redirect patterns, assume keycloak is hosted on the same domain
33+ return hostname
34+ }
35+
36+ const hostname = window . location . hostname
37+ const keycloakInstance = getKeycloakInstance ( hostname )
38+
39+ const keycloakConfig = {
40+ realm : 'hmda2' ,
41+ url : `https://${ keycloakInstance } /auth` ,
42+ clientId : 'hmda2-api' ,
43+ 'public-client' : true ,
44+ 'use-resource-role-mappings' : true ,
45+ 'confidential-port' : 0 ,
46+ 'ssl-required' : 'all' ,
47+ }
48+
749export const setKeycloak = ( cloak ) => {
850 keycloak = cloak
951 return keycloak
@@ -28,12 +70,12 @@ export const initKeycloak = (overrides) => {
2870 } else if ( import . meta. env . MODE === 'development' ) {
2971 keycloak = new Keycloak ( '/local_keycloak.json' )
3072 } else {
31- keycloak = new Keycloak ( '/keycloak.json' )
73+ keycloak = new Keycloak ( keycloakConfig )
3274 }
3375 }
3476
3577 initPromise = keycloak
36- . init ( { pkceMethod : 'S256' } )
78+ . init ( { pkceMethod : 'S256' , checkLoginIframe : false } )
3779 . then ( ( authenticated ) => {
3880 console . log ( 'Keycloak initialized, authenticated:' , authenticated )
3981 isInitialized = true
0 commit comments