From f0a70bc933a5f609ba0654e5502b992bd81c8469 Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Thu, 16 Nov 2023 13:56:54 -0800 Subject: [PATCH 01/11] removed unused imports --- src/user/controllers/user/user.controller.ts | 1 - src/user/services/user/user.service.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/src/user/controllers/user/user.controller.ts b/src/user/controllers/user/user.controller.ts index cecdd15..e88720a 100644 --- a/src/user/controllers/user/user.controller.ts +++ b/src/user/controllers/user/user.controller.ts @@ -7,7 +7,6 @@ import { Param, Patch, Post, - Req, UseGuards, } from '@nestjs/common'; import { UserService } from '../../services/user/user.service'; diff --git a/src/user/services/user/user.service.ts b/src/user/services/user/user.service.ts index 00ade27..d3b678b 100644 --- a/src/user/services/user/user.service.ts +++ b/src/user/services/user/user.service.ts @@ -1,7 +1,6 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ import { BadRequestException, - ForbiddenException, HttpException, HttpStatus, Injectable, From f95fa3f8fed25ec2b7e0691d25c43278e9bd42de Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Thu, 16 Nov 2023 14:35:36 -0800 Subject: [PATCH 02/11] removed add a user, auth handles this with sign up --- src/user/controllers/user/user.controller.ts | 7 ------- src/user/services/user/user.service.ts | 18 ------------------ 2 files changed, 25 deletions(-) diff --git a/src/user/controllers/user/user.controller.ts b/src/user/controllers/user/user.controller.ts index e88720a..32ae552 100644 --- a/src/user/controllers/user/user.controller.ts +++ b/src/user/controllers/user/user.controller.ts @@ -6,7 +6,6 @@ import { Get, Param, Patch, - Post, UseGuards, } from '@nestjs/common'; import { UserService } from '../../services/user/user.service'; @@ -20,12 +19,6 @@ import { AuthGuard } from '@nestjs/passport'; export class UserController { constructor(private readonly userService: UserService) {} - // ----------------- Add User ------------------------------- \\ - @Post('new') - async adminAddUser(@Body() createUserDto: CreateUserDto, @Req() req: any) { - const generatedId = await this.userService.newUser(createUserDto); - return { id: generatedId }; - } // ----------------- Get Users ----------------------------- \\ @Get('') diff --git a/src/user/services/user/user.service.ts b/src/user/services/user/user.service.ts index d3b678b..b6ca4d6 100644 --- a/src/user/services/user/user.service.ts +++ b/src/user/services/user/user.service.ts @@ -20,24 +20,6 @@ export class UserService { // User defined in user.module.ts } - // ----------------- Add user ----------------- \\ - async newUser(createUserDto: CreateUserDto): Promise { - const { name, email, password, role } = createUserDto; - const hashedPassword = await bcrypt.hash(password, 10); - const newUser = new this.userModel({ - name, - email, - password: hashedPassword, - role, - }); - try { - const result = await newUser.save(); - return result._id; - } catch (error) { - log(error); - return error; - } - } // ----------------- Get all users ----------------- \\ async getAllUsers(): Promise { From 68a0077f93556de4f8631eeb8f7861cb3cb33f0a Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Thu, 16 Nov 2023 14:36:24 -0800 Subject: [PATCH 03/11] created update user DTO --- src/user/dto/update-user.dto.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/user/dto/update-user.dto.ts diff --git a/src/user/dto/update-user.dto.ts b/src/user/dto/update-user.dto.ts new file mode 100644 index 0000000..48c134b --- /dev/null +++ b/src/user/dto/update-user.dto.ts @@ -0,0 +1,22 @@ +import { IsEmpty, IsEnum, IsOptional, IsString } from 'class-validator'; +import { Role } from '../schemas/user.model'; + +export class UpdateUserDto { + + @IsOptional() + @IsString() + readonly name: string; + + @IsOptional() + @IsEmpty({ message: 'Cannot update email here' }) + readonly email: string; + + @IsOptional() + @IsEmpty({ message: 'Cannot update password here' }) + readonly password: string; + + @IsOptional() + @IsEnum(Role) + readonly role: Role; + +} From 9a2a6cf3a2fc24ab8cb661132ad60fb9a9ff1938 Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Thu, 16 Nov 2023 14:41:33 -0800 Subject: [PATCH 04/11] refactor update user --- src/user/controllers/user/user.controller.ts | 13 +++------- src/user/services/user/user.service.ts | 26 ++++++-------------- 2 files changed, 11 insertions(+), 28 deletions(-) diff --git a/src/user/controllers/user/user.controller.ts b/src/user/controllers/user/user.controller.ts index 32ae552..c6b99ce 100644 --- a/src/user/controllers/user/user.controller.ts +++ b/src/user/controllers/user/user.controller.ts @@ -9,9 +9,9 @@ import { UseGuards, } from '@nestjs/common'; import { UserService } from '../../services/user/user.service'; -import { Role } from '../../schemas/user.model'; -import { CreateUserDto } from '../../dto/create-user.dto'; +import { UserDocument } from '../../schemas/user.model'; import { AuthGuard } from '@nestjs/passport'; +import { UpdateUserDto } from '../../dto/update-user.dto'; // ================== User admin routes ======================== \\ @Controller('users') @@ -40,13 +40,8 @@ export class UserController { // ----------------- Update User --------------------------- \\ @Patch('update/:id') - async updateUser( - @Param('id') id: string, - @Body('name') name: string, - @Body('email') email: string, - @Body('role') role: Role, - ) { - await this.userService.updateUser(id, name, email, role); + async updateUser(@Param('id') id: string, @Body() userDto: UpdateUserDto) { + return await this.userService.updateUser(id, userDto as UserDocument); } // ----------------- Delete User --------------------------- // diff --git a/src/user/services/user/user.service.ts b/src/user/services/user/user.service.ts index b6ca4d6..7887528 100644 --- a/src/user/services/user/user.service.ts +++ b/src/user/services/user/user.service.ts @@ -11,7 +11,6 @@ import * as bcrypt from 'bcryptjs'; import { Model } from 'mongoose'; import { Role, UserDocument } from '../../schemas/user.model'; import { InjectModel } from '@nestjs/mongoose'; -import { CreateUserDto } from 'src/user/dto/create-user.dto'; import { log } from 'console'; @Injectable() @@ -70,25 +69,14 @@ export class UserService { } // ----------------- Update user ----------------- \\ - async updateUser(id: string, name: string, email: string, role: Role) { - const updatedUser = await this.userModel.findById(id).exec(); - if (!updatedUser) { - throw new NotFoundException('User not found'); + async updateUser(id: string, user: UserDocument) { + if (user === null) { + throw new BadRequestException(`Updated User not supplied`); } - - if (name) { - updatedUser.name = name; - } - if (email) { - updatedUser.email = email; - } - if (role) { - updatedUser.role = role; - } - - const updated = await updatedUser.save(); - console.log(updated); - return updated; + return await this.userModel.findByIdAndUpdate(id, user, { + new: true, + runValidators: true + }).exec(); } // ----------------- Delete user ----------------- \\ From 4d260e488744f466e9ed709fc0708d1c6f0d545a Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Thu, 16 Nov 2023 14:50:46 -0800 Subject: [PATCH 05/11] return partial user --- src/user/services/user/user.service.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/user/services/user/user.service.ts b/src/user/services/user/user.service.ts index 7887528..3a72da4 100644 --- a/src/user/services/user/user.service.ts +++ b/src/user/services/user/user.service.ts @@ -9,7 +9,7 @@ import { } from '@nestjs/common'; import * as bcrypt from 'bcryptjs'; import { Model } from 'mongoose'; -import { Role, UserDocument } from '../../schemas/user.model'; +import { UserDocument } from '../../schemas/user.model'; import { InjectModel } from '@nestjs/mongoose'; import { log } from 'console'; @@ -64,8 +64,12 @@ export class UserService { if (!user) { throw new HttpException('User not found!', 404); } - - return user; + return { + id: user.id, + name: user.name, + email: user.email, + role: user.role, + } as UserDocument; } // ----------------- Update user ----------------- \\ From b9eb6ca0d8ef07b665457920700a39b787d7b7ea Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Thu, 16 Nov 2023 14:55:57 -0800 Subject: [PATCH 06/11] removed unused imports --- src/user/services/user/user.service.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/user/services/user/user.service.ts b/src/user/services/user/user.service.ts index 3a72da4..fac2478 100644 --- a/src/user/services/user/user.service.ts +++ b/src/user/services/user/user.service.ts @@ -4,14 +4,10 @@ import { HttpException, HttpStatus, Injectable, - NotFoundException, - UnauthorizedException, } from '@nestjs/common'; -import * as bcrypt from 'bcryptjs'; import { Model } from 'mongoose'; import { UserDocument } from '../../schemas/user.model'; import { InjectModel } from '@nestjs/mongoose'; -import { log } from 'console'; @Injectable() export class UserService { From 194ed8c6bf93c5e482995e836bd19ec1b47a54c6 Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Thu, 16 Nov 2023 14:57:40 -0800 Subject: [PATCH 07/11] removed unused req param --- src/user/controllers/user/user.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/user/controllers/user/user.controller.ts b/src/user/controllers/user/user.controller.ts index c6b99ce..2223ae9 100644 --- a/src/user/controllers/user/user.controller.ts +++ b/src/user/controllers/user/user.controller.ts @@ -46,7 +46,7 @@ export class UserController { // ----------------- Delete User --------------------------- // @Delete('remove/:id') - async adminDeleteUser(@Param('id') id: string, @Req() req: any) { + async adminDeleteUser(@Param('id') id: string) { await this.userService.removeUser(id); } From 5834ca530ce7228fde93168b3ad4d80b33539c68 Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Thu, 16 Nov 2023 16:14:11 -0800 Subject: [PATCH 08/11] npm install found a critical fix --- package-lock.json | 74 +++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/package-lock.json b/package-lock.json index dbb950d..1b2f7f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -326,12 +326,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", - "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", + "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.10", + "@babel/types": "^7.23.3", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -366,22 +366,22 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -473,9 +473,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -590,9 +590,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.14", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.14.tgz", - "integrity": "sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", + "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -779,33 +779,33 @@ } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", - "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", + "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.11", - "@babel/types": "^7.22.11", + "@babel/parser": "^7.23.3", + "@babel/types": "^7.23.3", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -823,13 +823,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", + "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { From ca0b4b09f866dbc4fff008ecd6cef61b57a2ff97 Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Thu, 16 Nov 2023 16:16:23 -0800 Subject: [PATCH 09/11] check for updated user returned from the model --- src/user/services/user/user.service.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/user/services/user/user.service.ts b/src/user/services/user/user.service.ts index fac2478..28429d1 100644 --- a/src/user/services/user/user.service.ts +++ b/src/user/services/user/user.service.ts @@ -70,13 +70,23 @@ export class UserService { // ----------------- Update user ----------------- \\ async updateUser(id: string, user: UserDocument) { + // we may want to check if id is a valid id, if you remove/add a character, it returns a 500 error if (user === null) { throw new BadRequestException(`Updated User not supplied`); } - return await this.userModel.findByIdAndUpdate(id, user, { + const updatedUser = await this.userModel.findByIdAndUpdate(id, user, { new: true, runValidators: true }).exec(); + if (!updatedUser) { + throw new HttpException(`User with id ${id} not found`, HttpStatus.NOT_FOUND); + } + return { + id: updatedUser.id, + name: updatedUser.name, + email: updatedUser.email, + role: updatedUser.role, + } as UserDocument; } // ----------------- Delete user ----------------- \\ From 1bc9672187fb7c5cabc18f17068107e400bd4f1e Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Fri, 17 Nov 2023 10:51:28 -0800 Subject: [PATCH 10/11] removed old testing --- .../controllers/user/user.controller.spec.ts | 71 ------------------- 1 file changed, 71 deletions(-) delete mode 100644 src/user/controllers/user/user.controller.spec.ts diff --git a/src/user/controllers/user/user.controller.spec.ts b/src/user/controllers/user/user.controller.spec.ts deleted file mode 100644 index 42d95da..0000000 --- a/src/user/controllers/user/user.controller.spec.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { UserController } from './user.controller'; -import { UserService } from '../../services/user/user.service'; -import { Role } from '../../../auth/schemas/userAuth.model'; - -type MockCreateUserDto = { - id: string; - email: string; - name: string; - password: string; - role: Role; -}; - -const mockUserService = { - newUser: jest.fn().mockResolvedValue('someId'), - updateUser: jest.fn().mockResolvedValue(null), - removeUser: jest.fn().mockResolvedValue(null), -}; - -describe('UserController', () => { - let controller: UserController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [UserController], - providers: [ - { - provide: UserService, - useValue: mockUserService, - }, - ], - }).compile(); - - controller = module.get(UserController); - jest.clearAllMocks(); - }); - - describe('Admin CRUD operations', () => { - const mockRequest = { user: { role: 'admin' } }; - const mockUser: MockCreateUserDto = { - id: 'testId', - name: 'test', - email: 'jeremy@gmail.com', - password: '1234567890', - role: Role.admin, - }; - - it('should add a user', async () => { - const result = await controller.adminAddUser(mockUser, mockRequest); - expect(result.id).toEqual('someId'); - expect(mockUserService.newUser).toHaveBeenCalledWith(mockUser); - }); - - it('should update a user', async () => { - const updatedName = 'updatedName'; - mockUser.name = updatedName; - - await controller.updateUser( - mockUser.id, - mockUser.name, - mockUser.email, - mockUser.role, - ); - }); - - it('should delete a user', async () => { - await controller.adminDeleteUser(mockUser.id, mockRequest); - expect(mockUserService.removeUser).toHaveBeenCalledWith(mockUser.id); - }); - }); -}); From d41715d023a01749cf5c2a68b1499ab8ba58f10f Mon Sep 17 00:00:00 2001 From: CourtneyHoppus Date: Fri, 17 Nov 2023 11:01:30 -0800 Subject: [PATCH 11/11] linted with prettier --- src/user/controllers/user/user.controller.ts | 1 - src/user/dto/update-user.dto.ts | 10 ++++------ src/user/services/user/user.service.ts | 16 ++++++++++------ 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/user/controllers/user/user.controller.ts b/src/user/controllers/user/user.controller.ts index 2223ae9..351383f 100644 --- a/src/user/controllers/user/user.controller.ts +++ b/src/user/controllers/user/user.controller.ts @@ -19,7 +19,6 @@ import { UpdateUserDto } from '../../dto/update-user.dto'; export class UserController { constructor(private readonly userService: UserService) {} - // ----------------- Get Users ----------------------------- \\ @Get('') async getAllUsers() { diff --git a/src/user/dto/update-user.dto.ts b/src/user/dto/update-user.dto.ts index 48c134b..7bdf627 100644 --- a/src/user/dto/update-user.dto.ts +++ b/src/user/dto/update-user.dto.ts @@ -1,22 +1,20 @@ import { IsEmpty, IsEnum, IsOptional, IsString } from 'class-validator'; import { Role } from '../schemas/user.model'; -export class UpdateUserDto { - +export class UpdateUserDto { @IsOptional() @IsString() readonly name: string; - + @IsOptional() @IsEmpty({ message: 'Cannot update email here' }) readonly email: string; - + @IsOptional() @IsEmpty({ message: 'Cannot update password here' }) readonly password: string; - + @IsOptional() @IsEnum(Role) readonly role: Role; - } diff --git a/src/user/services/user/user.service.ts b/src/user/services/user/user.service.ts index 28429d1..d04c020 100644 --- a/src/user/services/user/user.service.ts +++ b/src/user/services/user/user.service.ts @@ -15,7 +15,6 @@ export class UserService { // User defined in user.module.ts } - // ----------------- Get all users ----------------- \\ async getAllUsers(): Promise { //fix: Use serialization to mask password, so we don't have to transform the data @@ -74,12 +73,17 @@ export class UserService { if (user === null) { throw new BadRequestException(`Updated User not supplied`); } - const updatedUser = await this.userModel.findByIdAndUpdate(id, user, { - new: true, - runValidators: true - }).exec(); + const updatedUser = await this.userModel + .findByIdAndUpdate(id, user, { + new: true, + runValidators: true, + }) + .exec(); if (!updatedUser) { - throw new HttpException(`User with id ${id} not found`, HttpStatus.NOT_FOUND); + throw new HttpException( + `User with id ${id} not found`, + HttpStatus.NOT_FOUND, + ); } return { id: updatedUser.id,