Rohan Sircar
4 years ago
7 changed files with 373 additions and 55 deletions
-
5src/main/java/org/ros/chatto/controller/AdminController.java
-
17src/main/java/org/ros/chatto/controller/AdminRESTController.java
-
17src/main/java/org/ros/chatto/dto/AdminUserDTO.java
-
5src/main/java/org/ros/chatto/repository/UserRepository.java
-
20src/main/java/org/ros/chatto/service/AdminService.java
-
213src/main/resources/templates/admin/users.html
-
151src/main/resources/templates/fragments/admin.html
@ -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; |
||||
|
} |
@ -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<AdminUserDTO> getOtherUsers(String principal) { |
||||
|
return userRepository.getOtherUsers(principal); |
||||
|
} |
||||
|
} |
@ -0,0 +1,213 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html xmlns:th="http://www.thymeleaf.org"> |
||||
|
|
||||
|
<head> |
||||
|
<div th:replace="fragments/head :: headFragment"> |
||||
|
<title id="pageTitle">Users</title> |
||||
|
</div> |
||||
|
<script src="https://code.jquery.com/jquery-2.1.4.min.js" th:if="false"></script> |
||||
|
<script src="http://blackpeppersoftware.github.io/thymeleaf-fragment.js/thymeleaf-fragment.js" |
||||
|
data-template-prefix="../" defer="defer" th:if="false"></script> |
||||
|
|
||||
|
<th:block th:include="fragments/admin :: headFragment"></th:block> |
||||
|
|
||||
|
<style> |
||||
|
.sidebar { |
||||
|
height: 100%; |
||||
|
} |
||||
|
</style> |
||||
|
</head> |
||||
|
<!-- TODO |
||||
|
Make user admin / remove user from admin |
||||
|
Change E2E passphrase |
||||
|
Delete Messages |
||||
|
--> |
||||
|
|
||||
|
<!-- <div th:include="fragments/admin :: admin-sidebar"></div> --> |
||||
|
|
||||
|
<body id="page-top"> |
||||
|
|
||||
|
<!-- Page Wrapper --> |
||||
|
<div id="wrapper"> |
||||
|
|
||||
|
|
||||
|
<div th:include="fragments/admin :: sidebar-fragment"></div> |
||||
|
|
||||
|
<!-- Content Wrapper --> |
||||
|
<div id="content-wrapper" class="d-flex flex-column" style="background-color: #333;"> |
||||
|
|
||||
|
<!-- Main Content --> |
||||
|
<div id="content"> |
||||
|
|
||||
|
<div th:include="fragments/admin :: topbar-fragment"></div> |
||||
|
|
||||
|
<!-- Begin Page Content --> |
||||
|
<div class="container-fluid"> |
||||
|
|
||||
|
<!-- Page Heading --> |
||||
|
|
||||
|
<!-- Content Row --> |
||||
|
<div class="row"> |
||||
|
|
||||
|
<div class="col-lg-10 offset-lg-1"> |
||||
|
|
||||
|
<!-- Approach --> |
||||
|
<div class="card bg-dark border border-dark text-white shadow mb-4"> |
||||
|
<div class="card-header bg-secondary border border-secondary py-3"> |
||||
|
<h6 class="m-0 font-weight-bold text-white">Users</h6> |
||||
|
</div> |
||||
|
<div class="card-body"> |
||||
|
<table data-toggle="table" class="text-white"> |
||||
|
<thead> |
||||
|
<tr> |
||||
|
<th>User ID</th> |
||||
|
<th>User Name</th> |
||||
|
<th>Role</th> |
||||
|
<th>Registration Date</th> |
||||
|
<th>Action</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<td>1</td> |
||||
|
<td>Item 1</td> |
||||
|
<td>$1</td> |
||||
|
<td></td> |
||||
|
<td><button class="btn btn-info"><i |
||||
|
class="fas fa-ellipsis-h"></i></button></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>2</td> |
||||
|
<td>Item 2</td> |
||||
|
<td>$2</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<!-- /.container-fluid --> |
||||
|
|
||||
|
</div> |
||||
|
<!-- End of Main Content --> |
||||
|
|
||||
|
<div th:include="fragments/admin :: footer"></div> |
||||
|
|
||||
|
</div> |
||||
|
<!-- End of Content Wrapper --> |
||||
|
|
||||
|
</div> |
||||
|
<!-- End of Page Wrapper --> |
||||
|
|
||||
|
<th:block th:include="fragments/admin :: modal"></th:block> |
||||
|
<div th:if="false"> |
||||
|
<th:block th:include="admin :: modal"></th:block> |
||||
|
</div> |
||||
|
|
||||
|
<template id="users-table-template"> |
||||
|
<tr> |
||||
|
<td>{{id}}</td> |
||||
|
<td>{{userName}}</td> |
||||
|
<td>{{role}}</td> |
||||
|
<td>{{joinDate}}</td> |
||||
|
<td></td> |
||||
|
</tr> |
||||
|
</template> |
||||
|
|
||||
|
</body> |
||||
|
|
||||
|
</html> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue