@@ -69,6 +69,7 @@ type RenewingChecker struct {
69
69
creds core.CredentialsAPI
70
70
expChecker expirationChecker
71
71
mfaPub events.Publisher [bool ]
72
+ logoutPub events.Publisher [events.DataAuthorization ]
72
73
errPub events.Publisher [error ]
73
74
mu sync.Mutex
74
75
accountUpdateEvents * daemonevents.AccountUpdateEvents
@@ -78,6 +79,7 @@ type RenewingChecker struct {
78
79
func NewRenewingChecker (cm config.Manager ,
79
80
creds core.CredentialsAPI ,
80
81
mfaPub events.Publisher [bool ],
82
+ logoutPub events.Publisher [events.DataAuthorization ],
81
83
errPub events.Publisher [error ],
82
84
accountUpdateEvents * daemonevents.AccountUpdateEvents ,
83
85
) * RenewingChecker {
@@ -86,6 +88,7 @@ func NewRenewingChecker(cm config.Manager,
86
88
creds : creds ,
87
89
expChecker : systemTimeExpirationChecker {},
88
90
mfaPub : mfaPub ,
91
+ logoutPub : logoutPub ,
89
92
errPub : errPub ,
90
93
accountUpdateEvents : accountUpdateEvents ,
91
94
}
@@ -204,7 +207,7 @@ func (r *RenewingChecker) renew(uid int64, data config.TokenData) error {
204
207
if errors .Is (err , core .ErrUnauthorized ) ||
205
208
errors .Is (err , core .ErrNotFound ) ||
206
209
errors .Is (err , core .ErrBadRequest ) {
207
- return r .cm .SaveWith (Logout (uid ))
210
+ return r .cm .SaveWith (Logout (uid , r . logoutPub ))
208
211
}
209
212
return nil
210
213
}
@@ -213,7 +216,7 @@ func (r *RenewingChecker) renew(uid int64, data config.TokenData) error {
213
216
if errors .Is (err , core .ErrUnauthorized ) ||
214
217
errors .Is (err , core .ErrNotFound ) ||
215
218
errors .Is (err , core .ErrBadRequest ) {
216
- return r .cm .SaveWith (Logout (uid ))
219
+ return r .cm .SaveWith (Logout (uid , r . logoutPub ))
217
220
}
218
221
return nil
219
222
}
@@ -222,7 +225,7 @@ func (r *RenewingChecker) renew(uid int64, data config.TokenData) error {
222
225
if errors .Is (err , core .ErrUnauthorized ) ||
223
226
errors .Is (err , core .ErrNotFound ) ||
224
227
errors .Is (err , core .ErrBadRequest ) {
225
- return r .cm .SaveWith (Logout (uid ))
228
+ return r .cm .SaveWith (Logout (uid , r . logoutPub ))
226
229
}
227
230
}
228
231
}
@@ -240,7 +243,7 @@ func (r *RenewingChecker) renew(uid int64, data config.TokenData) error {
240
243
if errors .Is (err , core .ErrUnauthorized ) ||
241
244
errors .Is (err , core .ErrNotFound ) ||
242
245
errors .Is (err , core .ErrBadRequest ) {
243
- return r .cm .SaveWith (Logout (uid ))
246
+ return r .cm .SaveWith (Logout (uid , r . logoutPub ))
244
247
}
245
248
}
246
249
@@ -401,8 +404,13 @@ func saveIdempotencyKey(userID int64, data config.TokenData) config.SaveFunc {
401
404
}
402
405
403
406
// Logout the user.
404
- func Logout (user int64 ) config.SaveFunc {
407
+ func Logout (user int64 , logoutPub events. Publisher [events. DataAuthorization ] ) config.SaveFunc {
405
408
return func (c config.Config ) config.Config {
409
+ if logoutPub != nil {
410
+ // register stats instant logout with status success
411
+ logoutPub .Publish (events.DataAuthorization {
412
+ DurationMs : 0 , EventTrigger : events .TriggerApp , EventStatus : events .StatusSuccess })
413
+ }
406
414
delete (c .TokensData , user )
407
415
return c
408
416
}
0 commit comments