nestjs-auth-http
TypeScript icon, indicating that this package has built-in type declarations

0.0.5 • Public • Published

Nest Logo

A progressive Node.js framework for building efficient and scalable server-side applications.

NPM Version Package License NPM Downloads Coverage Discord Backers on Open Collective Sponsors on Open Collective

Description

Promise based Axios module for Nest.

Installation

$ npm i --save nestjs-auth-http axios

Usage

interfaces/oauth-token.interface.ts
export interface OAuthToken {
    token_type: 'Basic' | 'Bearer' | 'Digest' | 'HOBA' | 'Mutual';
    access_token: string;
    expires_in: number;
    // ...
};
auth/jwt-auth.provider.ts
import { AuthProvider, Async, AuthHttpInstance } from 'nestjs-auth-http';
import { OAuthToken } from '../interfaces';

export class OAuthProvider extends AuthProvider<OAuthToken> {
    constructor () {
        super('Bearer'); // readonly type = 'Bearer';
    }

    override isWhitelisted(url: string): boolean {
        return url.includes('/oauth2/token');
    }

    override credentials(client: AuthHttpInstance<OAuthToken>): Async<OAuthToken> {
        return client.post('/oauth2/token', { /* payload */ })
            .then((response) => response.data);
    }

    override isExpired(credentials: OAuthToken): Async<boolean> {
        /* token verification */
        return false;
    }

    override toAuthorization(credentials: OAuthToken): string {
        return `${this.type} ${credentials.access_token}`;
    }

    /* Default
    isUnauthorizedError(error: any): boolean {
        return error?.response?.status === 401;
    }
     */
}
auth/jwt-auth.provider.ts
import { Module } from '@nestjs/common';
import { AuthHttpModule } from 'nestjs-auth-http';
import { JwtAuthProvider } from './auth';
import { FooController } from './controllers';


@Module({
    imports: [AuthHttpModule.register({
        baseURL: 'http://token.api',
        authProvider: new JwtAuthProvider(),
        onCreate(instance) { // Called after the instance is created.
            /* do something */
            /* instance.interceptors.request.use() */
        },
    })],
    controllers: [FooController],
})
export class AppModule {}
controllers/foo-controller.ts
import { Controller, Post } from '@nestjs/common';
import { AuthHttpService } from 'nestjs-auth-http';

@Controller('/foo')
export class FooController {
    constructor (private readonly httpService: AuthHttpService) {}

    @Post('/bar')
    async bar() {
        const response = await this.httpService.post('/hello/world', { /* payload */ });
        return response.data;
    }
}

License

MIT licensed.

Package Sidebar

Install

npm i nestjs-auth-http

Weekly Downloads

0

Version

0.0.5

License

MIT

Unpacked Size

29.6 kB

Total Files

29

Last publish

Collaborators

  • block-head