From 4721d1be23d4e2d832c424d7ed5b7f882c1b7094 Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Fri, 29 Jul 2022 16:13:38 +0200 Subject: [PATCH] PackagerEntity, -Repository and -Controller --- README.md | 23 ++++++++---- .../CustomerController.java | 2 +- .../CustomerEntity.java | 2 +- .../CustomerRepository.java | 2 +- .../hspackage/PackageController.java | 37 +++++++++++++++++++ .../hsadminng/hspackage/PackageEntity.java | 21 +++++++++++ .../hspackage/PackageRepository.java | 9 +++++ 7 files changed, 85 insertions(+), 11 deletions(-) rename src/main/java/net/hostsharing/hsadminng/{customer => hscustomer}/CustomerController.java (96%) rename src/main/java/net/hostsharing/hsadminng/{customer => hscustomer}/CustomerEntity.java (86%) rename src/main/java/net/hostsharing/hsadminng/{customer => hscustomer}/CustomerRepository.java (78%) create mode 100644 src/main/java/net/hostsharing/hsadminng/hspackage/PackageController.java create mode 100644 src/main/java/net/hostsharing/hsadminng/hspackage/PackageEntity.java create mode 100644 src/main/java/net/hostsharing/hsadminng/hspackage/PackageRepository.java diff --git a/README.md b/README.md index 16391f5a..d5c819cb 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,15 @@ - [Setting up the Development Environment](#setting-up-the-development-environment) - - [SDKMAN](#sdkman) - - [PostgreSQL Server](#postgresql-server) - - [Markdown with PlantUML plugin](#markdown-with-plantuml-plugin) - - [Other Tools](#other-tools) + - [SDKMAN](#sdkman) + - [PostgreSQL Server](#postgresql-server) + - [Markdown](#markdown) + - [Render Markdown embedded PlantUML](#render-markdown-embedded-plantuml) + - [Other Tools](#other-tools) - [Running the SQL files](#running-the-sql-files) - - [For RBAC](#for-rbac) - - [For Historization](#for-historization) + - [For RBAC](#for-rbac) + - [For Historization](#for-historization) + ## Setting up the Development Environment @@ -40,12 +42,17 @@ If you have at least Docker, the Java JDK and Gradle installed in appropriate ve # the following command should reply with "pong": curl http://localhost:8080/api/ping - # the following command should return a JSON array with just the customer aac: + # the following command should return a JSON array with just all customers: curl \ -H 'current-user: mike@hostsharing.net' \ - -H 'assumed-roles: customer#aac.admin' \ http://localhost:8080/api/customer + # the following command should return a JSON array with just all packages visible for the admin of the customer aab: + curl \ + -H 'current-user: mike@hostsharing.net' \ + -H 'assumed-roles: customer#aab.admin' \ + http://localhost:8080/api/package + The latter `curl` command actually goes through the database server. diff --git a/src/main/java/net/hostsharing/hsadminng/customer/CustomerController.java b/src/main/java/net/hostsharing/hsadminng/hscustomer/CustomerController.java similarity index 96% rename from src/main/java/net/hostsharing/hsadminng/customer/CustomerController.java rename to src/main/java/net/hostsharing/hsadminng/hscustomer/CustomerController.java index d9ac35a4..b172a068 100644 --- a/src/main/java/net/hostsharing/hsadminng/customer/CustomerController.java +++ b/src/main/java/net/hostsharing/hsadminng/hscustomer/CustomerController.java @@ -1,4 +1,4 @@ -package net.hostsharing.hsadminng.customer; +package net.hostsharing.hsadminng.hscustomer; import net.hostsharing.hsadminng.context.Context; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/net/hostsharing/hsadminng/customer/CustomerEntity.java b/src/main/java/net/hostsharing/hsadminng/hscustomer/CustomerEntity.java similarity index 86% rename from src/main/java/net/hostsharing/hsadminng/customer/CustomerEntity.java rename to src/main/java/net/hostsharing/hsadminng/hscustomer/CustomerEntity.java index ad8d6d8f..05f0b6a3 100644 --- a/src/main/java/net/hostsharing/hsadminng/customer/CustomerEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hscustomer/CustomerEntity.java @@ -1,4 +1,4 @@ -package net.hostsharing.hsadminng.customer; +package net.hostsharing.hsadminng.hscustomer; import lombok.Getter; diff --git a/src/main/java/net/hostsharing/hsadminng/customer/CustomerRepository.java b/src/main/java/net/hostsharing/hsadminng/hscustomer/CustomerRepository.java similarity index 78% rename from src/main/java/net/hostsharing/hsadminng/customer/CustomerRepository.java rename to src/main/java/net/hostsharing/hsadminng/hscustomer/CustomerRepository.java index 03ed76d5..293cbef8 100644 --- a/src/main/java/net/hostsharing/hsadminng/customer/CustomerRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hscustomer/CustomerRepository.java @@ -1,4 +1,4 @@ -package net.hostsharing.hsadminng.customer; +package net.hostsharing.hsadminng.hscustomer; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/net/hostsharing/hsadminng/hspackage/PackageController.java b/src/main/java/net/hostsharing/hsadminng/hspackage/PackageController.java new file mode 100644 index 00000000..1441c67f --- /dev/null +++ b/src/main/java/net/hostsharing/hsadminng/hspackage/PackageController.java @@ -0,0 +1,37 @@ +package net.hostsharing.hsadminng.hspackage; + +import net.hostsharing.hsadminng.context.Context; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.transaction.Transactional; +import java.util.List; + +@Controller +public class PackageController { + + @Autowired + private Context context; + + @Autowired + private PackageRepository packageRepository; + + @ResponseBody + @RequestMapping(value = "/api/package", method = RequestMethod.GET) + @Transactional + public List listPackages( + @RequestHeader(value = "current-user") String userName, + @RequestHeader(value = "assumed-roles", required = false) String assumedRoles + ) { + context.setCurrentUser(userName); + if (assumedRoles != null && !assumedRoles.isBlank()) { + context.assumeRoles(assumedRoles); + } + return packageRepository.findAll(); + } + +} diff --git a/src/main/java/net/hostsharing/hsadminng/hspackage/PackageEntity.java b/src/main/java/net/hostsharing/hsadminng/hspackage/PackageEntity.java new file mode 100644 index 00000000..16feb7eb --- /dev/null +++ b/src/main/java/net/hostsharing/hsadminng/hspackage/PackageEntity.java @@ -0,0 +1,21 @@ +package net.hostsharing.hsadminng.hspackage; + +import lombok.Getter; +import net.hostsharing.hsadminng.hscustomer.CustomerEntity; + +import javax.persistence.*; +import java.util.UUID; + +@Entity +@Table(name = "package_rv") +@Getter +public class PackageEntity { + + private @Id UUID uuid; + + private String name; + + @ManyToOne(optional = false) + @JoinColumn(name = "customeruuid") + private CustomerEntity customer; +} diff --git a/src/main/java/net/hostsharing/hsadminng/hspackage/PackageRepository.java b/src/main/java/net/hostsharing/hsadminng/hspackage/PackageRepository.java new file mode 100644 index 00000000..0f3c8c38 --- /dev/null +++ b/src/main/java/net/hostsharing/hsadminng/hspackage/PackageRepository.java @@ -0,0 +1,9 @@ +package net.hostsharing.hsadminng.hspackage; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.UUID; + +public interface PackageRepository extends JpaRepository { + +}