Skip to main content

Version 15 to 16

TL;DR: Breaking Changes​

  • Dropped support for Angular 14
  • The guard AutoLoginAllRoutesGuard is deprecated in favor of AutoLoginPartialRoutesGuard

TL;DR: New Features​

  • Add new standalone/functional API's

Dropped support for Angular 14​

Angular 14 support is dropped because we want to introduce new standalone/functional methods to use this library (see below for more info).

The guard AutoLoginAllRoutesGuard is deprecated in favor of AutoLoginPartialRoutesGuard​

AutoLoginAllRoutesGuard is not recommended anymore and is marked as deprecated. The guard will be removed in a future version.

Instead, use the AutoLoginPartialRoutesGuard guard. For information see Why is AutoLoginAllRoutesGuard not recommended?.

Old:

import { AutoLoginAllRoutesGuard } from 'angular-auth-oidc-client';

const routes: Routes = [
{
path: 'protected',
component: ProtectedComponent,
canActivate: [AutoLoginAllRoutesGuard], // ⚠️ Using the deprecated AutoLoginAllRoutesGuard guard
},
];

New:

import { AutoLoginPartialRoutesGuard } from 'angular-auth-oidc-client';

const routes: Routes = [
{
path: 'protected',
component: ProtectedComponent,
canActivate: [AutoLoginPartialRoutesGuard], // 👈 Using the recommended AutoLoginPartialRoutesGuard guards
},
];

Add new standalone/functional API's​

This library still supports using Angular Modules, but we included new API's if you want to make use of the standalone/functional API's that were introduced in Angular.

To see this in action, you can also take a look at the demo standalone application.

Configuration​

Instead of using AuthModule.forRoot({}), you can now configure the auth module by using provideAuth.

import { NgModule } from '@angular/core';
import { AuthModule } from 'angular-auth-oidc-client';

@NgModule({
imports: [
AuthModule.forRoot({
config: {
/* Your config here */
},
}),
],
exports: [AuthModule],
})
export class AuthConfigModule {}

Becomes:

import { ApplicationConfig } from '@angular/core';
import { bootstrapApplication } from '@angular/platform-browser';
import { provideAuth } from 'angular-auth-oidc-client';
import { AppComponent } from './app/app.component';

export const appConfig: ApplicationConfig = {
providers: [
// 👇 using provideAuth
provideAuth({
config: {
/* Your config here */
},
}),
],
};

bootstrapApplication(AppComponent, appConfig);

HTTP Interceptor​

Instead of registering the AuthInterceptor using the HTTP_INTERCEPTORS injection token, you can configure the HTTP client by including the authInterceptor interceptor.

import { AuthInterceptor, AuthModule } from 'angular-auth-oidc-client';

@NgModule({
// ...
imports: [
// ...
AuthModule.forRoot(),
HttpClientModule,
],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },
// ...
],
})
export class AppModule {}

Becomes:

import { ApplicationConfig } from '@angular/core';
import { bootstrapApplication } from '@angular/platform-browser';
import { provideHttpClient, withInterceptors } from '@angular/common/http';
import { provideAuth, authInterceptor } from 'angular-auth-oidc-client';
import { AppComponent } from './app/app.component';

export const appConfig: ApplicationConfig = {
providers: [
// 👇 using authInterceptor
provideHttpClient(withInterceptors([authInterceptor()])),
provideAuth({
config: {
/* Your config here */
},
}),
],
};

bootstrapApplication(AppComponent, appConfig);

Guards​

Instead of protecting your routes using the class-based guard AutoLoginPartialRoutesGuard, you can now use the autoLoginPartialRoutesGuard functional guard.

Note there's no autoLoginAllRoutesGuard because its class-based version is deprecated.

import { RouterModule, Routes } from '@angular/router';
import { AutoLoginPartialRoutesGuard } from 'angular-auth-oidc-client';
import { ProtectedComponent } from './protected/protected.component';

const appRoutes: Routes = [
{
path: 'protected',
component: ProtectedComponent,
canActivate: [AutoLoginPartialRoutesGuard],
},
{
path: 'customers',
loadChildren: () => import('./customers/customers.module').then((m) => m.CustomersModule),
canLoad: [AutoLoginPartialRoutesGuard],
},
];

Becomes:

import { RouterModule, Routes } from '@angular/router';
import { AutoLoginPartialRoutesGuard } from 'angular-auth-oidc-client';
import { ProtectedComponent } from './protected/protected.component';

const appRoutes: Routes = [
{
path: 'protected',
component: ProtectedComponent,
// 👇 using autoLoginPartialRoutesGuard
canActivate: [autoLoginPartialRoutesGuard],
},
{
path: 'customers',
loadChildren: () => import('./customers/customers.routes').then((m) => m.routes),
// 👇 using autoLoginPartialRoutesGuard
canMatch: [autoLoginPartialRoutesGuard],
},
];