File

src/auth/client/client.controller.ts

Prefix

client

Description

Controller to manage clients.

Index

Methods

Methods

createClient
createClient(createClientDto: CreateClientDto, user: TokenPayload)
Decorators :
@Post()

Create a new client

Parameters :
Name Type Optional
createClientDto CreateClientDto No
user TokenPayload No
Returns : any
deleteClient
deleteClient(id: string, user: TokenPayload)
Decorators :
@Delete(':id')

Get a client by its id

Parameters :
Name Type Optional
id string No
user TokenPayload No
Returns : any
getClient
getClient(id: string, user: TokenPayload)
Decorators :
@Get(':id')

Get a client by its id

Parameters :
Name Type Optional
id string No
user TokenPayload No
Returns : any
getClients
getClients(user: TokenPayload)
Decorators :
@Get()

Get all clients for a user

Parameters :
Name Type Optional
user TokenPayload No
Returns : any
getClientSecret
getClientSecret(id: string, user: TokenPayload)
Decorators :
@Get(':id/secret')
Parameters :
Name Type Optional
id string No
user TokenPayload No
updateClient
updateClient(id: string, updateClientDto: UpdateClientDto, user: TokenPayload)
Decorators :
@Patch(':id')

Update a client by its id

Parameters :
Name Type Optional
id string No
updateClientDto UpdateClientDto No
user TokenPayload No
Returns : any
import {
    Body,
    Controller,
    Delete,
    Get,
    Inject,
    Param,
    Patch,
    Post,
} from "@nestjs/common";
import { ApiTags } from "@nestjs/swagger";
import { Role } from "../roles/role.enum";
import { Secured } from "../secure.decorator";
import { Token, TokenPayload } from "../token.decorator";
import { CLIENTS_PROVIDER, ClientsProvider } from "./client.provider";
import { ClientSecretResponseDto } from "./dto/client-secret-response.dto";
import { CreateClientDto } from "./dto/create-client.dto";
import { UpdateClientDto } from "./dto/update-client.dto";

/**
 * Controller to manage clients.
 */
@ApiTags("client")
@Secured([Role.Clients, Role.Tenants])
@Controller("client")
export class ClientController {
    constructor(@Inject(CLIENTS_PROVIDER) private clients: ClientsProvider) {}

    /**
     * Get all clients for a user
     * @param user
     * @returns
     */
    @Get()
    getClients(@Token() user: TokenPayload) {
        return this.clients.getClients(user.entity!.id);
    }

    /**
     * Get a client by its id
     * @param id
     * @param user
     * @returns
     */
    @Get(":id")
    getClient(@Param("id") id: string, @Token() user: TokenPayload) {
        return this.clients.getClient(user.entity!.id, id);
    }

    @Get(":id/secret")
    getClientSecret(
        @Param("id") id: string,
        @Token() user: TokenPayload,
    ): Promise<ClientSecretResponseDto> {
        return this.clients
            .getClientSecret(user.entity!.id, id)
            .then((secret) => ({ secret }));
    }

    /**
     * Update a client by its id
     * @param id
     * @param updateClientDto
     * @param user
     * @returns
     */
    @Patch(":id")
    updateClient(
        @Param("id") id: string,
        @Body() updateClientDto: UpdateClientDto,
        @Token() user: TokenPayload,
    ) {
        return this.clients.updateClient(user.entity!.id, id, updateClientDto);
    }

    /**
     * Create a new client
     * @param createClientDto
     * @param user
     * @returns
     */
    @Post()
    createClient(
        @Body() createClientDto: CreateClientDto,
        @Token() user: TokenPayload,
    ) {
        return this.clients.addClient(user.entity!.id, createClientDto);
    }

    /**
     * Get a client by its id
     * @param id
     * @param user
     * @returns
     */
    @Delete(":id")
    deleteClient(@Param("id") id: string, @Token() user: TokenPayload) {
        return this.clients.removeClient(user.entity!.id, id);
    }
}

results matching ""

    No results matching ""