diff --git a/src/main/java/com/uid2/admin/vertx/service/EncryptedFilesSyncService.java b/src/main/java/com/uid2/admin/vertx/service/EncryptedFilesSyncService.java index 3c5a6624..5a736873 100644 --- a/src/main/java/com/uid2/admin/vertx/service/EncryptedFilesSyncService.java +++ b/src/main/java/com/uid2/admin/vertx/service/EncryptedFilesSyncService.java @@ -3,6 +3,7 @@ import com.uid2.admin.auth.AdminAuthMiddleware; import com.uid2.admin.job.JobDispatcher; import com.uid2.admin.job.jobsync.EncryptedFilesSyncJob; +import com.uid2.admin.vertx.Endpoints; import com.uid2.admin.vertx.WriteLock; import com.uid2.shared.auth.Role; import com.uid2.shared.store.reader.RotatingCloudEncryptionKeyProvider; @@ -38,14 +39,14 @@ public EncryptedFilesSyncService( @Override public void setupRoutes(Router router) { - router.post("/api/encrypted-files/refresh").blockingHandler(auth.handle((ctx) -> { + router.post(Endpoints.API_ENCRYPTED_FILES_REFRESH.toString()).blockingHandler(auth.handle((ctx) -> { synchronized (writeLock) { this.handleEncryptedFileSync(ctx); } }, Role.MAINTAINER, Role.PRIVATE_OPERATOR_SYNC)); - router.post("/api/encrypted-files/syncNow").blockingHandler(auth.handle( + router.post(Endpoints.API_ENCRYPTED_FILES_SYNC_NOW.toString()).blockingHandler(auth.handle( this::handleEncryptedFileSyncNow, Role.MAINTAINER, Role.PRIVATE_OPERATOR_SYNC)); } diff --git a/webroot/adm/cloud-encryption-key.html b/webroot/adm/cloud-encryption-key.html index cc4e9ecf..a4812e87 100644 --- a/webroot/adm/cloud-encryption-key.html +++ b/webroot/adm/cloud-encryption-key.html @@ -22,6 +22,8 @@

Operations


@@ -46,7 +48,21 @@

Output

{ name: "Site", formatter: (cell, row) => { - return gridjs.html(`${cell.siteId} - ${cell.siteName}`) + return gridjs.html(`${formatSite(cell)}`) + }, + sort: { + compare: (a, b) => { + const fullA = formatSite(a); + const fullB = formatSite(b); + + if (fullA > fullB) { + return 1; + } else if (fullA < fullB) { + return -1; + } else { + return 0; + } + } } }, { @@ -73,7 +89,7 @@

Output

if (cellIndex === 0) { return cell; } else if (cellIndex === 1) { - return `${cell.siteId} - ${cell.siteName}`; + return formatSite(cell); } } }, @@ -97,7 +113,11 @@

Output

timeZoneName: "short" }; return date.toLocaleString("en-US", options); - } + }; + + const formatSite = (site) => { + return `${site.siteId} - ${site.siteName}`; + }; const updateGrid = (grid, data) => { const groupedData = data.cloudEncryptionKeys.reduce((acc, key) => { @@ -123,36 +143,49 @@

Output

grid .updateConfig({ data: gridData }) .forceRender(); - } + }; const clearGrid = (grid) => { grid .updateConfig({ data: [] }) .forceRender(); - } + }; + + const doList = () => { + clearGrid(grid); + doApiCallWithCallback("GET", "/api/site/list", (text) => { + const sites = JSON.parse(text); + const siteDict = sites.reduce((acc, site) => { + acc[site.id] = site.name; + return acc; + }, {}); + + doApiCallWithCallback("GET", "/api/cloud-encryption-key/list", (text) => { + const data = JSON.parse(text); + data.cloudEncryptionKeys.forEach((key) => { + key.siteName = !siteDict[key.siteId] ? "Unknown site" : siteDict[key.siteId] + }); + updateGrid(grid, data); + }, errorCallback); + }, errorCallback); + }; - $(document).ready(function () { - $("#doMeta").on("click", function () { + $(document).ready(() => { + $("#doMeta").on("click", () => { doApiCall("GET", "/api/cloud-encryption-key/metadata", "#standardOutput", "#errorOutput"); }); - $("#doList").on("click", function () { - clearGrid(grid); - doApiCallWithCallback("GET", "/api/site/list", (text) => { - const sites = JSON.parse(text); - const siteDict = sites.reduce((acc, site) => { - acc[site.id] = site.name; - return acc; - }, {}); - - doApiCallWithCallback("GET", "/api/cloud-encryption-key/list", (text) => { - const data = JSON.parse(text); - data.cloudEncryptionKeys.forEach((key) => { - key.siteName = !siteDict[key.siteId] ? "Unknown site" : siteDict[key.siteId] - }); - updateGrid(grid, data); - }, errorCallback); - }, errorCallback); + $("#doList").on("click", () => { + doList(); + }); + + $("#doRotate").on("click", () => { + doApiCall("POST", "/api/cloud-encryption-key/rotate", "#standardOutput", "#errorOutput"); + doList(); + }); + + $("#doEncrypt").on("click", () => { + doApiCall("POST", "/api/encrypted-files/syncNow", "#standardOutput", "#errorOutput"); }); });