Files
SerpentRace/SerpentRace_Backend/dist/Application/User/commands/VerifyEmailCommandHandler.js
T

41 lines
1.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.VerifyEmailCommandHandler = void 0;
const TokenService_1 = require("../../Services/TokenService");
const UserAggregate_1 = require("../../../Domain/User/UserAggregate");
const Logger_1 = require("../../Services/Logger");
class VerifyEmailCommandHandler {
constructor(userRepo) {
this.userRepo = userRepo;
}
async execute(cmd) {
try {
if (!cmd.token) {
throw new Error('Verification token is required');
}
// Hash the token to compare with stored value
const hashedToken = await TokenService_1.TokenService.hashToken(cmd.token);
// Find user with this verification token
const user = await this.userRepo.findByToken(hashedToken);
if (!user) {
throw new Error('Invalid or expired verification token');
}
// Check if token is expired
if (user.TokenExpires && user.TokenExpires < new Date()) {
throw new Error('Verification token has expired');
}
// Update user verification status
user.token = null;
user.TokenExpires = null;
user.state = UserAggregate_1.UserState.VERIFIED_REGULAR;
await this.userRepo.update(user.id, user);
return true;
}
catch (error) {
(0, Logger_1.logError)('Email verification error', error instanceof Error ? error : new Error(String(error)));
throw error;
}
}
}
exports.VerifyEmailCommandHandler = VerifyEmailCommandHandler;
//# sourceMappingURL=VerifyEmailCommandHandler.js.map