Finish audit log redux - completes #5
This commit is contained in:
parent
d8b66742de
commit
1b20362f4d
@ -39,6 +39,7 @@ import net.frozenorb.apiv3.handler.MetricsHandler;
|
|||||||
import net.frozenorb.apiv3.model.*;
|
import net.frozenorb.apiv3.model.*;
|
||||||
import net.frozenorb.apiv3.route.GETDumpsType;
|
import net.frozenorb.apiv3.route.GETDumpsType;
|
||||||
import net.frozenorb.apiv3.route.GETWhoAmI;
|
import net.frozenorb.apiv3.route.GETWhoAmI;
|
||||||
|
import net.frozenorb.apiv3.route.auditLog.DELETEAuditLogId;
|
||||||
import net.frozenorb.apiv3.route.auditLog.GETAuditLog;
|
import net.frozenorb.apiv3.route.auditLog.GETAuditLog;
|
||||||
import net.frozenorb.apiv3.route.auditLog.POSTAuditLog;
|
import net.frozenorb.apiv3.route.auditLog.POSTAuditLog;
|
||||||
import net.frozenorb.apiv3.route.bannedAsns.DELETEBannedAsnsId;
|
import net.frozenorb.apiv3.route.bannedAsns.DELETEBannedAsnsId;
|
||||||
@ -244,6 +245,7 @@ public final class APIv3 extends AbstractVerticle {
|
|||||||
|
|
||||||
http.get("/auditLog").handler(new GETAuditLog());
|
http.get("/auditLog").handler(new GETAuditLog());
|
||||||
http.post("/auditLog").handler(new POSTAuditLog());
|
http.post("/auditLog").handler(new POSTAuditLog());
|
||||||
|
http.delete("/auditLog/:id").blockingHandler(new DELETEAuditLogId());
|
||||||
|
|
||||||
http.get("/bannedAsns/:id").handler(new GETBannedAsnsId());
|
http.get("/bannedAsns/:id").handler(new GETBannedAsnsId());
|
||||||
http.get("/bannedAsns").handler(new GETBannedAsns());
|
http.get("/bannedAsns").handler(new GETBannedAsns());
|
||||||
@ -265,11 +267,13 @@ public final class APIv3 extends AbstractVerticle {
|
|||||||
http.get("/grants/:id").handler(new GETGrantsId());
|
http.get("/grants/:id").handler(new GETGrantsId());
|
||||||
http.get("/grants").handler(new GETGrants());
|
http.get("/grants").handler(new GETGrants());
|
||||||
http.post("/grants").blockingHandler(new POSTGrants(), false);
|
http.post("/grants").blockingHandler(new POSTGrants(), false);
|
||||||
|
//http.put("/grants/:id").blockingHandler(new PUTGrantsId(), false);
|
||||||
http.delete("/grants/:id").blockingHandler(new DELETEGrantsId(), false);
|
http.delete("/grants/:id").blockingHandler(new DELETEGrantsId(), false);
|
||||||
|
|
||||||
http.get("/ipBans/:id").handler(new GETIpBansId());
|
http.get("/ipBans/:id").handler(new GETIpBansId());
|
||||||
http.get("/ipBans").handler(new GETIpBans());
|
http.get("/ipBans").handler(new GETIpBans());
|
||||||
http.post("/ipBans").blockingHandler(new POSTIpBans(), false);
|
http.post("/ipBans").blockingHandler(new POSTIpBans(), false);
|
||||||
|
//http.put("/ipBans/:id").blockingHandler(new PUTIpBansId(), false);
|
||||||
http.delete("/ipBans/:id").blockingHandler(new DELETEIpBansId(), false);
|
http.delete("/ipBans/:id").blockingHandler(new DELETEIpBansId(), false);
|
||||||
|
|
||||||
http.get("/ipIntel/:id").handler(new GETIpInteld());
|
http.get("/ipIntel/:id").handler(new GETIpInteld());
|
||||||
@ -285,6 +289,7 @@ public final class APIv3 extends AbstractVerticle {
|
|||||||
http.get("/punishments/:id").handler(new GETPunishmentsId());
|
http.get("/punishments/:id").handler(new GETPunishmentsId());
|
||||||
http.get("/punishments").handler(new GETPunishments());
|
http.get("/punishments").handler(new GETPunishments());
|
||||||
http.post("/punishments").blockingHandler(new POSTPunishments(), false);
|
http.post("/punishments").blockingHandler(new POSTPunishments(), false);
|
||||||
|
//http.put("/punishments/:id").blockingHandler(new PUTPunishmentsId(), false);
|
||||||
http.delete("/punishments/:id").blockingHandler(new DELETEPunishmentsId(), false);
|
http.delete("/punishments/:id").blockingHandler(new DELETEPunishmentsId(), false);
|
||||||
http.delete("/users/:id/activePunishment").blockingHandler(new DELETEUsersIdActivePunishment(), false);
|
http.delete("/users/:id/activePunishment").blockingHandler(new DELETEUsersIdActivePunishment(), false);
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import net.frozenorb.apiv3.model.AuditLogEntry;
|
|||||||
|
|
||||||
public enum AuditLogActionType {
|
public enum AuditLogActionType {
|
||||||
|
|
||||||
|
AUDIT_LOG_REVERT(false),
|
||||||
BANNED_ASN_CREATE(false),
|
BANNED_ASN_CREATE(false),
|
||||||
BANNED_ASN_UPDATE(false),
|
BANNED_ASN_UPDATE(false),
|
||||||
BANNED_ASN_DELETE(false),
|
BANNED_ASN_DELETE(false),
|
||||||
@ -36,6 +37,7 @@ public enum AuditLogActionType {
|
|||||||
USER_CHANGE_PASSWORD(false),
|
USER_CHANGE_PASSWORD(false),
|
||||||
USER_PASSWORD_RESET(false),
|
USER_PASSWORD_RESET(false),
|
||||||
USER_REGISTER(false),
|
USER_REGISTER(false),
|
||||||
|
USER_CONFIRM_EMAIL(false),
|
||||||
USER_SETUP_TOTP(false),
|
USER_SETUP_TOTP(false),
|
||||||
USER_VERIFY_TOTP(false);
|
USER_VERIFY_TOTP(false);
|
||||||
|
|
||||||
@ -45,7 +47,7 @@ public enum AuditLogActionType {
|
|||||||
this.reversible = reversible;
|
this.reversible = reversible;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void revert(AuditLogEntry entry, SingleResultCallback<Boolean> callback) {
|
public void reverse(AuditLogEntry entry, SingleResultCallback<Void> callback) {
|
||||||
callback.onResult(null, new UnsupportedOperationException());
|
callback.onResult(null, new UnsupportedOperationException());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,6 +41,10 @@ public final class AuditLogEntry {
|
|||||||
auditLogCollection.find(query).sort(new Document("performedAt", -1)).skip(skip).limit(pageSize).into(new LinkedList<>(), callback);
|
auditLogCollection.find(query).sort(new Document("performedAt", -1)).skip(skip).limit(pageSize).into(new LinkedList<>(), callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void findById(String id, SingleResultCallback<AuditLogEntry> callback) {
|
||||||
|
auditLogCollection.find(new Document("_id", id)).first(callback);
|
||||||
|
}
|
||||||
|
|
||||||
public static void find(Document query, SingleResultCallback<List<AuditLogEntry>> callback) {
|
public static void find(Document query, SingleResultCallback<List<AuditLogEntry>> callback) {
|
||||||
auditLogCollection.find(query).into(new LinkedList<>(), callback);
|
auditLogCollection.find(query).into(new LinkedList<>(), callback);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
package net.frozenorb.apiv3.route.auditLog;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import io.vertx.core.Handler;
|
||||||
|
import io.vertx.core.json.JsonObject;
|
||||||
|
import io.vertx.ext.web.RoutingContext;
|
||||||
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
|
import net.frozenorb.apiv3.model.*;
|
||||||
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public final class DELETEAuditLogId implements Handler<RoutingContext> {
|
||||||
|
|
||||||
|
public void handle(RoutingContext ctx) {
|
||||||
|
BlockingCallback<AuditLogEntry> auditLogEntryCallback = new BlockingCallback<>();
|
||||||
|
AuditLogEntry.findById(ctx.request().getParam("id"), auditLogEntryCallback);
|
||||||
|
AuditLogEntry auditLogEntry = auditLogEntryCallback.get();
|
||||||
|
|
||||||
|
if (auditLogEntry == null) {
|
||||||
|
ErrorUtils.respondNotFound(ctx, "Audit log entry", ctx.request().getParam("id"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!auditLogEntry.isReversible()) {
|
||||||
|
ErrorUtils.respondInvalidInput(ctx, "Audit log entry referenced is not reversible.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BlockingCallback<Void> callback = new BlockingCallback<>();
|
||||||
|
auditLogEntry.getType().reverse(auditLogEntry, callback);
|
||||||
|
callback.get();
|
||||||
|
|
||||||
|
JsonObject requestBody = ctx.getBodyAsJson();
|
||||||
|
|
||||||
|
if (requestBody.containsKey("user")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("user")), requestBody.getString("userIp"), ctx, AuditLogActionType.AUDIT_LOG_REVERT, ImmutableMap.of("auditLogEntryId", auditLogEntry.getId()), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, auditLogEntry);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, auditLogEntry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,13 +1,19 @@
|
|||||||
package net.frozenorb.apiv3.route.bannedAsns;
|
package net.frozenorb.apiv3.route.bannedAsns;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.mongodb.client.result.DeleteResult;
|
import com.mongodb.client.result.DeleteResult;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.BannedAsn;
|
import net.frozenorb.apiv3.model.BannedAsn;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
import net.frozenorb.apiv3.util.ErrorUtils;
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class DELETEBannedAsnsId implements Handler<RoutingContext> {
|
public final class DELETEBannedAsnsId implements Handler<RoutingContext> {
|
||||||
|
|
||||||
public void handle(RoutingContext ctx) {
|
public void handle(RoutingContext ctx) {
|
||||||
@ -21,7 +27,20 @@ public final class DELETEBannedAsnsId implements Handler<RoutingContext> {
|
|||||||
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
||||||
bannedAsn.delete(callback);
|
bannedAsn.delete(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, bannedAsn);
|
|
||||||
|
JsonObject requestBody = ctx.getBodyAsJson();
|
||||||
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.BANNED_ASN_DELETE, ImmutableMap.of("bannedAsnId", bannedAsn.getId()), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, bannedAsn);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, bannedAsn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,11 +1,17 @@
|
|||||||
package net.frozenorb.apiv3.route.bannedAsns;
|
package net.frozenorb.apiv3.route.bannedAsns;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.BannedAsn;
|
import net.frozenorb.apiv3.model.BannedAsn;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class POSTBannedAsns implements Handler<RoutingContext> {
|
public final class POSTBannedAsns implements Handler<RoutingContext> {
|
||||||
|
|
||||||
@ -18,7 +24,18 @@ public final class POSTBannedAsns implements Handler<RoutingContext> {
|
|||||||
BlockingCallback<Void> callback = new BlockingCallback<>();
|
BlockingCallback<Void> callback = new BlockingCallback<>();
|
||||||
bannedAsn.insert(callback);
|
bannedAsn.insert(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, bannedAsn);
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.BANNED_ASN_CREATE, ImmutableMap.of("bannedAsnId", id), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, bannedAsn);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, bannedAsn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,13 +1,19 @@
|
|||||||
package net.frozenorb.apiv3.route.bannedCellCarriers;
|
package net.frozenorb.apiv3.route.bannedCellCarriers;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.mongodb.client.result.DeleteResult;
|
import com.mongodb.client.result.DeleteResult;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.BannedCellCarrier;
|
import net.frozenorb.apiv3.model.BannedCellCarrier;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
import net.frozenorb.apiv3.util.ErrorUtils;
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class DELETEBannedCellCarriersId implements Handler<RoutingContext> {
|
public final class DELETEBannedCellCarriersId implements Handler<RoutingContext> {
|
||||||
|
|
||||||
public void handle(RoutingContext ctx) {
|
public void handle(RoutingContext ctx) {
|
||||||
@ -21,7 +27,20 @@ public final class DELETEBannedCellCarriersId implements Handler<RoutingContext>
|
|||||||
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
||||||
bannedCellCarrier.delete(callback);
|
bannedCellCarrier.delete(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, bannedCellCarrier);
|
|
||||||
|
JsonObject requestBody = ctx.getBodyAsJson();
|
||||||
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.BANNED_CALL_CARRIER_DELETE, ImmutableMap.of("bannedCellCarrierId", bannedCellCarrier.getId()), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, bannedCellCarrier);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, bannedCellCarrier);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,11 +1,17 @@
|
|||||||
package net.frozenorb.apiv3.route.bannedCellCarriers;
|
package net.frozenorb.apiv3.route.bannedCellCarriers;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.BannedCellCarrier;
|
import net.frozenorb.apiv3.model.BannedCellCarrier;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class POSTBannedCellCarriers implements Handler<RoutingContext> {
|
public final class POSTBannedCellCarriers implements Handler<RoutingContext> {
|
||||||
|
|
||||||
@ -18,7 +24,18 @@ public final class POSTBannedCellCarriers implements Handler<RoutingContext> {
|
|||||||
BlockingCallback<Void> callback = new BlockingCallback<>();
|
BlockingCallback<Void> callback = new BlockingCallback<>();
|
||||||
bannedCellCarrier.insert(callback);
|
bannedCellCarrier.insert(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, bannedCellCarrier);
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.BANNED_CALL_CARRIER_CREATE, ImmutableMap.of("bannedCellCarrierId", id), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, bannedCellCarrier);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, bannedCellCarrier);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -6,6 +6,8 @@ import io.vertx.core.Handler;
|
|||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.User;
|
import net.frozenorb.apiv3.model.User;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
import net.frozenorb.apiv3.util.ErrorUtils;
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
@ -50,9 +52,15 @@ public final class POSTEmailTokensIdConfirm implements Handler<RoutingContext> {
|
|||||||
user.save(callback);
|
user.save(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
|
|
||||||
APIv3.respondJson(ctx, ImmutableMap.of(
|
AuditLog.log(user.getId(), requestBody.getString("userIp"), ctx, AuditLogActionType.USER_CONFIRM_EMAIL, (ignored, error) -> {
|
||||||
"success", true
|
if (error != null) {
|
||||||
));
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, ImmutableMap.of(
|
||||||
|
"success", true
|
||||||
|
));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,9 +1,12 @@
|
|||||||
package net.frozenorb.apiv3.route.ipBans;
|
package net.frozenorb.apiv3.route.ipBans;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.IpBan;
|
import net.frozenorb.apiv3.model.IpBan;
|
||||||
import net.frozenorb.apiv3.model.User;
|
import net.frozenorb.apiv3.model.User;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
@ -51,7 +54,17 @@ public final class POSTIpBans implements Handler<RoutingContext> {
|
|||||||
ipBan.insert(callback);
|
ipBan.insert(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
|
|
||||||
APIv3.respondJson(ctx, ipBan);
|
if (addedBy != null) {
|
||||||
|
AuditLog.log(addedBy.getId(), requestBody.getString("addedByIp"), ctx, AuditLogActionType.IP_BAN_CREATE, ImmutableMap.of("ipBanId", ipBan.getId()), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, ipBan);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, ipBan);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,13 +1,19 @@
|
|||||||
package net.frozenorb.apiv3.route.notificationTemplates;
|
package net.frozenorb.apiv3.route.notificationTemplates;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.mongodb.client.result.DeleteResult;
|
import com.mongodb.client.result.DeleteResult;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.NotificationTemplate;
|
import net.frozenorb.apiv3.model.NotificationTemplate;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
import net.frozenorb.apiv3.util.ErrorUtils;
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class DELETENotificationTemplatesId implements Handler<RoutingContext> {
|
public final class DELETENotificationTemplatesId implements Handler<RoutingContext> {
|
||||||
|
|
||||||
public void handle(RoutingContext ctx) {
|
public void handle(RoutingContext ctx) {
|
||||||
@ -23,7 +29,20 @@ public final class DELETENotificationTemplatesId implements Handler<RoutingConte
|
|||||||
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
||||||
notificationTemplate.delete(callback);
|
notificationTemplate.delete(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, notificationTemplate);
|
|
||||||
|
JsonObject requestBody = ctx.getBodyAsJson();
|
||||||
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.NOTIFICATION_TEMPLATE_DELETE, ImmutableMap.of("notificationTemplateId", notificationTemplate.getId()), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, notificationTemplate);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, notificationTemplate);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,11 +1,17 @@
|
|||||||
package net.frozenorb.apiv3.route.notificationTemplates;
|
package net.frozenorb.apiv3.route.notificationTemplates;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.NotificationTemplate;
|
import net.frozenorb.apiv3.model.NotificationTemplate;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class POSTNotificationTemplates implements Handler<RoutingContext> {
|
public final class POSTNotificationTemplates implements Handler<RoutingContext> {
|
||||||
|
|
||||||
@ -19,7 +25,18 @@ public final class POSTNotificationTemplates implements Handler<RoutingContext>
|
|||||||
BlockingCallback<Void> callback = new BlockingCallback<>();
|
BlockingCallback<Void> callback = new BlockingCallback<>();
|
||||||
notificationTemplate.insert(callback);
|
notificationTemplate.insert(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, notificationTemplate);
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.NOTIFICATION_TEMPLATE_CREATE, ImmutableMap.of("notificationTemplateId", id), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, notificationTemplate);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, notificationTemplate);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -6,6 +6,8 @@ import io.vertx.core.Handler;
|
|||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.IpBan;
|
import net.frozenorb.apiv3.model.IpBan;
|
||||||
import net.frozenorb.apiv3.model.Punishment;
|
import net.frozenorb.apiv3.model.Punishment;
|
||||||
import net.frozenorb.apiv3.model.User;
|
import net.frozenorb.apiv3.model.User;
|
||||||
@ -101,10 +103,23 @@ public final class POSTPunishments implements Handler<RoutingContext> {
|
|||||||
punishment.insert(callback);
|
punishment.insert(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
|
|
||||||
APIv3.respondJson(ctx, ImmutableMap.of(
|
if (addedBy != null) {
|
||||||
"punishment", punishment,
|
AuditLog.log(addedBy.getId(), requestBody.getString("addedByIp"), ctx, AuditLogActionType.PUNISHMENT_CREATE, ImmutableMap.of("punishmentId", punishment.getId()), (ignored, error) -> {
|
||||||
"accessDenialReason", accessDenialReason == null ? "" : accessDenialReason
|
if (error != null) {
|
||||||
));
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, ImmutableMap.of(
|
||||||
|
"punishment", punishment,
|
||||||
|
"accessDenialReason", accessDenialReason == null ? "" : accessDenialReason
|
||||||
|
));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, ImmutableMap.of(
|
||||||
|
"punishment", punishment,
|
||||||
|
"accessDenialReason", accessDenialReason == null ? "" : accessDenialReason
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,13 +1,19 @@
|
|||||||
package net.frozenorb.apiv3.route.ranks;
|
package net.frozenorb.apiv3.route.ranks;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.mongodb.client.result.DeleteResult;
|
import com.mongodb.client.result.DeleteResult;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.Rank;
|
import net.frozenorb.apiv3.model.Rank;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
import net.frozenorb.apiv3.util.ErrorUtils;
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class DELETERanksId implements Handler<RoutingContext> {
|
public final class DELETERanksId implements Handler<RoutingContext> {
|
||||||
|
|
||||||
public void handle(RoutingContext ctx) {
|
public void handle(RoutingContext ctx) {
|
||||||
@ -21,7 +27,20 @@ public final class DELETERanksId implements Handler<RoutingContext> {
|
|||||||
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
||||||
rank.delete(callback);
|
rank.delete(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, rank);
|
|
||||||
|
JsonObject requestBody = ctx.getBodyAsJson();
|
||||||
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.RANK_DELETE, ImmutableMap.of("rankId", rank.getId()), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, rank);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, rank);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,11 +1,17 @@
|
|||||||
package net.frozenorb.apiv3.route.ranks;
|
package net.frozenorb.apiv3.route.ranks;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.Rank;
|
import net.frozenorb.apiv3.model.Rank;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class POSTRanks implements Handler<RoutingContext> {
|
public final class POSTRanks implements Handler<RoutingContext> {
|
||||||
|
|
||||||
@ -23,7 +29,18 @@ public final class POSTRanks implements Handler<RoutingContext> {
|
|||||||
BlockingCallback<Void> callback = new BlockingCallback<>();
|
BlockingCallback<Void> callback = new BlockingCallback<>();
|
||||||
rank.insert(callback);
|
rank.insert(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, rank);
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.RANK_CREATE, ImmutableMap.of("rankId", id), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, rank);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, rank);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,13 +1,19 @@
|
|||||||
package net.frozenorb.apiv3.route.serverGroups;
|
package net.frozenorb.apiv3.route.serverGroups;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.mongodb.client.result.DeleteResult;
|
import com.mongodb.client.result.DeleteResult;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.ServerGroup;
|
import net.frozenorb.apiv3.model.ServerGroup;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
import net.frozenorb.apiv3.util.ErrorUtils;
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class DELETEServerGroupsId implements Handler<RoutingContext> {
|
public final class DELETEServerGroupsId implements Handler<RoutingContext> {
|
||||||
|
|
||||||
public void handle(RoutingContext ctx) {
|
public void handle(RoutingContext ctx) {
|
||||||
@ -21,7 +27,20 @@ public final class DELETEServerGroupsId implements Handler<RoutingContext> {
|
|||||||
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
||||||
serverGroup.delete(callback);
|
serverGroup.delete(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, serverGroup);
|
|
||||||
|
JsonObject requestBody = ctx.getBodyAsJson();
|
||||||
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.SERVER_GROUP_DELETE, ImmutableMap.of("serverGroupId", serverGroup.getId()), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, serverGroup);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, serverGroup);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,11 +1,17 @@
|
|||||||
package net.frozenorb.apiv3.route.serverGroups;
|
package net.frozenorb.apiv3.route.serverGroups;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.ServerGroup;
|
import net.frozenorb.apiv3.model.ServerGroup;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class POSTServerGroups implements Handler<RoutingContext> {
|
public final class POSTServerGroups implements Handler<RoutingContext> {
|
||||||
|
|
||||||
@ -18,7 +24,18 @@ public final class POSTServerGroups implements Handler<RoutingContext> {
|
|||||||
BlockingCallback<Void> callback = new BlockingCallback<>();
|
BlockingCallback<Void> callback = new BlockingCallback<>();
|
||||||
serverGroup.insert(callback);
|
serverGroup.insert(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, serverGroup);
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.SERVER_GROUP_CREATE, ImmutableMap.of("serverGroupId", id), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, serverGroup);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, serverGroup);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,13 +1,19 @@
|
|||||||
package net.frozenorb.apiv3.route.servers;
|
package net.frozenorb.apiv3.route.servers;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.mongodb.client.result.DeleteResult;
|
import com.mongodb.client.result.DeleteResult;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.Server;
|
import net.frozenorb.apiv3.model.Server;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
import net.frozenorb.apiv3.util.ErrorUtils;
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class DELETEServersId implements Handler<RoutingContext> {
|
public final class DELETEServersId implements Handler<RoutingContext> {
|
||||||
|
|
||||||
public void handle(RoutingContext ctx) {
|
public void handle(RoutingContext ctx) {
|
||||||
@ -21,7 +27,20 @@ public final class DELETEServersId implements Handler<RoutingContext> {
|
|||||||
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
BlockingCallback<DeleteResult> callback = new BlockingCallback<>();
|
||||||
server.delete(callback);
|
server.delete(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, server);
|
|
||||||
|
JsonObject requestBody = ctx.getBodyAsJson();
|
||||||
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.SERVER_DELETE, ImmutableMap.of("serverId", server.getId()), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, server);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, server);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,9 +1,12 @@
|
|||||||
package net.frozenorb.apiv3.route.servers;
|
package net.frozenorb.apiv3.route.servers;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.Server;
|
import net.frozenorb.apiv3.model.Server;
|
||||||
import net.frozenorb.apiv3.model.ServerGroup;
|
import net.frozenorb.apiv3.model.ServerGroup;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
@ -36,7 +39,18 @@ public final class POSTServers implements Handler<RoutingContext> {
|
|||||||
BlockingCallback<Void> callback = new BlockingCallback<>();
|
BlockingCallback<Void> callback = new BlockingCallback<>();
|
||||||
server.insert(callback);
|
server.insert(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
APIv3.respondJson(ctx, server);
|
|
||||||
|
if (requestBody.containsKey("addedBy")) {
|
||||||
|
AuditLog.log(UUID.fromString(requestBody.getString("addedBy")), requestBody.getString("addedByIp"), ctx, AuditLogActionType.SERVER_CREATE, ImmutableMap.of("serverId", id), (ignored, error) -> {
|
||||||
|
if (error != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, server);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, server);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -6,6 +6,8 @@ import io.vertx.core.Handler;
|
|||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.User;
|
import net.frozenorb.apiv3.model.User;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
import net.frozenorb.apiv3.unsorted.RequiresTotpResult;
|
import net.frozenorb.apiv3.unsorted.RequiresTotpResult;
|
||||||
@ -79,9 +81,15 @@ public final class POSTUsersIdChangePassword implements Handler<RoutingContext>
|
|||||||
user.save(saveCallback);
|
user.save(saveCallback);
|
||||||
saveCallback.get();
|
saveCallback.get();
|
||||||
|
|
||||||
APIv3.respondJson(ctx, ImmutableMap.of(
|
AuditLog.log(user.getId(), requestBody.getString("userIp"), ctx, AuditLogActionType.USER_CHANGE_PASSWORD, (ignored, error) -> {
|
||||||
"success", true
|
if (error != null) {
|
||||||
));
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, ImmutableMap.of(
|
||||||
|
"success", true
|
||||||
|
));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,11 @@ package net.frozenorb.apiv3.route.users;
|
|||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.mongodb.client.result.UpdateResult;
|
import com.mongodb.client.result.UpdateResult;
|
||||||
import io.vertx.core.Handler;
|
import io.vertx.core.Handler;
|
||||||
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.NotificationTemplate;
|
import net.frozenorb.apiv3.model.NotificationTemplate;
|
||||||
import net.frozenorb.apiv3.model.User;
|
import net.frozenorb.apiv3.model.User;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
@ -49,9 +52,17 @@ public final class POSTUsersIdPasswordReset implements Handler<RoutingContext> {
|
|||||||
if (error != null) {
|
if (error != null) {
|
||||||
ErrorUtils.respondInternalError(ctx, error);
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
} else {
|
} else {
|
||||||
APIv3.respondJson(ctx, ImmutableMap.of(
|
JsonObject requestBody = ctx.getBodyAsJson();
|
||||||
"success", true
|
|
||||||
));
|
AuditLog.log(user.getId(), requestBody.getString("userIp"), ctx, AuditLogActionType.USER_PASSWORD_RESET, (ignored2, error2) -> {
|
||||||
|
if (error2 != null) {
|
||||||
|
ErrorUtils.respondInternalError(ctx, error2);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, ImmutableMap.of(
|
||||||
|
"success", true
|
||||||
|
));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@ import io.vertx.core.Handler;
|
|||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.NotificationTemplate;
|
import net.frozenorb.apiv3.model.NotificationTemplate;
|
||||||
import net.frozenorb.apiv3.model.User;
|
import net.frozenorb.apiv3.model.User;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
@ -18,8 +20,6 @@ import java.util.concurrent.TimeUnit;
|
|||||||
|
|
||||||
public final class POSTUsersIdRegister implements Handler<RoutingContext> {
|
public final class POSTUsersIdRegister implements Handler<RoutingContext> {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void handle(RoutingContext ctx) {
|
public void handle(RoutingContext ctx) {
|
||||||
BlockingCallback<User> userCallback = new BlockingCallback<>();
|
BlockingCallback<User> userCallback = new BlockingCallback<>();
|
||||||
User.findById(ctx.request().getParam("id"), userCallback);
|
User.findById(ctx.request().getParam("id"), userCallback);
|
||||||
@ -72,9 +72,15 @@ public final class POSTUsersIdRegister implements Handler<RoutingContext> {
|
|||||||
if (error != null) {
|
if (error != null) {
|
||||||
ErrorUtils.respondInternalError(ctx, error);
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
} else {
|
} else {
|
||||||
APIv3.respondJson(ctx, ImmutableMap.of(
|
AuditLog.log(user.getId(), requestBody.getString("userIp"), ctx, AuditLogActionType.USER_REGISTER, (ignored2, error2) -> {
|
||||||
"success", true
|
if (error2 != null) {
|
||||||
));
|
ErrorUtils.respondInternalError(ctx, error2);
|
||||||
|
} else {
|
||||||
|
APIv3.respondJson(ctx, ImmutableMap.of(
|
||||||
|
"success", true
|
||||||
|
));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@ import io.vertx.core.Handler;
|
|||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.User;
|
import net.frozenorb.apiv3.model.User;
|
||||||
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
import net.frozenorb.apiv3.unsorted.BlockingCallback;
|
||||||
import net.frozenorb.apiv3.util.ErrorUtils;
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
@ -38,10 +40,16 @@ public final class POSTUsersIdSetupTotp implements Handler<RoutingContext> {
|
|||||||
user.save(callback);
|
user.save(callback);
|
||||||
callback.get();
|
callback.get();
|
||||||
|
|
||||||
APIv3.respondJson(ctx, ImmutableMap.of(
|
AuditLog.log(user.getId(), requestBody.getString("userIp"), ctx, AuditLogActionType.USER_SETUP_TOTP, (ignored, error) -> {
|
||||||
"success", true,
|
if (error != null) {
|
||||||
"message", "Totp code set."
|
ErrorUtils.respondInternalError(ctx, error);
|
||||||
));
|
} else {
|
||||||
|
APIv3.respondJson(ctx, ImmutableMap.of(
|
||||||
|
"success", true,
|
||||||
|
"message", "Totp code set."
|
||||||
|
));
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
ErrorUtils.respondInvalidInput(ctx, "Confirmation code provided did not match.");
|
ErrorUtils.respondInvalidInput(ctx, "Confirmation code provided did not match.");
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,8 @@ import io.vertx.core.Handler;
|
|||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
import net.frozenorb.apiv3.APIv3;
|
import net.frozenorb.apiv3.APIv3;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLog;
|
||||||
|
import net.frozenorb.apiv3.auditLog.AuditLogActionType;
|
||||||
import net.frozenorb.apiv3.model.User;
|
import net.frozenorb.apiv3.model.User;
|
||||||
import net.frozenorb.apiv3.util.ErrorUtils;
|
import net.frozenorb.apiv3.util.ErrorUtils;
|
||||||
import net.frozenorb.apiv3.util.IpUtils;
|
import net.frozenorb.apiv3.util.IpUtils;
|
||||||
@ -42,10 +44,16 @@ public final class POSTUsersIdVerifyTotp implements Handler<RoutingContext> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
APIv3.respondJson(ctx, ImmutableMap.of(
|
AuditLog.log(user.getId(), userIp, ctx, AuditLogActionType.USER_VERIFY_TOTP, (ignored, error3) -> {
|
||||||
"authorized", totpAuthorizationResult.isAuthorized(),
|
if (error3 != null) {
|
||||||
"message", totpAuthorizationResult.name()
|
ErrorUtils.respondInternalError(ctx, error3);
|
||||||
));
|
} else {
|
||||||
|
APIv3.respondJson(ctx, ImmutableMap.of(
|
||||||
|
"authorized", totpAuthorizationResult.isAuthorized(),
|
||||||
|
"message", totpAuthorizationResult.name()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user