diff options
-rw-r--r-- | src/main/java/net/libertacasa/pubsh/web/Docker.java | 1 | ||||
-rw-r--r-- | src/main/java/net/libertacasa/pubsh/web/WebApplication.java | 21 | ||||
-rw-r--r-- | src/main/resources/templates/portal.html | 2 |
3 files changed, 20 insertions, 4 deletions
diff --git a/src/main/java/net/libertacasa/pubsh/web/Docker.java b/src/main/java/net/libertacasa/pubsh/web/Docker.java index a889703..ff81be3 100644 --- a/src/main/java/net/libertacasa/pubsh/web/Docker.java +++ b/src/main/java/net/libertacasa/pubsh/web/Docker.java @@ -15,7 +15,6 @@ import com.github.dockerjava.api.command.ListContainersCmd; import com.github.dockerjava.api.command.ListImagesCmd; import com.github.dockerjava.api.command.WaitContainerResultCallback; import com.github.dockerjava.api.model.Image; -import com.github.dockerjava.api.model.SearchItem; import com.github.dockerjava.core.DefaultDockerClientConfig; import com.github.dockerjava.core.DockerClientConfig; import com.github.dockerjava.core.DockerClientImpl; diff --git a/src/main/java/net/libertacasa/pubsh/web/WebApplication.java b/src/main/java/net/libertacasa/pubsh/web/WebApplication.java index 4c06c29..c9cbe07 100644 --- a/src/main/java/net/libertacasa/pubsh/web/WebApplication.java +++ b/src/main/java/net/libertacasa/pubsh/web/WebApplication.java @@ -157,8 +157,7 @@ public class WebApplication { System.out.printf("Deletion triggered for ID %s by %s (%s)\n", id, userid, username); - //Docker.deleteContainer(id); - Docker.deleteShell(username, id); //to-do: move to separate mapping + Docker.deleteContainer(id); return("redirect:/portal"); } @@ -248,6 +247,24 @@ public class WebApplication { } return("redirect:/portal"); + } + + @DeleteMapping("/frontend/shell/delete/{id}") + public static String deleteShell(@PathVariable String id, HttpServletRequest request, RedirectAttributes redirectAttributes) { + // [Start] This block should move to a logging method. It's only job is to print user details to the console. + KeycloakAuthenticationToken principal = (KeycloakAuthenticationToken) request.getUserPrincipal(); + String username= null; + String userid = principal.getName(); + IDToken token = principal.getAccount().getKeycloakSecurityContext().getIdToken(); + Map<String, Object> customClaims = token.getOtherClaims(); + username = String.valueOf(customClaims.get("username")); + // [End] + + System.out.printf("Deletion triggered for ID %s by %s (%s)\n", id, userid, username); + + Docker.deleteShell(username, id); + + return("redirect:/portal"); } @GetMapping(path = "/logout") diff --git a/src/main/resources/templates/portal.html b/src/main/resources/templates/portal.html index 568e4da..33934c3 100644 --- a/src/main/resources/templates/portal.html +++ b/src/main/resources/templates/portal.html @@ -50,7 +50,7 @@ <td th:text="${container.id}" /> <td th:text="${container.status}" /> <td> -<form id="deletion_pseudoform" action="#" th:action="@{'/frontend/container/delete/{id}'(id=${container.id})}" th:method="delete" th:containerid="${container.id}" th:containerShaSum="${container.imageId}" th:onsubmit="return confirm('Do you really want to delete the container with ID ' + this.getAttribute('containerid') + ' which is attached to the image with checksum ' + this.getAttribute('containerShaSum') + ' ?');"> +<form id="deletion_pseudoform" action="#" th:action="@{'/frontend/shell/delete/{id}'(id=${container.id})}" th:method="delete" th:containerid="${container.id}" th:containerShaSum="${container.imageId}" th:onsubmit="return confirm('Do you really want to delete the container with ID ' + this.getAttribute('containerid') + ' which is attached to the image with checksum ' + this.getAttribute('containerShaSum') + ' ?');"> <button class="btn btn-danger" id="deletion_submission" type="submit">Delete</button> </form> </td> |