# Code coverage report for application/auth/commands/LoginUserCommandHandler.js

# All files / application/auth/commands LoginUserCommandHandler.js

0% Statements 0/17
0% Branches 0/8
0% Functions 0/2
0% Lines 0/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61

     const bcrypt = require('bcryptjs');
    const JwtService = require('../../services/JwtService');

    const jwtService = new JwtService();

    /**
     * Login User Command Handler
     * Handles user login authentication
     */
    class LoginUserCommandHandler {
      constructor(prisma) {
        this.prisma = prisma;
      }

      /**
       * Execute login command
       * @param {LoginUserCommand} command
       * @returns {Promise<Object>} { user, token }
       */
      async handle(command) {
        const { email, password } = command;

        // Validáció
        if (!email || !password) {
          throw new Error('Email and password are required');
        }

        // User keresése email alapján
        const user = await this.prisma.user.findUnique({
          where: { email }
        });

        if (!user) {
          throw new Error('Invalid email or password');
        }

        // Jelszó ellenőrzése
        const isPasswordValid = await bcrypt.compare(password, user.password);

        if (!isPasswordValid) {
          throw new Error('Invalid email or password');
        }

        // JWT token generálása
        const token = jwtService.generateToken({
          userId: user.id,
          email: user.email
        });

        // Jelszót ne adjuk vissza
        const { password: _, ...userWithoutPassword } = user;

        return {
          user: userWithoutPassword,
          token
        };
      }
    }

    module.exports = LoginUserCommandHandler;