diff --git a/database/seeders/DatabaseSeeder.ts b/database/seeders/DatabaseSeeder.ts
index 5b2ead1fd087a6c0532cc2341ad55ad919a1fbc6..437d04f467592e5d7d15752f052706a99d5f53ec 100644
--- a/database/seeders/DatabaseSeeder.ts
+++ b/database/seeders/DatabaseSeeder.ts
@@ -5,25 +5,53 @@ import { Category } from '../../src/category/category.entity';
 import { Room } from '../../src/room/room.entity';
 import * as bcrypt from 'bcrypt';
 import { UserService } from '../../src/user/user.service';
+import { fakerDE as faker } from '@faker-js/faker';
 
 export class DatabaseSeeder extends Seeder {
   async run(em: EntityManager): Promise<void> {
     const password = await bcrypt.hash('12345', UserService.SALT_OR_ROUNDS);
 
-    em.create(User, {
+    const user = em.create(User, {
       email: 'test@example.com',
       name: 'Test User',
-      organization: 'Test Organization',
+      organization: faker.company.name(),
       password,
       role: 'admin',
     });
 
+    this.generateRoomsFor(em, user);
+
+    for (let i = 0; i < 2; i++) {
+      this.generateUser(em, 'admin', password);
+    }
+
+    for (let i = 0; i < 10; i++) {
+      this.generateUser(em, 'user', password);
+    }
+  }
+
+  generateUser(em: EntityManager, role: 'user' | 'admin', password: string) {
+    const firstName = faker.person.firstName();
+    const lastName = faker.person.lastName();
+
+    const user = em.create(User, {
+      email: faker.internet.email({ firstName, lastName }),
+      name: `${firstName} ${lastName}`,
+      organization: faker.company.name(),
+      password,
+      role,
+    });
+
+    this.generateRoomsFor(em, user);
+  }
+
+  generateRoomsFor(em: EntityManager, user: User) {
     const categories = ['Mathe', 'Deutsch', 'Physik', 'Religion'];
 
     for (const category of categories) {
       const createdCategory = em.create(Category, {
         name: category,
-        owner: em.getReference(User, 1),
+        owner: user,
       });
 
       const rooms = Math.floor(Math.random() * 7);
diff --git a/package-lock.json b/package-lock.json
index 3ac021aa1a2b573c882327f1017f84213b36e5f9..ee19bd4a43f3c2a54a54022160de7da976546604 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -35,6 +35,7 @@
         "socket.io": "^4.6.2"
       },
       "devDependencies": {
+        "@faker-js/faker": "^8.0.2",
         "@mikro-orm/cli": "^5.7.11",
         "@mikro-orm/seeder": "^5.7.11",
         "@nestjs/cli": "^9.5.0",
@@ -844,13 +845,19 @@
       }
     },
     "node_modules/@faker-js/faker": {
-      "version": "7.6.0",
-      "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz",
-      "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==",
-      "devOptional": true,
+      "version": "8.0.2",
+      "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.0.2.tgz",
+      "integrity": "sha512-Uo3pGspElQW91PCvKSIAXoEgAUlRnH29sX2/p89kg7sP1m2PzCufHINd0FhTXQf6DYGiUlVncdSPa2F9wxed2A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/fakerjs"
+        }
+      ],
       "engines": {
-        "node": ">=14.0.0",
-        "npm": ">=6.0.0"
+        "node": "^14.17.0 || ^16.13.0 || >=18.0.0",
+        "npm": ">=6.14.13"
       }
     },
     "node_modules/@humanwhocodes/config-array": {
@@ -1671,6 +1678,16 @@
         "@mikro-orm/core": "^5.0.0"
       }
     },
+    "node_modules/@mikro-orm/seeder/node_modules/@faker-js/faker": {
+      "version": "7.6.0",
+      "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz",
+      "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==",
+      "devOptional": true,
+      "engines": {
+        "node": ">=14.0.0",
+        "npm": ">=6.0.0"
+      }
+    },
     "node_modules/@nestjs/cli": {
       "version": "9.5.0",
       "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-9.5.0.tgz",
diff --git a/package.json b/package.json
index 193cb97fbdbb7c8c200c1d7a810d1d82b6a583d8..c649535a3bcd9f7d226701db88214a3f064625b5 100644
--- a/package.json
+++ b/package.json
@@ -47,6 +47,7 @@
     "socket.io": "^4.6.2"
   },
   "devDependencies": {
+    "@faker-js/faker": "^8.0.2",
     "@mikro-orm/cli": "^5.7.11",
     "@mikro-orm/seeder": "^5.7.11",
     "@nestjs/cli": "^9.5.0",
diff --git a/src/user/user.controller.ts b/src/user/user.controller.ts
index f4318a6716823d61ec72984c56b0cb584f01fbd2..682b1af4da078849f9f7847714b327525af4ffe0 100644
--- a/src/user/user.controller.ts
+++ b/src/user/user.controller.ts
@@ -1,7 +1,9 @@
 import {
   Body,
   Controller,
+  Delete,
   Get,
+  Param,
   Post,
   Put,
   UnprocessableEntityException,
@@ -46,6 +48,14 @@ export class UserController {
     return this.userService.changeUserData(data);
   }
 
+  @UseGuards(AuthGuard, AdminGuard)
+  @Delete('/:userId')
+  public async delete(@Param('userId') userId: number) {
+    await this.userService.delete(userId);
+
+    return { message: 'success' };
+  }
+
   @UseGuards(AuthGuard)
   @Post('changePassword')
   public async changePassword(@Body() data: ChangePassword) {
diff --git a/src/user/user.service.ts b/src/user/user.service.ts
index 8953b4b4412af8ea73b0f559f6409f47a117fa0b..028452e6dd8f364668807d411899c4a64ef0fe31 100644
--- a/src/user/user.service.ts
+++ b/src/user/user.service.ts
@@ -52,6 +52,11 @@ export class UserService {
   }
 
   public async delete(id: number): Promise<void> {
+    const user = await this.repository.findOne({ id });
+
+    if (!user) {
+      throw new Error('User not found');
+    }
     await this.repository.nativeDelete({ id });
   }