diff --git a/backend/src/main/java/com/alttd/altitudeweb/services/forms/DiscordAppeal.java b/backend/src/main/java/com/alttd/altitudeweb/services/forms/DiscordAppeal.java index 86475c4..74277a4 100644 --- a/backend/src/main/java/com/alttd/altitudeweb/services/forms/DiscordAppeal.java +++ b/backend/src/main/java/com/alttd/altitudeweb/services/forms/DiscordAppeal.java @@ -2,6 +2,7 @@ package com.alttd.altitudeweb.services.forms; import com.alttd.altitudeweb.controllers.data_from_auth.AuthenticatedUuid; import com.alttd.altitudeweb.database.Databases; +import com.alttd.altitudeweb.database.luckperms.UUIDUsernameMapper; import com.alttd.altitudeweb.database.web_db.forms.DiscordAppealMapper; import com.alttd.altitudeweb.database.web_db.mail.EmailVerification; import com.alttd.altitudeweb.database.web_db.mail.EmailVerificationMapper; @@ -56,11 +57,11 @@ public class DiscordAppeal { } BannedUser bannedUser = join.get(); - Optional uuid = authenticatedUuid.tryGetAuthenticatedUserUuid(); - if (uuid.isEmpty()) { + Optional optionalUUID = authenticatedUuid.tryGetAuthenticatedUserUuid(); + if (optionalUUID.isEmpty()) { throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "User not authenticated"); } - + UUID uuid = optionalUUID.get(); CompletableFuture appealCompletableFuture = new CompletableFuture<>(); Connection.getConnection(Databases.DEFAULT) @@ -68,7 +69,7 @@ public class DiscordAppeal { log.debug("Loading history by id"); try { com.alttd.altitudeweb.database.web_db.forms.DiscordAppeal discordAppealRecord = discordAppealDtoToDiscordAppealMapper - .map(discordAppealDto, uuid.get(), bannedUser.name()); + .map(discordAppealDto, uuid, bannedUser.name()); sqlSession.getMapper(DiscordAppealMapper.class).createDiscordAppeal(discordAppealRecord); appealCompletableFuture.complete(discordAppealRecord); } catch (Exception e) { @@ -104,7 +105,8 @@ public class DiscordAppeal { throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, "Failed to send appeal to Discord"); } //TODO verify mail - appealMail.sendAppealNotification(discordAppeal); + String username = getUsername(uuid); + appealMail.sendAppealNotification(discordAppeal, username); Connection.getConnection(Databases.DEFAULT) .runQuery(sqlSession -> { @@ -117,4 +119,20 @@ public class DiscordAppeal { "Your appeal has been submitted. You will be notified when it has been reviewed.", true); } + + private String getUsername(UUID uuid) { + CompletableFuture usernameFuture = new CompletableFuture<>(); + Connection.getConnection(Databases.LUCK_PERMS) + .runQuery(sqlSession -> { + log.debug("Loading username for uuid {}", uuid); + try { + String username = sqlSession.getMapper(UUIDUsernameMapper.class).getUsernameFromUUID(uuid.toString()); + usernameFuture.complete(username); + } catch (Exception e) { + log.error("Failed to load username for uuid {}", uuid, e); + usernameFuture.completeExceptionally(e); + } + }); + return usernameFuture.join(); + } } diff --git a/backend/src/main/java/com/alttd/altitudeweb/services/mail/AppealMail.java b/backend/src/main/java/com/alttd/altitudeweb/services/mail/AppealMail.java index 37e0ea8..cb7a5b7 100644 --- a/backend/src/main/java/com/alttd/altitudeweb/services/mail/AppealMail.java +++ b/backend/src/main/java/com/alttd/altitudeweb/services/mail/AppealMail.java @@ -35,9 +35,9 @@ public class AppealMail { * * @param appeal The appeal object containing all necessary information */ - public void sendAppealNotification(DiscordAppeal appeal) { + public void sendAppealNotification(DiscordAppeal appeal, String username) { try { - sendEmailToAppealsTeam(appeal); + sendEmailToAppealsTeam(appeal, username); log.info("Discord Appeal notification emails sent successfully for appeal ID: {}", appeal.id()); } catch (Exception e) { @@ -81,7 +81,7 @@ public class AppealMail { mailSender.send(message); } - private void sendEmailToAppealsTeam(DiscordAppeal appeal) throws MessagingException { + private void sendEmailToAppealsTeam(DiscordAppeal appeal, String username) throws MessagingException { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = getAppealMimeMessageHelper(appeal, message); @@ -90,6 +90,8 @@ public class AppealMail { context.setVariable("createdAt", appeal.createdAt() .atZone(ZoneId.of("UTC")) .format(DateTimeFormatter.ofPattern("yyyy MMMM dd hh:mm a '(UTC)'"))); + + context.setVariable("minecraftName", username); String content = templateEngine.process("discord-appeal-email", context); helper.setText(content, true); diff --git a/backend/src/main/resources/templates/discord-appeal-email.html b/backend/src/main/resources/templates/discord-appeal-email.html index 06e2298..1deb52a 100644 --- a/backend/src/main/resources/templates/discord-appeal-email.html +++ b/backend/src/main/resources/templates/discord-appeal-email.html @@ -102,8 +102,9 @@

User information

    -
  • Username: username
  • +
  • Discord Username: dc username
  • UUID: uuid
  • +
  • Minecraft Username: mc username
  • Email: email
  • Submitted at: date