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