From b6c4cb1575d5461d0aebe1a57e202d5d06f61d7c Mon Sep 17 00:00:00 2001 From: Rohan Sircar Date: Thu, 23 Jul 2020 13:12:44 +0530 Subject: [PATCH] added api endpoint for displaying user in admin --- .../chatto/controller/AdminController.java | 5 + .../controller/AdminRESTController.java | 17 +- .../java/org/ros/chatto/dto/AdminUserDTO.java | 17 ++ .../ros/chatto/repository/UserRepository.java | 5 + .../org/ros/chatto/service/AdminService.java | 20 ++ src/main/resources/templates/admin/users.html | 213 ++++++++++++++++++ .../resources/templates/fragments/admin.html | 151 +++++++++---- 7 files changed, 373 insertions(+), 55 deletions(-) create mode 100644 src/main/java/org/ros/chatto/dto/AdminUserDTO.java create mode 100644 src/main/java/org/ros/chatto/service/AdminService.java create mode 100644 src/main/resources/templates/admin/users.html diff --git a/src/main/java/org/ros/chatto/controller/AdminController.java b/src/main/java/org/ros/chatto/controller/AdminController.java index 40c55ce..51621d3 100644 --- a/src/main/java/org/ros/chatto/controller/AdminController.java +++ b/src/main/java/org/ros/chatto/controller/AdminController.java @@ -27,4 +27,9 @@ public class AdminController { model.addAttribute("userNames", userService.getAllRegularUsers()); return "admin/change-passphrase"; } + + @GetMapping("/users") + public String usersPage() { + return "admin/users"; + } } diff --git a/src/main/java/org/ros/chatto/controller/AdminRESTController.java b/src/main/java/org/ros/chatto/controller/AdminRESTController.java index d709cbd..04e915b 100644 --- a/src/main/java/org/ros/chatto/controller/AdminRESTController.java +++ b/src/main/java/org/ros/chatto/controller/AdminRESTController.java @@ -7,8 +7,10 @@ import java.util.List; import javax.validation.Valid; +import org.ros.chatto.dto.AdminUserDTO; import org.ros.chatto.dto.ChatMessageDTO; import org.ros.chatto.dto.ReencryptionDTO; +import org.ros.chatto.service.AdminService; import org.ros.chatto.service.ChatService; import org.ros.chatto.service.UserService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,14 +23,17 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import lombok.RequiredArgsConstructor; + @RestController @RequestMapping("/api/admin") +@RequiredArgsConstructor public class AdminRESTController { - @Autowired - private ChatService chatService; + private final ChatService chatService; + + private final UserService userService; - @Autowired - private UserService userService; + private final AdminService adminService; @PostMapping(value = "/post/re-encrypt", consumes = { "application/json" }) public ResponseEntity reencryptMessages( @@ -62,7 +67,7 @@ public class AdminRESTController { } @GetMapping("/get/users") - public List getAllOtherUsers(Principal principal) { - return userService.findAllOtherUsers(principal.getName()); + public List getAllOtherUsers(Principal principal) { + return adminService.getOtherUsers(principal.getName()); } } diff --git a/src/main/java/org/ros/chatto/dto/AdminUserDTO.java b/src/main/java/org/ros/chatto/dto/AdminUserDTO.java new file mode 100644 index 0000000..cb25970 --- /dev/null +++ b/src/main/java/org/ros/chatto/dto/AdminUserDTO.java @@ -0,0 +1,17 @@ +package org.ros.chatto.dto; + +import java.time.Instant; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +@AllArgsConstructor +public class AdminUserDTO { + private int id; + private String userName; + private String role; + private Instant joinDate; +} \ No newline at end of file diff --git a/src/main/java/org/ros/chatto/repository/UserRepository.java b/src/main/java/org/ros/chatto/repository/UserRepository.java index e8c60e1..cd477d8 100644 --- a/src/main/java/org/ros/chatto/repository/UserRepository.java +++ b/src/main/java/org/ros/chatto/repository/UserRepository.java @@ -3,6 +3,7 @@ package org.ros.chatto.repository; import java.util.List; import java.util.Optional; +import org.ros.chatto.dto.AdminUserDTO; import org.ros.chatto.model.ChatUser; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -18,4 +19,8 @@ public interface UserRepository extends JpaRepository { @Query("select count(u) from ChatUser u") public Long totalUsers(); + + @Query("select new org.ros.chatto.dto.AdminUserDTO(u.userID, u.userName, ur.role.name, u.joinDate )" + + " from ChatUser u join u.userRoles ur ") + public List getOtherUsers(String principal); } diff --git a/src/main/java/org/ros/chatto/service/AdminService.java b/src/main/java/org/ros/chatto/service/AdminService.java new file mode 100644 index 0000000..ababd91 --- /dev/null +++ b/src/main/java/org/ros/chatto/service/AdminService.java @@ -0,0 +1,20 @@ +package org.ros.chatto.service; + +import java.security.Principal; +import java.util.List; + +import org.ros.chatto.dto.AdminUserDTO; +import org.ros.chatto.repository.UserRepository; +import org.springframework.stereotype.Service; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class AdminService { + private final UserRepository userRepository; + + public List getOtherUsers(String principal) { + return userRepository.getOtherUsers(principal); + } +} \ No newline at end of file diff --git a/src/main/resources/templates/admin/users.html b/src/main/resources/templates/admin/users.html new file mode 100644 index 0000000..4eec3aa --- /dev/null +++ b/src/main/resources/templates/admin/users.html @@ -0,0 +1,213 @@ + + + + +
+ Users +
+ + + + + + + + + + + + + + +
+ + +
+ + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ + +
+
+
Users
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
User IDUser NameRoleRegistration DateAction
1Item 1$1
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
2Item 2$2
+
+
+ +
+
+ +
+ + +
+ + +
+ +
+ + +
+ + + +
+ +
+ + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/fragments/admin.html b/src/main/resources/templates/fragments/admin.html index a998bf6..59a114a 100644 --- a/src/main/resources/templates/fragments/admin.html +++ b/src/main/resources/templates/fragments/admin.html @@ -7,24 +7,46 @@ Navbar Fragment --> - - + + - - + + - - - - - - - - + + + + + + + + + + + + + + + + + + + - + @@ -40,7 +62,8 @@