Impersonation
Admin users can impersonate others via RFC 8693 token exchange. Register the routes and navigate — the library handles the rest.
import { Routes } from '@angular/router';import { createAuthCallbackRoute, createStartImpersonationRoute, createEndImpersonationRoute,} from '@presencelearning/auth';
export const routes: Routes = [ createAuthCallbackRoute(), createStartImpersonationRoute(), createEndImpersonationRoute(), // ...];Triggering impersonation
Section titled “Triggering impersonation”// Trigger impersonation from any componentrouter.navigate(['/auth/impersonate', userId], { queryParams: { path: '/dashboard' } });
// End impersonationrouter.navigate(['/auth/end-impersonation']);Impersonation-aware state
Section titled “Impersonation-aware state”AuthService exposes the impersonation-aware state:
authService.isImpersonating(); // Signal<boolean>authService.currentUser(); // Signal<User | null> — impersonated user while activeauthService.accessToken(); // Signal<string | null> — impersonation token while activeauthService.originalUser(); // Signal<User | null> — the real admin userKnown limitations
Section titled “Known limitations”Cross-app impersonation redirect: navigating between apps while preserving an active impersonation session is not supported. Each app performs its own RFC 8693 token exchange.