42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import { Controller, Get, UseGuards, Query, ValidationPipe } from '@nestjs/common';
|
|
import { ApiTags, ApiBearerAuth, ApiOperation, ApiOkResponse } from '@nestjs/swagger';
|
|
import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard';
|
|
import { UserService } from '../user.service';
|
|
import { FindUsersDto } from '../dto/find-user.dto';
|
|
import { UserId } from 'src/common/decorators/user-id.decorator';
|
|
import { RestId } from 'src/common/decorators';
|
|
|
|
@UseGuards(AdminAuthGuard)
|
|
@ApiBearerAuth()
|
|
@ApiTags('Admin/User')
|
|
@Controller('admin/user')
|
|
export class AdminUserController {
|
|
constructor(private readonly userService: UserService) {}
|
|
|
|
@UseGuards(AdminAuthGuard)
|
|
@ApiBearerAuth()
|
|
@ApiOperation({ summary: 'Get the current authenticated user profile' })
|
|
@Get('/me')
|
|
async getUser(@UserId() userId: string) {
|
|
const user = await this.userService.findById(userId);
|
|
return {
|
|
message: `GET request: Retrieving profile for authenticated user`,
|
|
user,
|
|
userId,
|
|
};
|
|
}
|
|
|
|
@UseGuards(AdminAuthGuard)
|
|
@ApiBearerAuth()
|
|
@ApiOperation({ summary: 'Get paginated list of users with filters' })
|
|
@ApiOkResponse({ description: 'Paginated list of users' })
|
|
@Get('/')
|
|
async findAll(
|
|
@Query(new ValidationPipe({ transform: true, whitelist: true }))
|
|
query: FindUsersDto,
|
|
@RestId() restId: string,
|
|
) {
|
|
return this.userService.findAll(restId, query);
|
|
}
|
|
}
|