@@ -229,6 +229,12 @@ class TokenRefreshHandlerImpl {
229
229
}
230
230
}
231
231
232
+ class TokenRefreshHandlerFailureImpl {
233
+ refreshIdpToken ( ) {
234
+ return Promise . reject ( new Error ( 'Simulated failure to refresh IDP token.' ) ) ;
235
+ }
236
+ }
237
+
232
238
/**
233
239
* Refreshes the current user data in the UI, displaying a user info box if
234
240
* a user is signed in, or removing it.
@@ -1594,8 +1600,65 @@ async function exchangeCIAMToken(idpConfigId, token) {
1594
1600
return firebaseToken ;
1595
1601
}
1596
1602
1603
+ function onInitializeRegionalAuthClick ( ) {
1604
+ const tenantId = $ ( '#tenant-id-input' ) . val ( ) ;
1605
+ if ( ! tenantId ) {
1606
+ alertError ( 'Please enter a Tenant ID.' ) ;
1607
+ return ;
1608
+ }
1609
+
1610
+ try {
1611
+ const tenantConfig = {
1612
+ location : 'global' ,
1613
+ tenantId : tenantId
1614
+ } ;
1615
+
1616
+ const regionalApp = initializeApp ( config , `${ auth . name } -rgcip` ) ;
1617
+
1618
+ regionalAuth = initializeAuth ( regionalApp , {
1619
+ persistence : indexedDBLocalPersistence ,
1620
+ popupRedirectResolver : browserPopupRedirectResolver ,
1621
+ tenantConfig : tenantConfig
1622
+ } ) ;
1623
+ $ ( '#regional-auth-status' ) . text ( '✅ regionalAuth is initialized' ) ;
1624
+ $ ( '#token-handler-status' ) . text ( 'Token refresh handler is not set.' ) ;
1625
+ const handlerType = localStorage . getItem ( 'tokenRefreshHandlerType' ) ;
1626
+ if ( handlerType === 'success' ) {
1627
+ onSetSuccessfulHandlerClick ( ) ;
1628
+ } else if ( handlerType === 'failure' ) {
1629
+ onSetFailureHandlerClick ( ) ;
1630
+ }
1631
+ const firebaseTokenStatus = document . getElementById (
1632
+ 'firebase-token-status'
1633
+ ) ;
1634
+ setTimeout ( async ( ) => {
1635
+ const firebaseToken = await regionalAuth . getFirebaseAccessToken ( ) ;
1636
+ if ( firebaseToken ) {
1637
+ firebaseTokenStatus . textContent =
1638
+ '✅ Firebase token is set: ' + firebaseToken ;
1639
+ } else {
1640
+ firebaseTokenStatus . textContent =
1641
+ 'No CIAM token found. User not logged in.' ;
1642
+ }
1643
+ console . log ( 'firebaseToken after delay: ' , firebaseToken ) ;
1644
+ } , 1000 ) ;
1645
+ localStorage . setItem ( 'regionalAuthTenantId' , tenantId ) ;
1646
+ } catch ( error ) {
1647
+ onAuthError ( error ) ;
1648
+ }
1649
+ }
1650
+
1597
1651
function onExchangeToken ( event ) {
1598
1652
event . preventDefault ( ) ;
1653
+ if ( ! regionalAuth ) {
1654
+ onAuthError ( {
1655
+ code : 'auth-not-initialized' ,
1656
+ message :
1657
+ 'Regional Auth is not initialized. Please enter a Tenant ID and initialize.'
1658
+ } ) ;
1659
+ return ;
1660
+ }
1661
+
1599
1662
const byoCiamInput = document . getElementById ( 'byo-ciam-token' ) ;
1600
1663
const idpConfigId = document . getElementById ( 'idp-config-id' ) ;
1601
1664
const firebaseTokenStatus = document . getElementById ( 'firebase-token-status' ) ;
@@ -1610,9 +1673,42 @@ function onExchangeToken(event) {
1610
1673
. catch ( error => {
1611
1674
( firebaseTokenStatus . textContent = 'Error exchanging token: ' ) , error ;
1612
1675
console . error ( 'Error exchanging token:' , error ) ;
1676
+ onAuthError ( error ) ;
1613
1677
} ) ;
1614
1678
}
1615
1679
1680
+ function onSetSuccessfulHandlerClick ( ) {
1681
+ if ( ! regionalAuth ) {
1682
+ onAuthError ( {
1683
+ code : 'auth-not-initialized' ,
1684
+ message :
1685
+ 'Regional Auth is not initialized. Please enter a Tenant ID and initialize.'
1686
+ } ) ;
1687
+ return ;
1688
+ }
1689
+
1690
+ const tokenRefreshHandler = new TokenRefreshHandlerImpl ( ) ;
1691
+ regionalAuth . setTokenRefreshHandler ( tokenRefreshHandler ) ;
1692
+ localStorage . setItem ( 'tokenRefreshHandlerType' , 'success' ) ;
1693
+ $ ( '#token-handler-status' ) . text ( '✅ Token refresh handler is set to success.' ) ;
1694
+ }
1695
+
1696
+ function onSetFailureHandlerClick ( ) {
1697
+ if ( ! regionalAuth ) {
1698
+ onAuthError ( {
1699
+ code : 'auth-not-initialized' ,
1700
+ message :
1701
+ 'Regional Auth is not initialized. Please enter a Tenant ID and initialize.'
1702
+ } ) ;
1703
+ return ;
1704
+ }
1705
+
1706
+ const tokenRefreshHandler = new TokenRefreshHandlerFailureImpl ( ) ;
1707
+ regionalAuth . setTokenRefreshHandler ( tokenRefreshHandler ) ;
1708
+ localStorage . setItem ( 'tokenRefreshHandlerType' , 'failure' ) ;
1709
+ $ ( '#token-handler-status' ) . text ( '✅ Token refresh handler is set to failure.' ) ;
1710
+ }
1711
+
1616
1712
/**
1617
1713
* Adds a new row to insert an OAuth custom parameter key/value pair.
1618
1714
* @param {!jQuery.Event } _event The jQuery event object.
@@ -2158,32 +2254,11 @@ function initApp() {
2158
2254
connectAuthEmulator ( auth , AUTH_EMULATOR_URL ) ;
2159
2255
}
2160
2256
2161
- let tenantConfig = {
2162
- 'location' : 'global' ,
2163
- 'tenantId' : 'Foo-e2e-tenant-001'
2164
- } ;
2165
- const regionalApp = initializeApp ( config , `${ auth . name } -rgcip` ) ;
2166
-
2167
- regionalAuth = initializeAuth ( regionalApp , {
2168
- persistence : indexedDBLocalPersistence ,
2169
- popupRedirectResolver : browserPopupRedirectResolver ,
2170
- tenantConfig : tenantConfig
2171
- } ) ;
2172
- const tokenRefreshHandler = new TokenRefreshHandlerImpl ( ) ;
2173
- regionalAuth . setTokenRefreshHandler ( tokenRefreshHandler ) ;
2174
-
2175
- const firebaseTokenStatus = document . getElementById ( 'firebase-token-status' ) ;
2176
- setTimeout ( async ( ) => {
2177
- const firebaseToken = await regionalAuth . getFirebaseAccessToken ( ) ;
2178
- if ( firebaseToken ) {
2179
- firebaseTokenStatus . textContent =
2180
- '✅ Firebase token is set: ' + firebaseToken ;
2181
- } else {
2182
- firebaseTokenStatus . textContent =
2183
- 'No CIAM token found. User not logged in.' ;
2184
- }
2185
- console . log ( 'firebaseToken after delay: ' , firebaseToken ) ;
2186
- } , 1000 ) ;
2257
+ const persistedTenantId = localStorage . getItem ( 'regionalAuthTenantId' ) ;
2258
+ if ( persistedTenantId ) {
2259
+ $ ( '#tenant-id-input' ) . val ( persistedTenantId ) ;
2260
+ onInitializeRegionalAuthClick ( ) ;
2261
+ }
2187
2262
2188
2263
tempApp = initializeApp (
2189
2264
{
@@ -2528,6 +2603,10 @@ function initApp() {
2528
2603
2529
2604
// Performs Exchange Token
2530
2605
$ ( '#exchange-token' ) . click ( onExchangeToken ) ;
2606
+
2607
+ $ ( '#initialize-regional-auth-btn' ) . click ( onInitializeRegionalAuthClick ) ;
2608
+ $ ( '#set-successful-handler-btn' ) . click ( onSetSuccessfulHandlerClick ) ;
2609
+ $ ( '#set-failure-handler-btn' ) . click ( onSetFailureHandlerClick ) ;
2531
2610
}
2532
2611
2533
2612
$ ( initApp ) ;
0 commit comments