summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/libertacasa/pubsh/web/WebApplication.java
diff options
context:
space:
mode:
authorGeorg Pfuetzenreuter2022-05-06 14:17:49 +0200
committerGeorg Pfuetzenreuter2022-05-06 14:17:49 +0200
commitc39416707f7253f1e41032fad5a7bc4dd3c17d38 (patch)
tree317ec8dda5100e6830d00f3a025ab13e20f7b582 /src/main/java/net/libertacasa/pubsh/web/WebApplication.java
parentbeb92675071c69b86b5338297822c834ffd548f6 (diff)
downloadpubsh-web-c39416707f7253f1e41032fad5a7bc4dd3c17d38.tar.gz
pubsh-web-c39416707f7253f1e41032fad5a7bc4dd3c17d38.tar.bz2
pubsh-web-c39416707f7253f1e41032fad5a7bc4dd3c17d38.zip
Implement container deletion
Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
Diffstat (limited to 'src/main/java/net/libertacasa/pubsh/web/WebApplication.java')
-rw-r--r--src/main/java/net/libertacasa/pubsh/web/WebApplication.java25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/main/java/net/libertacasa/pubsh/web/WebApplication.java b/src/main/java/net/libertacasa/pubsh/web/WebApplication.java
index ad1a2d4..faef657 100644
--- a/src/main/java/net/libertacasa/pubsh/web/WebApplication.java
+++ b/src/main/java/net/libertacasa/pubsh/web/WebApplication.java
@@ -18,7 +18,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.DeleteMapping;
+//import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
+//import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.github.dockerjava.api.model.Container;
import com.github.dockerjava.api.model.Image;
@@ -51,7 +56,7 @@ public class WebApplication {
if (principal instanceof KeycloakPrincipal) {
KeycloakPrincipal<?> kPrincipal = (KeycloakPrincipal<?>) principal;
IDToken token = kPrincipal.getKeycloakSecurityContext().getIdToken();
- System.out.println("Token: " + token);
+ //System.out.println("Token: " + token);
Map<String, Object> customClaims = token.getOtherClaims();
@@ -81,6 +86,24 @@ public class WebApplication {
return("portal");
}
+ @DeleteMapping("/frontend/container/delete/{id}")
+ public static String deleteContainer(@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)", id, userid, username);
+
+ Docker.deleteContainer(id);
+
+ return("redirect:/portal");
+ }
+
@GetMapping(path = "/logout")
public String logout(HttpServletRequest request) throws ServletException {
request.logout();