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
- Adapters Documentation - Learn about adapter architecture
- Examples - See more adapter examples