0
# Event System
1
2
Comprehensive event system for user state changes, token expiration, and error handling with callback registration and management.
3
4
## Capabilities
5
6
### UserManagerEvents
7
8
Event system for UserManager with user lifecycle and token events.
9
10
```typescript { .api }
11
/**
12
* Event management for UserManager user state changes
13
*/
14
class UserManagerEvents {
15
// Event registration
16
addUserLoaded(callback: UserLoadedCallback): void;
17
addUserUnloaded(callback: UserUnloadedCallback): void;
18
addUserSignedIn(callback: UserSignedInCallback): void;
19
addUserSignedOut(callback: UserSignedOutCallback): void;
20
addUserSessionChanged(callback: UserSessionChangedCallback): void;
21
addSilentRenewError(callback: SilentRenewErrorCallback): void;
22
23
// Event removal
24
removeUserLoaded(callback: UserLoadedCallback): void;
25
removeUserUnloaded(callback: UserUnloadedCallback): void;
26
removeUserSignedIn(callback: UserSignedInCallback): void;
27
removeUserSignedOut(callback: UserSignedOutCallback): void;
28
removeUserSessionChanged(callback: UserSessionChangedCallback): void;
29
removeSilentRenewError(callback: SilentRenewErrorCallback): void;
30
}
31
32
// Event callback types
33
type UserLoadedCallback = (user: User) => Promise<void> | void;
34
type UserUnloadedCallback = () => Promise<void> | void;
35
type UserSignedInCallback = () => Promise<void> | void;
36
type UserSignedOutCallback = () => Promise<void> | void;
37
type UserSessionChangedCallback = () => Promise<void> | void;
38
type SilentRenewErrorCallback = (error: Error) => Promise<void> | void;
39
```
40
41
### AccessTokenEvents
42
43
Event system for access token lifecycle management.
44
45
```typescript { .api }
46
/**
47
* Event handling for access token expiration and renewal
48
*/
49
class AccessTokenEvents {
50
addAccessTokenExpiring(callback: AccessTokenCallback): void;
51
addAccessTokenExpired(callback: AccessTokenCallback): void;
52
removeAccessTokenExpiring(callback: AccessTokenCallback): void;
53
removeAccessTokenExpired(callback: AccessTokenCallback): void;
54
}
55
56
type AccessTokenCallback = (...ev: unknown[]) => Promise<void> | void;
57
```
58
59
## Usage Examples
60
61
```typescript
62
import { UserManager, User } from "oidc-client-ts";
63
64
const userManager = new UserManager({
65
// ... configuration
66
automaticSilentRenew: true,
67
accessTokenExpiringNotificationTimeInSeconds: 60,
68
});
69
70
// User lifecycle events
71
userManager.events.addUserLoaded((user: User) => {
72
console.log("User loaded:", user.profile?.name);
73
updateUIForAuthenticatedUser(user);
74
});
75
76
userManager.events.addUserSignedIn((user: User) => {
77
console.log("User signed in:", user.profile?.name);
78
redirectToApplication();
79
});
80
81
userManager.events.addUserSignedOut(() => {
82
console.log("User signed out");
83
redirectToLogin();
84
});
85
86
userManager.events.addSilentRenewError((error: Error) => {
87
console.error("Silent renewal failed:", error);
88
handleSilentRenewFailure();
89
});
90
91
// Token events
92
const accessTokenEvents = new AccessTokenEvents();
93
accessTokenEvents.addAccessTokenExpiring((user: User) => {
94
console.log(`Token expiring in ${user.expires_in} seconds`);
95
showExpirationWarning();
96
});
97
```