From 50a719ce20a9d6abae2ae4b69900ba8185adb42f Mon Sep 17 00:00:00 2001
From: digrazia2038 <digrazia@2038.it>
Date: Thu, 13 Oct 2022 09:54:44 +0200
Subject: [PATCH] public dashboards

---
 .../model/enumeration/TargetType.java         |  3 +-
 .../dashboard/security/SecurityConfig.java    |  8 +-
 .../dashboard/web/MenuBlockResource.java      |  7 +-
 .../dashboard/web/MenuItemResource.java       | 18 ++++
 .../web/PublicDashboardPageResource.java      | 84 +++++++++++++++++++
 .../dashboard/web/TargetResource.java         | 17 ++++
 6 files changed, 129 insertions(+), 8 deletions(-)
 create mode 100644 src/main/java/it/eng/urbanite/dashboard/web/PublicDashboardPageResource.java

diff --git a/src/main/java/it/eng/urbanite/dashboard/model/enumeration/TargetType.java b/src/main/java/it/eng/urbanite/dashboard/model/enumeration/TargetType.java
index b39e36c..05f18f6 100644
--- a/src/main/java/it/eng/urbanite/dashboard/model/enumeration/TargetType.java
+++ b/src/main/java/it/eng/urbanite/dashboard/model/enumeration/TargetType.java
@@ -11,7 +11,8 @@ import lombok.Getter;
 public enum TargetType {
 	PERSON 	("PERSON"),
 	GROUP	("GROUP"),
-	ROLE	("ROLE");
+	PUBLIC ("PUBLIC"),
+	ROLE   ("ROLE");
 
 	@Getter private String code;
 
diff --git a/src/main/java/it/eng/urbanite/dashboard/security/SecurityConfig.java b/src/main/java/it/eng/urbanite/dashboard/security/SecurityConfig.java
index f84ebc6..385d5e0 100644
--- a/src/main/java/it/eng/urbanite/dashboard/security/SecurityConfig.java
+++ b/src/main/java/it/eng/urbanite/dashboard/security/SecurityConfig.java
@@ -51,12 +51,14 @@ public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
 	@Override
 	protected void configure(HttpSecurity http) throws Exception{
 		super.configure(http);
-		
-		http.cors().and().csrf().disable().authorizeRequests()
+		http.cors().and()
+        .anonymous().and().csrf().disable().authorizeRequests()
+        .antMatchers("/api/menu-blocks").permitAll()
 			.antMatchers("/api/**").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN")
 			.antMatchers("/user/**").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN")
 			.antMatchers("/app/info").permitAll()
-			
+	        .antMatchers("/public/public-menu-blocks").permitAll()
+
 			.anyRequest().permitAll() // giving access to e.g. swagger
 	        .and().httpBasic(); // Authenticate users with HTTP basic authentication
 	}
diff --git a/src/main/java/it/eng/urbanite/dashboard/web/MenuBlockResource.java b/src/main/java/it/eng/urbanite/dashboard/web/MenuBlockResource.java
index 9f1193e..d5e8103 100644
--- a/src/main/java/it/eng/urbanite/dashboard/web/MenuBlockResource.java
+++ b/src/main/java/it/eng/urbanite/dashboard/web/MenuBlockResource.java
@@ -128,10 +128,9 @@ public class MenuBlockResource {
 	}
 	@GetMapping("/public-menu-blocks")
 	public ResponseEntity<List<MenuBlockDTO>> getAllPublicMenuBlocks() {
-		log.debug("REST request to get Shared Linked MenuBlocks");
-		String createdBy = SecurityUtils.getCurrentUserLogin().orElse(Constants.SYSTEM);
-		List<MenuBlockDTO> list = menuBlockService.findLinkedItems(MenuType.SHARED, createdBy);
-		return ResponseEntity.ok().body(list);
+		log.debug("REST request to get PUBLIC MenuBlocks");
+        List<MenuBlockDTO> list = menuBlockService.findAll();
+        return ResponseEntity.ok().body(list);
 	}
 	
 	@GetMapping("/editable-menu-blocks")
diff --git a/src/main/java/it/eng/urbanite/dashboard/web/MenuItemResource.java b/src/main/java/it/eng/urbanite/dashboard/web/MenuItemResource.java
index 9c22cea..9cff1d7 100644
--- a/src/main/java/it/eng/urbanite/dashboard/web/MenuItemResource.java
+++ b/src/main/java/it/eng/urbanite/dashboard/web/MenuItemResource.java
@@ -23,11 +23,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import it.eng.urbanite.dashboard.config.Constants;
+import it.eng.urbanite.dashboard.model.enumeration.MenuType;
 import it.eng.urbanite.dashboard.repository.MenuItemRepository;
 import it.eng.urbanite.dashboard.security.SecurityUtils;
 import it.eng.urbanite.dashboard.service.MenuItemQueryService;
 import it.eng.urbanite.dashboard.service.MenuItemService;
 import it.eng.urbanite.dashboard.service.criteria.MenuItemCriteria;
+import it.eng.urbanite.dashboard.service.criteria.MenuItemCriteria.MenuTypeFilter;
 import it.eng.urbanite.dashboard.service.dto.MenuItemDTO;
 import it.eng.urbanite.dashboard.web.error.BadRequestAlertException;
 import tech.jhipster.service.filter.LongFilter;
@@ -112,6 +114,7 @@ public class MenuItemResource {
         return ResponseEntity.ok().body(menuItemDTO.orElse(null));
     }
 
+    
 	@GetMapping("/menu-items-bypage/{pageId}")
 	public ResponseEntity<List<MenuItemDTO>> getMenuItemsByPageId(@PathVariable Long pageId) {
 		MenuItemCriteria criteria = new MenuItemCriteria();
@@ -126,6 +129,7 @@ public class MenuItemResource {
         return ResponseEntity.ok().body(list);
 	}
 	
+	
     @DeleteMapping("/menu-items/{id}")
     public ResponseEntity<Void> deleteMenuItem(@PathVariable Long id) {
         log.debug("REST request to delete MenuItem : {}", id);
@@ -133,4 +137,18 @@ public class MenuItemResource {
         return ResponseEntity.noContent().build();
     }
     
+    
+	@GetMapping("/public-menu-item")
+	public ResponseEntity<List<MenuItemDTO>> getPublicMenuItem() {
+		MenuItemCriteria criteria = new MenuItemCriteria();
+    	MenuTypeFilter filter = new MenuTypeFilter();
+    	filter.setEquals(MenuType.SHARED);
+    	criteria.setType(filter);
+		System.out.println(criteria.toString());
+        log.debug("REST request to get MenuItem by criteria: {}", criteria);
+        List<MenuItemDTO> list = menuItemQueryService.findByCriteria(criteria);
+        log.debug("REST result for MenuItem: size is " +  list.size());
+        
+        return ResponseEntity.ok().body(list);
+	}
 }
diff --git a/src/main/java/it/eng/urbanite/dashboard/web/PublicDashboardPageResource.java b/src/main/java/it/eng/urbanite/dashboard/web/PublicDashboardPageResource.java
new file mode 100644
index 0000000..b1d7438
--- /dev/null
+++ b/src/main/java/it/eng/urbanite/dashboard/web/PublicDashboardPageResource.java
@@ -0,0 +1,84 @@
+package it.eng.urbanite.dashboard.web;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.validation.Valid;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.CrossOrigin;
+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.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import it.eng.urbanite.dashboard.config.Constants;
+import it.eng.urbanite.dashboard.model.enumeration.CloningOpionType;
+import it.eng.urbanite.dashboard.model.enumeration.MenuType;
+import it.eng.urbanite.dashboard.repository.DashboardPageRepository;
+import it.eng.urbanite.dashboard.security.SecurityUtils;
+import it.eng.urbanite.dashboard.service.DashboardPageQueryService;
+import it.eng.urbanite.dashboard.service.DashboardPageService;
+import it.eng.urbanite.dashboard.service.UserService;
+import it.eng.urbanite.dashboard.service.criteria.DashboardPageCriteria;
+import it.eng.urbanite.dashboard.service.dto.DashboardPageCloningDTO;
+import it.eng.urbanite.dashboard.service.dto.DashboardPageDTO;
+import it.eng.urbanite.dashboard.utils.HeaderUtil;
+import it.eng.urbanite.dashboard.web.error.BadRequestAlertException;
+import tech.jhipster.service.filter.BooleanFilter;
+import org.keycloak.representations.idm.UserRepresentation;
+
+/**
+ * REST controller for managing {@link it.eng.urbanite.dashboard.domain.DashboardPage}.
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/public")
+public class PublicDashboardPageResource {
+    private final Logger log = LoggerFactory.getLogger(DashboardPageResource.class);
+    private static final String ENTITY_NAME = "dashboardPage";
+
+    private String applicationName = Constants.APP_NAME;
+
+    private final DashboardPageService dashboardPageService;
+    private final DashboardPageRepository dashboardPageRepository;
+    private final DashboardPageQueryService dashboardPageQueryService;
+    private final UserService userService;
+    
+    public PublicDashboardPageResource(
+        DashboardPageService dashboardPageService,
+        DashboardPageRepository dashboardPageRepository,
+        DashboardPageQueryService dashboardPageQueryService,
+        UserService userService
+    ) {
+        this.dashboardPageService = dashboardPageService;
+        this.dashboardPageRepository = dashboardPageRepository;
+        this.dashboardPageQueryService = dashboardPageQueryService;
+        this.userService = userService;
+    }
+    
+
+    @GetMapping("/dashboards")
+    public ResponseEntity<List<DashboardPageDTO>> getAllPublicDashboardPages() {
+        log.debug("REST request to get DashboardPages");
+        List<DashboardPageDTO> list = dashboardPageService.findAll()
+        .stream()
+        .filter(d -> d.getType().equals(MenuType.PUBLIC))
+        .collect(Collectors.toList());
+        return ResponseEntity.ok().body(list);
+    }
+}
diff --git a/src/main/java/it/eng/urbanite/dashboard/web/TargetResource.java b/src/main/java/it/eng/urbanite/dashboard/web/TargetResource.java
index a022f07..ed45938 100644
--- a/src/main/java/it/eng/urbanite/dashboard/web/TargetResource.java
+++ b/src/main/java/it/eng/urbanite/dashboard/web/TargetResource.java
@@ -23,15 +23,18 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import it.eng.urbanite.dashboard.config.Constants;
+import it.eng.urbanite.dashboard.model.enumeration.TargetType;
 import it.eng.urbanite.dashboard.repository.TargetRepository;
 import it.eng.urbanite.dashboard.security.SecurityUtils;
 import it.eng.urbanite.dashboard.service.TargetQueryService;
 import it.eng.urbanite.dashboard.service.TargetService;
 import it.eng.urbanite.dashboard.service.criteria.TargetCriteria;
+import it.eng.urbanite.dashboard.service.criteria.TargetCriteria.TargetTypeFilter;
 import it.eng.urbanite.dashboard.service.dto.TargetDTO;
 import it.eng.urbanite.dashboard.utils.HeaderUtil;
 import it.eng.urbanite.dashboard.web.error.BadRequestAlertException;
 import tech.jhipster.service.filter.LongFilter;
+import tech.jhipster.service.filter.StringFilter;
 
 /**
  * REST controller for managing {@link it.eng.urbanite.dashboard.domain.Target}.
@@ -114,6 +117,20 @@ public class TargetResource {
         
         return ResponseEntity.ok().body(list);
     }
+    
+    @GetMapping("/targets-bytype/{type}")
+    public ResponseEntity<List<TargetDTO>> getTargetByType(@PathVariable TargetType type) {
+    	TargetCriteria criteria = new TargetCriteria();
+    	TargetTypeFilter filter = new TargetTypeFilter();
+    	filter.setEquals(type);
+    	criteria.setType(new TargetTypeFilter(filter));
+		
+        log.debug("REST request to get Targets by criteria: {}", criteria);
+        List<TargetDTO> list = targetQueryService.findByCriteria(criteria);
+        log.debug("REST result for Targets: size is " +  list.size());
+        
+        return ResponseEntity.ok().body(list);
+    }
 
     @GetMapping("/targets/{id}")
     public ResponseEntity<TargetDTO> getTarget(@PathVariable Long id) {
-- 
GitLab