1.0.1 • Published 1 year ago

nest-keycloak-user-manager v1.0.1

Weekly downloads
-
License
UNLICENSED
Repository
github
Last release
1 year ago

Keycloak User Manager

The nest-keycloak-user-manager package provides an easy way to manage users with Keycloak in a NestJS application. It offers pre-built endpoints for common user management tasks while allowing customization for your own endpoints if needed.

Features

  • Easy integration with Keycloak
  • Pre-built user management endpoints
  • Configurable module for different Keycloak instances
  • Extendable service for custom user management logic

Description

Module/Boilerplate for simplified user-management w/ Keycloak in NestJS applications

Installation

To install the package, use npm or yarn:

npm install nest-keycloak-user-manager
# or
yarn add nest-keycloak-user-manager

Configuration

To configure the module, you need to provide the Keycloak connection details in your app.module.ts file:

import { Module } from '@nestjs/common';
import { KeycloakUserManagerModule } from 'nest-keycloak-user-manager';

@Module({
  imports: [
    KeycloakUserManagerModule.register({
      baseUrl: 'http://localhost:8080',
      realm: 'med5-realm',
      clientId: 'med5-clientId',
      clientSecret: 'med5-clientSecret',

    }),
  ],
})
@Global()
export class AppModule {}

Usage

Pre-built Endpoints

Once the module is configured, you can use the following endpoints to manage users:

  • GET /users: Returns a list of all users in the Keycloak realm.
  • GET /users/:id: Returns the user with the specified ID.
  • POST /users: Creates a new user in the Keycloak realm.
  • PUT /users/:id: Updates the user with the specified ID.
  • DELETE /users/:id: Deletes the user with the specified ID.
  • PUT /users/reset-password: Resets the password of a user.

You should respect the following shape of the user object:

{
  username: string;
  email: string;
  firstName: string;
  lastName: string;  
}
// for resetting the password, the body should be:
{
  id: string;
  password: string;
}

Custom Endpoints

If you need to create your own endpoints, you can use the KeycloakUserManagerService provided by the module. Following is an example of how to use it:

import { Controller, Post, Body, Put, Param, Get, Delete } from '@nestjs/common';
import { KeycloakUserManagerService } from 'nest-keycloak-user-manager';
import { AddUserDto, UpdateUserDto } from 'src/dto/custom-users.dto'; // your custom dto

@Controller('custom-users')
export class UserService {
  constructor(private readonly keycloakUserManagerService: KeycloakUserManagerService) {}
  
  @Post()
  async addUser(@Body() addUserDto: AddUserDto){
    return await this.keycloakUserManagerService.createUser(addUserDto);
  }

  @Put(':id')
  async modifyUser(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto){
    return await this.keycloakUserManagerService.updateUser(id, updateUserDto);
  }

  @Get(':id')
  async getOneUser(@Param('id') id: string){
    return await this.keycloakUserManagerService.findUserById(id);
  }

  @Get()
  async getAllUsers(){
    return await this.keycloakUserManagerService.findManyUsers();
  }
  @Delete(':id')
  async removeUser(@Param('id') id: string){
    return await this.keycloakUserManagerService.deleteUser(id);
  }

}

Contributing

Contributions are welcome! Feel free to do contribute by opening issues and/or pull requests.

Stay in touch

1.0.1

1 year ago

1.0.0

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago