bug6105: showing takedown notice dialog, sending e-mail

This commit is contained in:
Axel Uhl
2025-04-29 18:18:09 +02:00
parent 86e0047094
commit 139fdd05e5
25 changed files with 246 additions and 47 deletions
@@ -1,2 +1,4 @@
emailValidationSubject=Mail Validation
emailValidationMessage=Please click on the link below to validate your e-mail address for user {0}.
takedownRequestConfirmation=Dear {0},\nan e-mail with your media take-down request has been sent to {1}. The message we sent on your behalf was:\n\n{2}
takedownRequestForImageInTagColumn=Tag column in race board, {0}
@@ -1,2 +1,4 @@
emailValidationSubject=Mail-Validierung
emailValidationMessage=Bitte den folgenden Link benutzen, um die e-Mail Adresse für den Benutzer {0} zu validieren.
emailValidationMessage=Bitte den folgenden Link benutzen, um die e-Mail Adresse für den Benutzer {0} zu validieren.
takedownRequestConfirmation=Lieber {0},\neine e-Mail mit dem Antrag zur Löschung von Medieninhalten wurde an die Adresse {1} gesendet. Die Nachricht lautet:\n\n{2}
takedownRequestForImageInTagColumn=Kommentarspalte im "Race Board", {0}
@@ -25,6 +25,7 @@ import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.http.HttpHeaderUtil;
import com.sap.sse.common.mail.MailException;
import com.sap.sse.common.media.TakedownNoticeRequestContext;
import com.sap.sse.replication.ReplicableWithObjectInputStream;
import com.sap.sse.security.impl.ReplicableSecurityService;
import com.sap.sse.security.impl.SecurityServiceImpl;
@@ -910,4 +911,6 @@ public interface SecurityService extends ReplicableWithObjectInputStream<Replica
* will establish (if not yet locked) or extend the locking duration for the combination.
*/
boolean isClientIPLockedForBearerTokenAuthentication(String clientIP);
void fileTakedownNotice(TakedownNoticeRequestContext takedownNoticeRequestContext) throws MailException;
}
@@ -96,6 +96,7 @@ import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.http.HttpHeaderUtil;
import com.sap.sse.common.mail.MailException;
import com.sap.sse.common.media.TakedownNoticeRequestContext;
import com.sap.sse.concurrent.LockUtil;
import com.sap.sse.concurrent.NamedReentrantReadWriteLock;
import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
@@ -3392,4 +3393,39 @@ implements ReplicableSecurityService, ClearStateTestSupport {
public void unlockSubscriptionsForUser(final User user) {
LockUtil.unlockAfterWrite(subscriptionLocksForUsers.computeIfAbsent(user, u->new NamedReentrantReadWriteLock("Subscriptions lock for user "+user.getName(), /* fair */ false)));
}
@Override
public void fileTakedownNotice(TakedownNoticeRequestContext takedownNoticeRequestContext) throws MailException {
final String SUPPORT_MAIL_ADDRESS = "support@sapsailing.com";
final User user = getUserByName(takedownNoticeRequestContext.getUsername());
final String email = user.getEmail();
final StringBuilder sb = new StringBuilder()
.append("User ")
.append(takedownNoticeRequestContext.getUsername())
.append(" with e-mail ")
.append(email)
.append(" requests that the media with URL ")
.append(takedownNoticeRequestContext.getContentUrl())
.append(" used in context ")
.append(messages.get(Locale.ENGLISH, takedownNoticeRequestContext.getContextDescriptionMessageKey(), takedownNoticeRequestContext.getContextDescriptionMessageParameter()))
.append(" be removed from the site. The user provides the following comment:\n\n")
.append(" \"")
.append(takedownNoticeRequestContext.getReportingUserComment())
.append("\"\n\n")
.append("The claim is of nature ")
.append(takedownNoticeRequestContext.getNatureOfClaim())
.append(".");
if (!Util.isEmpty(takedownNoticeRequestContext.getSupportingURLs())) {
sb.append("\n\nThe user provided the following additional URLs to substantiate or prove the claim:\n");
for (final String url : takedownNoticeRequestContext.getSupportingURLs()) {
sb.append(" - ");
sb.append(url);
sb.append("\n");
}
}
final String message = sb.toString();
getMailService().sendMail(SUPPORT_MAIL_ADDRESS, "Media Take-Down Request", message);
getMailService().sendMail(email, "Media Take-Down Request Confirmation", messages.get(user.getLocaleOrDefault(), "takedownRequestConfirmation",
Util.hasLength(user.getFullName().trim()) ? user.getFullName() : user.getName(), SUPPORT_MAIL_ADDRESS, message));
}
}