@amsame/kinde-auth-nestjs
TypeScript icon, indicating that this package has built-in type declarations

1.0.14 • Public • Published

Nest Logo

Kinde Auth NestJs

A NestJs Module to validate your Kinde JSON Web Tokens

node-current MIT License npm version

Usage

If you are using a mobile or front-end Kinde SDK and want to protect your NestJs back-end APIs, this Module is relevant for you.

  • Install the module

npm i @amsame/kinde-auth-nestjs
  • Set the environments

    kinde supports multi-domain authentication where the primary domain is the same, but there are different NestJs services running in different subdomains. For example. service1.yourdomain.com, service2.yourdomain.com, so make sure to set this environment in your kinde SDK
KINDE_COOKIE_DOMAIN=.yourdomain.com

To run this module, you will need to add the following environment variables to your NestJs .env file

KINDE_DOMAIN=https://<your-subdomain>.kinde.com
KINDE_AUDIENCE=https://<your-audience>

make sure you set the audience in your kinde SDK, see here

  • Load the module

import { Module } from '@nestjs/common';
import { KindeModule } from '@amsame/kinde-auth-nestjs';

@Module({
  imports: [..., ..., KindeModule],
  controllers: [...],
  providers: [...],
})
export class AppModule {}
  • Protect your endpoints

import { Controller, Get } from '@nestjs/common';
import { KindeIsAuth } from '@amsame/kinde-auth-nestjs';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  @KindeIsAuth()
  hello() {
      ...
  }
}
import { Controller, Get } from '@nestjs/common';
import { KindeRoles } from '@amsame/kinde-auth-nestjs';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  @KindeRoles(['admin'])
  hello() {
      ...
  }
}
  • Protect by permissions

    🔴 IMPORTANT you must enable hasura headers
import { Controller, Get } from '@nestjs/common';
import { KindePermissions } from '@amsame/kinde-auth-nestjs';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  @KindePermissions(['...', '...'])
  hello() {
      ...
  }
}
  • Get user details

import { Controller, Get } from '@nestjs/common';
import { IKindeUser, KindeIsAuth, KindeUser } from '@amsame/kinde-auth-nestjs';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  @KindeIsAuth()
  hello(@KindeUser() user: IKindeUser) {
      ...
  }
}

License

MIT

Package Sidebar

Install

npm i @amsame/kinde-auth-nestjs

Weekly Downloads

18

Version

1.0.14

License

MIT

Unpacked Size

35.6 kB

Total Files

29

Last publish

Collaborators

  • y-amine