Add the ability to rollback created punishments via the audit log
This commit is contained in:
parent
2502f4a1b2
commit
24a73f72cf
|
@ -3,6 +3,9 @@ package net.frozenorb.apiv3.auditLog;
|
||||||
import com.mongodb.async.SingleResultCallback;
|
import com.mongodb.async.SingleResultCallback;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.frozenorb.apiv3.model.AuditLogEntry;
|
import net.frozenorb.apiv3.model.AuditLogEntry;
|
||||||
|
import net.frozenorb.apiv3.model.Punishment;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
public enum AuditLogActionType {
|
public enum AuditLogActionType {
|
||||||
|
|
||||||
|
@ -26,7 +29,28 @@ public enum AuditLogActionType {
|
||||||
NOTIFICATION_TEMPLATE_CREATE(false),
|
NOTIFICATION_TEMPLATE_CREATE(false),
|
||||||
NOTIFICATION_TEMPLATE_UPDATE(false),
|
NOTIFICATION_TEMPLATE_UPDATE(false),
|
||||||
NOTIFICATION_TEMPLATE_DELETE(false),
|
NOTIFICATION_TEMPLATE_DELETE(false),
|
||||||
PUNISHMENT_CREATE(false),
|
PUNISHMENT_CREATE(true) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reverse(AuditLogEntry entry, SingleResultCallback<Void> callback) {
|
||||||
|
String punishmentId = (String) entry.getMetadata().get("punishmentId");
|
||||||
|
|
||||||
|
Punishment.findById(punishmentId, (punishment, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
callback.onResult(null, error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (punishment == null || !punishment.isActive()) {
|
||||||
|
callback.onResult(null, null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
punishment.delete(null, "Removed via audit log reversal at " + Instant.now().toString() + ".", callback);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
PUNISHMENT_UPDATE(false),
|
PUNISHMENT_UPDATE(false),
|
||||||
PUNISHMENT_DELETE(false),
|
PUNISHMENT_DELETE(false),
|
||||||
RANK_CREATE(false),
|
RANK_CREATE(false),
|
||||||
|
|
Loading…
Reference in New Issue