Skip to content
Snippets Groups Projects
Commit 5d93f2f0 authored by Jérémie BRISON's avatar Jérémie BRISON Committed by Hugo SUBTIL
Browse files

feat(user) : can delete an account + delete structure if no owners

parent ac18ce82
No related branches found
No related tags found
2 merge requests!38Recette,!37Dev
import { HttpModule, Module } from '@nestjs/common';
import { forwardRef, HttpModule, Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { TempUserModule } from '../temp-user/temp-user.module';
import { MailerModule } from '../mailer/mailer.module';
......@@ -19,7 +19,7 @@ import { StructureType, StructureTypeSchema } from './structure-type/structure-t
]),
HttpModule,
MailerModule,
UsersModule,
forwardRef(() => UsersModule),
TempUserModule,
],
controllers: [StructuresController, StructureTypeController],
......
import { Body, Controller, Get, Param, Post, Query, Request, UseGuards } from '@nestjs/common';
import { Body, Controller, Delete, Get, Param, Post, Query, Req, Request, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiOperation, ApiParam, ApiResponse } from '@nestjs/swagger';
import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
import { PasswordChangeDto } from './dto/change-password.dto';
......@@ -7,11 +7,15 @@ import { CreateUserDto } from './dto/create-user.dto';
import { PasswordResetApplyDto } from './dto/reset-password-apply.dto';
import { PasswordResetDto } from './dto/reset-password.dto';
import { UsersService } from './users.service';
import { StructuresService } from '../structures/services/structures.service';
import { Types } from 'mongoose';
import { AuthService } from '../auth/auth.service';
import { JwtService } from '@nestjs/jwt';
import { TempUserService } from '../temp-user/temp-user.service';
@Controller('users')
export class UsersController {
constructor(private usersService: UsersService, private tempUserService: TempUserService) {}
constructor(private usersService: UsersService, private structureService: StructuresService, private tempUserService: TempUserService) {}
@UseGuards(JwtAuthGuard)
@ApiBearerAuth('JWT')
......@@ -97,4 +101,18 @@ export class UsersController {
public async verifyUserExist(@Request() req, @Body() email: { newMail: string }) {
return this.usersService.verifyUserExist(email.newMail);
}
@Delete()
@UseGuards(JwtAuthGuard)
public async delete(@Req() req) {
const user = await this.usersService.deleteOne(req.user.email);
user.structuresLink.forEach((structureId) => {
this.usersService.isStructureClaimed(structureId.toHexString()).then((userFound) => {
if (!userFound) {
this.structureService.deleteOne(structureId.toHexString());
}
});
});
return user;
}
}
import { HttpModule, Module } from '@nestjs/common';
import { forwardRef, HttpModule, Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
import { User, UserSchema } from './schemas/user.schema';
import { MailerModule } from '../mailer/mailer.module';
import { StructuresModule } from '../structures/structures.module';
import { TempUserModule } from '../temp-user/temp-user.module';
@Module({
imports: [
MongooseModule.forFeature([{ name: User.name, schema: UserSchema }]),
MailerModule,
forwardRef(() => StructuresModule),
HttpModule,
TempUserModule,
],
......
......@@ -471,6 +471,14 @@ export class UsersService {
return user ? true : false;
}
public async deleteOne(email: string): Promise<User> {
const user = await this.findOne(email);
if (!user) {
throw new HttpException('Invalid user email', HttpStatus.BAD_REQUEST);
}
return user.deleteOne();
}
public async getStructureOwnersMails(structureId: string, emailUser: string): Promise<string[]> {
const users = await this.userModel
.find({ structuresLink: Types.ObjectId(structureId), email: { $ne: emailUser } })
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment