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