mirror of
https://github.com/hknsh/project-knedita.git
synced 2024-11-28 17:41:15 +00:00
feat: added delete user route
This commit is contained in:
parent
2f4dc87af5
commit
2f33a05eab
3 changed files with 21 additions and 12 deletions
0
src/users/dto/delete-user.dto.ts
Normal file
0
src/users/dto/delete-user.dto.ts
Normal file
|
@ -31,7 +31,6 @@ import { UpdateEmailDTO } from "./dto/update-email.dto";
|
||||||
import { UpdateNameDTO } from "./dto/update-name.dto";
|
import { UpdateNameDTO } from "./dto/update-name.dto";
|
||||||
import { UpdatePasswordDTO } from "./dto/update-password.dto";
|
import { UpdatePasswordDTO } from "./dto/update-password.dto";
|
||||||
import UploadImageSchema from "./schemas/upload-image.schema";
|
import UploadImageSchema from "./schemas/upload-image.schema";
|
||||||
import { User } from "./types/user.type";
|
|
||||||
import { UserService } from "./users.service";
|
import { UserService } from "./users.service";
|
||||||
|
|
||||||
@ApiTags("Users")
|
@ApiTags("Users")
|
||||||
|
@ -78,14 +77,14 @@ export class UserController {
|
||||||
})
|
})
|
||||||
@ApiBearerAuth("JWT")
|
@ApiBearerAuth("JWT")
|
||||||
updateName(@Body() { displayName, username }: UpdateNameDTO, @Request() req) {
|
updateName(@Body() { displayName, username }: UpdateNameDTO, @Request() req) {
|
||||||
return this.userService.updateName(req.user as User, username, displayName);
|
return this.userService.updateName(req.user.id, username, displayName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Patch("/email")
|
@Patch("/email")
|
||||||
@ApiOperation({ summary: "Updates the email of a logged user" })
|
@ApiOperation({ summary: "Updates the email of a logged user" })
|
||||||
@ApiBearerAuth("JWT")
|
@ApiBearerAuth("JWT")
|
||||||
updateEmail(@Body() body: UpdateEmailDTO, @Request() req) {
|
updateEmail(@Body() body: UpdateEmailDTO, @Request() req) {
|
||||||
return this.userService.updateEmail(req.user as User, body.email);
|
return this.userService.updateEmail(req.user.id, body.email);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Patch("/password")
|
@Patch("/password")
|
||||||
|
@ -96,7 +95,7 @@ export class UserController {
|
||||||
@Request() req,
|
@Request() req,
|
||||||
) {
|
) {
|
||||||
return this.userService.updatePassword(
|
return this.userService.updatePassword(
|
||||||
req.user as User,
|
req.user.id,
|
||||||
old_password,
|
old_password,
|
||||||
new_password,
|
new_password,
|
||||||
);
|
);
|
||||||
|
@ -118,12 +117,14 @@ export class UserController {
|
||||||
image: File,
|
image: File,
|
||||||
@Request() req,
|
@Request() req,
|
||||||
) {
|
) {
|
||||||
return this.userService.uploadImage(req.user, image);
|
return this.userService.uploadImage(req.user.id, image);
|
||||||
}
|
}
|
||||||
|
|
||||||
// DELETE
|
// DELETE
|
||||||
@Delete()
|
@Delete()
|
||||||
@ApiOperation({ summary: "Deletes the account of a logged user" })
|
@ApiOperation({ summary: "Deletes the account of a logged user" })
|
||||||
@ApiBearerAuth("JWT")
|
@ApiBearerAuth("JWT")
|
||||||
remove() {}
|
delete(@Request() req) {
|
||||||
|
return this.userService.delete(req.user.id)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,12 +169,10 @@ export class UserService {
|
||||||
}
|
}
|
||||||
|
|
||||||
async updatePassword(
|
async updatePassword(
|
||||||
loggedUser: User,
|
id: string,
|
||||||
old_password: string,
|
old_password: string,
|
||||||
new_password: string,
|
new_password: string,
|
||||||
): Promise<{ message: string }> {
|
): Promise<{ message: string }> {
|
||||||
const id = loggedUser.id;
|
|
||||||
|
|
||||||
const user = await this.prisma.user.findFirst({
|
const user = await this.prisma.user.findFirst({
|
||||||
where: { id },
|
where: { id },
|
||||||
});
|
});
|
||||||
|
@ -200,15 +198,15 @@ export class UserService {
|
||||||
return { message: "Password updated successfully" };
|
return { message: "Password updated successfully" };
|
||||||
}
|
}
|
||||||
|
|
||||||
async uploadImage(authenticatedUser: User, image: File) {
|
async uploadImage(id: string, image: File) {
|
||||||
const url = await this.s3.uploadImageToMinio(
|
const url = await this.s3.uploadImageToMinio(
|
||||||
authenticatedUser.id,
|
id,
|
||||||
image.buffer,
|
image.buffer,
|
||||||
);
|
);
|
||||||
|
|
||||||
return await this.prisma.user.update({
|
return await this.prisma.user.update({
|
||||||
where: {
|
where: {
|
||||||
id: authenticatedUser.id,
|
id,
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
profileImage: url,
|
profileImage: url,
|
||||||
|
@ -218,4 +216,14 @@ export class UserService {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async delete(id: string) {
|
||||||
|
// TODO: Add validation for safety (like e-mail confirmation or password)
|
||||||
|
try {
|
||||||
|
await this.prisma.user.deleteMany({where: {id}});;
|
||||||
|
return { message: "User deleted"}
|
||||||
|
} catch (e) {
|
||||||
|
throw new BadRequestException('Error while trying to delete user')
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue