@webundsoehne/nestjs-auth0-guard
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

Web und Söhne - Logo

Web & Söhne is Austrian's leading expert in programming and implementing complex and large web projects.

@webundsoehne/nestjs-auth0-guard

Version Downloads/week

Description

This is an Auth0 guard, which covers the whole integration for you.

Implementation

Module: ./module.ts

  import { Module, NestModule } from '@nestjs/common'
  import { Auth0Module } from '@webundsoehne/nestjs-auth0-guard'
  import TestController from './controller'

  @Module({
    imports: [
      Auth0Module.register({
        domain: 'customer-domain.auth0.com',
        clientId: 'auth0-client-identifier',
        clientSecret: 'auth0-client-secret',
        audience: 'https://customer-domain.com',
        namespace: 'https://customer-domain.com'
      })
    ],
    controller: [
      TestController
    ]
  })
  export class Server implements NestModule {}

Controller: ./controller.ts

  import { Controller, Get, Post, UseGuards } from '@nestjs/common'
  import { AuthGuard, Auth0TokenUser, Permissions, User } from '@webundsoehne/nestjs-auth0-guard'

  @Controller('test')
  @UseGuards(AuthGuard.withPermissions(['read:test', 'save:test', 'remove:test']))
  export class TestController {
    @Permissions('read:test')
    @Get()
    getTest () {}

    @Permissions('save:test')
    @Post()
    getTest (@User() user: Auth0TokenUser) {}
  }

Auth0Module

The Auth0Module.register(options) has to be imported once in your main NestModule. It requires the configuration for communicating with Auth0.

Options:

Name Type Required Description
domain String true The Auth0 domain of your account's tenant
clientId String true The identifier of the Auth0 client
clientSecret String true The secret key of the used Auth0 client
audience String false The configured audience you want to login (Fallback: http://localhost:3000)
namespace String false The namespace of the JWT property names, which should be extracted to the user's object (Fallback: audience)

AuthGuard

If you want to enable the guard for a controller or method, you have to use the AutheGuard. You may use the jumper AuthGuard.withPermissions(permissions: string | string[]), which allows you to tell the guard which permissions are allowed without using the decorator.

Permissions

The Permissions(permissions: string | string[]) decorator restricts, the access to an method, to one of the set permission values.

User

The User(key?: string) decorator allows you to fetch user specific information out of the JWT payload.

Publishing

On each Git tag commit to this repo, the source-code will be automatically transpiled and published to NPM.

Stay in touch

Readme

Keywords

Package Sidebar

Install

npm i @webundsoehne/nestjs-auth0-guard

Weekly Downloads

217

Version

1.1.0

License

ISC

Unpacked Size

436 kB

Total Files

33

Last publish

Collaborators

  • ws-admin
  • dabls