@@ -37,8 +37,7 @@ export class SessionMonitor {
37
37
// doesn't trigger load event.
38
38
if ( user ) {
39
39
void this . _start ( user ) ;
40
- }
41
- else if ( this . _userManager . settings . monitorAnonymousSession ) {
40
+ } else if ( this . _userManager . settings . monitorAnonymousSession ) {
42
41
const session = await this . _userManager . querySessionStatus ( ) ;
43
42
if ( session ) {
44
43
const tmpUser = {
@@ -69,8 +68,7 @@ export class SessionMonitor {
69
68
this . _sub = user . profile . sub ;
70
69
this . _sid = user . profile . sid ;
71
70
logger . debug ( "session_state" , session_state , ", sub" , this . _sub ) ;
72
- }
73
- else {
71
+ } else {
74
72
this . _sub = undefined ;
75
73
this . _sid = undefined ;
76
74
logger . debug ( "session_state" , session_state , ", anonymous user" ) ;
@@ -90,21 +88,27 @@ export class SessionMonitor {
90
88
const intervalInSeconds = this . _userManager . settings . checkSessionIntervalInSeconds ;
91
89
const stopOnError = this . _userManager . settings . stopCheckSessionOnError ;
92
90
93
- const checkSessionIFrame = new CheckSessionIFrame ( this . _callback , client_id , url , intervalInSeconds , stopOnError ) ;
91
+ const checkSessionIFrame = new CheckSessionIFrame ( this . _callback , client_id , url , intervalInSeconds , stopOnError , this . doUserSessionErrorPropagation ( ) , this . raiseUserSessionError . bind ( this ) ) ;
94
92
await checkSessionIFrame . load ( ) ;
95
93
this . _checkSessionIFrame = checkSessionIFrame ;
96
94
checkSessionIFrame . start ( session_state ) ;
97
- }
98
- else {
95
+ } else {
99
96
logger . warn ( "no check session iframe found in the metadata" ) ;
100
97
}
101
- }
102
- catch ( err ) {
98
+ } catch ( err ) {
103
99
// catch to suppress errors since we're in non-promise callback
104
100
logger . error ( "Error from getCheckSessionIframe:" , err instanceof Error ? err . message : err ) ;
105
101
}
106
102
} ;
107
103
104
+ private doUserSessionErrorPropagation ( ) : boolean {
105
+ return this . _userManager . settings . propagateUserSessionError ;
106
+ }
107
+
108
+ private raiseUserSessionError ( ) : void {
109
+ this . _userManager . events . _raiseUserSessionError . bind ( this ) ;
110
+ }
111
+
108
112
protected _stop = ( ) : void => {
109
113
const logger = this . _logger . create ( "_stop" ) ;
110
114
this . _sub = undefined ;
@@ -133,8 +137,7 @@ export class SessionMonitor {
133
137
} ;
134
138
void this . _start ( tmpUser ) ;
135
139
}
136
- }
137
- catch ( err ) {
140
+ } catch ( err ) {
138
141
// catch to suppress errors since we're in a callback
139
142
logger . error ( "error from querySessionStatus" , err instanceof Error ? err . message : err ) ;
140
143
}
@@ -155,32 +158,27 @@ export class SessionMonitor {
155
158
156
159
if ( session . sid === this . _sid ) {
157
160
logger . debug ( "same sub still logged in at OP, restarting check session iframe; session_state" , session . session_state ) ;
158
- }
159
- else {
161
+ } else {
160
162
logger . debug ( "same sub still logged in at OP, session state has changed, restarting check session iframe; session_state" , session . session_state ) ;
161
163
this . _userManager . events . _raiseUserSessionChanged ( ) ;
162
164
}
163
- }
164
- else {
165
+ } else {
165
166
logger . debug ( "different subject signed into OP" , session . sub ) ;
166
167
}
167
- }
168
- else {
168
+ } else {
169
169
logger . debug ( "subject no longer signed into OP" ) ;
170
170
}
171
171
172
172
if ( raiseEvent ) {
173
173
if ( this . _sub ) {
174
174
this . _userManager . events . _raiseUserSignedOut ( ) ;
175
- }
176
- else {
175
+ } else {
177
176
this . _userManager . events . _raiseUserSignedIn ( ) ;
178
177
}
179
178
} else {
180
179
logger . debug ( "no change in session detected, no event to raise" ) ;
181
180
}
182
- }
183
- catch ( err ) {
181
+ } catch ( err ) {
184
182
if ( this . _sub ) {
185
183
logger . debug ( "Error calling queryCurrentSigninSession; raising signed out event" , err ) ;
186
184
this . _userManager . events . _raiseUserSignedOut ( ) ;
0 commit comments