From 36a7a649d5dcef94c94d38234e475cca82293b9e Mon Sep 17 00:00:00 2001 From: tommi27 Date: Sat, 18 Apr 2020 17:35:14 +0200 Subject: [PATCH] started guest controllers (WIP) --- .../smarthut/controller/GuestController.java | 39 +++++++++++++++++++ .../smarthut/controller/SceneController.java | 10 +++-- .../smarthut/dto/GuestUserResponse.java | 14 +++++++ .../smarthut/dto/SceneSaveRequest.java | 12 ++++++ .../sanmarinoes/smarthut/models/Scene.java | 11 ++++++ .../sa4/sanmarinoes/smarthut/models/User.java | 26 ++++++++++--- 6 files changed, 103 insertions(+), 9 deletions(-) create mode 100644 src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/GuestController.java create mode 100644 src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/GuestUserResponse.java diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/GuestController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/GuestController.java new file mode 100644 index 0000000..ab47121 --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/GuestController.java @@ -0,0 +1,39 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; + +import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.GuestUserResponse; +import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException; +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.User; +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.UserRepository; +import java.security.Principal; +import java.util.List; +import javax.validation.Valid; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +public class GuestController { + + @Autowired private UserRepository userRepository; + + @GetMapping + public List findAll() { + return toList(userRepository.findAll()); + } + + @PostMapping + public void addUserAsGuest(long id, final Principal principal) throws NotFoundException { + User guest = userRepository.findById(id).orElseThrow(NotFoundException::new); + User host = userRepository.findByUsername(principal.getName()); + + host.addGuest(guest); + userRepository.save(guest); + userRepository.save(host); + } + + @PutMapping + public void updatePermissions(@Valid @RequestBody GuestUserResponse g, Principal principal) {} + + @DeleteMapping + public void removeUserAsGuest(long id) {} +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SceneController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SceneController.java index 2b4c9c1..a4da945 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SceneController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SceneController.java @@ -26,10 +26,10 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/scene") public class SceneController { - @Autowired SceneRepository sceneService; - @Autowired UserRepository userService; - @Autowired StateRepository> stateService; - @Autowired DeviceRepository deviceRepository; + @Autowired private SceneRepository sceneService; + @Autowired private UserRepository userService; + @Autowired private StateRepository> stateService; + @Autowired private DeviceRepository deviceRepository; @GetMapping public List findAll(Principal principal) { @@ -91,6 +91,8 @@ public class SceneController { newScene.setName(s.getName()); } + newScene.setGuestAccessEnabled(s.isGuestAccessEnabled()); + return sceneService.save(newScene); } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/GuestUserResponse.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/GuestUserResponse.java new file mode 100644 index 0000000..1afec1e --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/GuestUserResponse.java @@ -0,0 +1,14 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; + + +public class GuestUserResponse { + private boolean cameraEnabled; + + public boolean isCameraEnabled() { + return cameraEnabled; + } + + public void setCameraEnabled(boolean cameraEnabled) { + this.cameraEnabled = cameraEnabled; + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SceneSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SceneSaveRequest.java index ea3c6bd..080ea2b 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SceneSaveRequest.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SceneSaveRequest.java @@ -1,6 +1,7 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; import com.sun.istack.NotNull; +import javax.persistence.Column; public class SceneSaveRequest { @@ -10,6 +11,17 @@ public class SceneSaveRequest { /** The user given name of this room (e.g. 'Master bedroom') */ @NotNull private String name; + /** Determines whether a guest can access this scene */ + @Column @NotNull private boolean guestAccessEnabled; + + public boolean isGuestAccessEnabled() { + return guestAccessEnabled; + } + + public void setGuestAccessEnabled(boolean guestAccessEnabled) { + this.guestAccessEnabled = guestAccessEnabled; + } + public long getId() { return id; } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Scene.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Scene.java index e762087..8c18e3c 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Scene.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Scene.java @@ -39,6 +39,17 @@ public class Scene { @Column(nullable = false) private String name; + /** Determines whether a guest can access this scene */ + @Column private boolean guestAccessEnabled; + + public boolean isGuestAccessEnabled() { + return guestAccessEnabled; + } + + public void setGuestAccessEnabled(boolean guestAccessEnabled) { + this.guestAccessEnabled = guestAccessEnabled; + } + public String getName() { return name; } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/User.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/User.java index 23e8217..4f98f0f 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/User.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/User.java @@ -6,7 +6,6 @@ import java.util.HashSet; import java.util.Objects; import java.util.Set; import javax.persistence.*; -import javax.validation.constraints.NotNull; /** A user of the Smarthut application */ @Entity(name = "smarthutuser") @@ -56,10 +55,7 @@ public class User { private Set hosts = new HashSet<>(); /** Determines whether a guest can access security cameras */ - @Column @NotNull private boolean cameraEnabled; - - /** Determines whether a guest can access scenes */ - @Column @NotNull private boolean sceneEnabled; + @Column private boolean cameraEnabled; @Column(nullable = false) @GsonExclude @@ -113,6 +109,26 @@ public class User { isEnabled = enabled; } + public Set getGuests() { + return guests; + } + + public Set getHosts() { + return hosts; + } + + public boolean isCameraEnabled() { + return cameraEnabled; + } + + public void addGuest(User guest) { + this.guests.add(guest); + } + + public void setCameraEnabled(boolean cameraEnabled) { + this.cameraEnabled = cameraEnabled; + } + @Override public String toString() { return "User{"