From 8348795aea8e9c6d76dd5d5549f88f77a550bb5c Mon Sep 17 00:00:00 2001 From: birkon <birkon@stud.ntnu.no> Date: Thu, 20 Apr 2023 15:05:22 +0200 Subject: [PATCH] added connection between groupe and user in jpa --- .../v233/SmartMat/config/SecurityConfig.java | 1 + .../SmartMat/controller/UserController.java | 27 ++++++++++++++++--- .../v233/SmartMat/entity/group/Group.java | 13 ++++++--- .../v233/SmartMat/entity/user/User.java | 9 +++++++ 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java index 582c9171..5a55fab0 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java @@ -35,6 +35,7 @@ public class SecurityConfig { .authorizeHttpRequests(auth-> auth .requestMatchers(HttpMethod.POST, "api/auth/**").permitAll() .requestMatchers(HttpMethod.POST, "api/user/**").permitAll() + .requestMatchers(HttpMethod.GET, "api/groups/**").permitAll() .requestMatchers(HttpMethod.GET, "swagger-ui/**").permitAll() .requestMatchers(HttpMethod.GET, "/v3/api-docs/**").permitAll() .anyRequest().authenticated() diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/UserController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/UserController.java index a259109c..e986f120 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/UserController.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/UserController.java @@ -9,12 +9,16 @@ import ntnu.idatt2016.v233.SmartMat.service.user.UserService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +/** + * The user controller is responsible for handling requests related to users. + * It uses the user service to handle the requests. + * @author Birk + * @version 1.2 + * @since 20.04.2023 + */ @AllArgsConstructor @RestController @RequestMapping("/api/user") @@ -73,5 +77,20 @@ public class UserController { return ResponseEntity.ok(newUser); } + /** + * Get a user from the database. + * @param username The username of the user to be fetched. + * @return The user with the given username. + */ + @GetMapping("/get/{username}") + public ResponseEntity<User> getUser(@PathVariable String username) { + return userService.getUserFromUsername(username) + .map(user -> { + user.setPassword(null); + return ResponseEntity.ok(user); + }) + .orElseGet(() -> ResponseEntity.notFound().build()); + } + } \ No newline at end of file diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Group.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Group.java index 0f142102..a6dac8fa 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Group.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Group.java @@ -1,13 +1,15 @@ package ntnu.idatt2016.v233.SmartMat.entity.group; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import ntnu.idatt2016.v233.SmartMat.entity.user.User; + +import java.util.List; /** * Group is an entity class representing a group in the system. @@ -36,4 +38,9 @@ public class Group { @Column(name = "group_name") String groupName; + + @OneToMany(mappedBy = "group") + @JsonIgnoreProperties({"password", "group"}) + private List<User> users; + } diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java index aa2d2513..7a098494 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java @@ -1,12 +1,15 @@ package ntnu.idatt2016.v233.SmartMat.entity.user; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonIncludeProperties; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority; +import ntnu.idatt2016.v233.SmartMat.entity.group.Group; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @@ -54,6 +57,12 @@ public class User implements UserDetails { @Enumerated(EnumType.STRING) private Authority authority; + + @ManyToOne + @JoinColumn(name = "group_id") + @JsonIgnoreProperties("users") + private Group group; + /** * used when created jwts and validating user authority * @return the users authority -- GitLab