diff --git a/src/structures/structures.module.ts b/src/structures/structures.module.ts
index 0ec48d708808d0a1a3fdf495a037c99ba14bb9cf..51ec4d11ca7c6d9640944f69b156cfaac87f1aa3 100644
--- a/src/structures/structures.module.ts
+++ b/src/structures/structures.module.ts
@@ -1,4 +1,4 @@
-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],
diff --git a/src/users/users.controller.ts b/src/users/users.controller.ts
index a16fca1915a89d913e885dd7772e321040f75ff9..2add23768502333ed2facb29b8e65badfe9b0293 100644
--- a/src/users/users.controller.ts
+++ b/src/users/users.controller.ts
@@ -1,4 +1,4 @@
-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;
+  }
 }
diff --git a/src/users/users.module.ts b/src/users/users.module.ts
index 2741bbd41a798f060a82c203249b9064dabbaa9b..6a481a9e123a681074b40daac020f3b9244c2d65 100644
--- a/src/users/users.module.ts
+++ b/src/users/users.module.ts
@@ -1,15 +1,16 @@
-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,
   ],
diff --git a/src/users/users.service.ts b/src/users/users.service.ts
index 9cc810695a5c9ec26007d68a0bad7f4b9f3269e5..e9bf74b9b9ae7a5d53491e7f2394d0e4a79b8f52 100644
--- a/src/users/users.service.ts
+++ b/src/users/users.service.ts
@@ -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 } })