Skip to content

Adapters

Examples of using authentication adapters with ngxsmk-gatekeeper.

Overview

Adapters integrate ngxsmk-gatekeeper with authentication systems like Auth0, Firebase, and custom JWT implementations. The library provides the AuthAdapter contract; concrete adapters are implemented by the community (see example implementations). All adapters are open source and free to use.

Registering an Adapter

typescript
import { provideAdapters } from 'ngxsmk-gatekeeper';
import { Auth0Adapter } from '@vendor/gatekeeper-adapter-auth0';

provideAdapters([
  new Auth0Adapter({
    domain: 'your-domain.auth0.com',
    clientId: 'your-client-id',
    audience: 'your-api-audience',
  }),
]);

Protecting a Route with an Adapter

typescript
import { provideGatekeeper, createAdapterMiddleware } from 'ngxsmk-gatekeeper';
import { Auth0Adapter } from '@vendor/gatekeeper-adapter-auth0';

const auth0Adapter = new Auth0Adapter({...});

provideGatekeeper({
  middlewares: [
    createAdapterMiddleware(auth0Adapter, {
      requireAuth: true,
      redirectOnFail: '/login',
      autoRefresh: true,
    }),
  ],
  onFail: '/login',
});

Writing Your Own Adapter

Any service can implement the AuthAdapter contract:

typescript
import { AuthAdapter, AuthResult, AuthUser } from 'ngxsmk-gatekeeper';
import { MiddlewareContext } from 'ngxsmk-gatekeeper';

class CustomAdapter implements AuthAdapter {
  async authenticate(context: MiddlewareContext): Promise<AuthResult> {
    // Your authentication logic
    return { authenticated: true, user: { id: 'user-1', email: 'user@example.com' } };
  }

  async refresh(context: MiddlewareContext): Promise<AuthResult> {
    // Token refresh logic
    return { authenticated: false, error: 'Not implemented' };
  }

  async logout(context: MiddlewareContext): Promise<void> {
    // Clear session
  }
}

Next Steps

Released under the MIT License.