From 91c12cd802b3d68ce7f08797d477e02ed48536a1 Mon Sep 17 00:00:00 2001
From: unknown <89336274+huanis@users.noreply.github.com>
Date: Sat, 11 Jun 2022 02:31:36 +0700
Subject: [PATCH] AdminAuth is now a utility class

---
 .../adminauth/model/AdminAuthorization.java         | 13 ++++---------
 .../id/ui/cs/deadliners/projects/model/Project.java |  6 +++---
 .../templates/project-page/project_page.html        |  6 ++++--
 .../deadliners/adminauth/model/AdminAuthTest.java   |  2 +-
 4 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/id/ui/cs/deadliners/adminauth/model/AdminAuthorization.java b/src/main/java/com/id/ui/cs/deadliners/adminauth/model/AdminAuthorization.java
index b06542d..329e0c0 100644
--- a/src/main/java/com/id/ui/cs/deadliners/adminauth/model/AdminAuthorization.java
+++ b/src/main/java/com/id/ui/cs/deadliners/adminauth/model/AdminAuthorization.java
@@ -3,33 +3,28 @@ package com.id.ui.cs.deadliners.adminauth.model;
 import com.id.ui.cs.deadliners.appuser.model.appuser.AppUser;
 import com.id.ui.cs.deadliners.projects.model.dto.Response;
 import lombok.NoArgsConstructor;
+import lombok.experimental.UtilityClass;
 
 import java.util.Set;
 
-@NoArgsConstructor
+@UtilityClass
 public class AdminAuthorization {
-    public static final AdminAuthorization instance = new AdminAuthorization();
-
     public static final String ERROR_MSG = "Failed to execute query";
 
-    public static AdminAuthorization getInstance(){
-        return instance;
-    }
-
     private boolean checkAdmin(AppUser admin, AppUser currentUser){
         return admin.getEmail().equals(currentUser.getEmail());
     }
 
     public Response queryHandler(AppUser admin, AppUser currentUser, AppUser queriedUser, int query,
                                  Set<AppUser> memberList, Set<AppUser> pendingList){
-        if (checkAdmin(admin, currentUser)){
+        if (checkAdmin(admin, currentUser) && !checkAdmin(admin, queriedUser)){
             switch(query){
                 case 1:
                     return acceptUser(queriedUser, pendingList, memberList);
                 case 2:
                     return rejectUser(queriedUser, pendingList);
                 default:
-                    return kickMember(queriedUser, memberList);
+                    kickMember(queriedUser, memberList);
             }
         }
 
diff --git a/src/main/java/com/id/ui/cs/deadliners/projects/model/Project.java b/src/main/java/com/id/ui/cs/deadliners/projects/model/Project.java
index 5c8d5ce..a5574df 100644
--- a/src/main/java/com/id/ui/cs/deadliners/projects/model/Project.java
+++ b/src/main/java/com/id/ui/cs/deadliners/projects/model/Project.java
@@ -59,7 +59,7 @@ public class Project implements Serializable {
     private Date createAt;
 
     private Response administrativeQuery(AppUser currentUser, AppUser queriedUser, int query){
-        return AdminAuthorization.getInstance().queryHandler(admin, currentUser, queriedUser, query, members, pendingMembers);
+        return AdminAuthorization.queryHandler(admin, currentUser, queriedUser, query, members, pendingMembers);
     }
 
     public Response acceptUser(AppUser currentUser, AppUser queriedUser){
@@ -75,11 +75,11 @@ public class Project implements Serializable {
     }
 
     public Response addToPending(AppUser user){
-        return AdminAuthorization.getInstance().addToPending(user, pendingMembers);
+        return AdminAuthorization.addToPending(user, pendingMembers);
     }
 
     public boolean isMember(AppUser user) {
-        return AdminAuthorization.getInstance().isMember(user, members);
+        return AdminAuthorization.isMember(user, members);
     }
 
     public boolean isAdmin(AppUser user){
diff --git a/src/main/resources/templates/project-page/project_page.html b/src/main/resources/templates/project-page/project_page.html
index ba50233..0dfc1c3 100644
--- a/src/main/resources/templates/project-page/project_page.html
+++ b/src/main/resources/templates/project-page/project_page.html
@@ -144,7 +144,8 @@
 
                     <li class="list-group-item">
                         <div class="link-project-name subproject-content"  th:text="${member.getFirstName() + ' ' + member.getLastName()}" style="display: inline-block; float: left;"></div>
-                        <form th:if="${admin}" th:action="@{/member-management/kick}" method="GET" style="display: inline-block; float: right;">
+                        <div th:if="${!project.isAdmin(member)}">
+                        <form th:if="${admin}" th:action="@{/member-management/kick}" method="POST" style="display: inline-block; float: right;">
                             <input type="hidden" name="email" th:value="${member.getEmail()}" />
                             <input type="hidden" name="projectId" th:value="${project.getId()}" />
                             <button
@@ -154,6 +155,7 @@
                                 Kick
                             </button>
                         </form>
+                        </div>
                     </li>
 
                 </ul>
@@ -170,7 +172,7 @@
 
                     <li class="list-group-item">
                         <div class="link-project-name subproject-content" th:text="${pendingMember.getFirstName() + ' ' + pendingMember.getLastName()}" style="display: inline-block; float: left;"></div>
-                        <form class="form-group" th:action="@{/member-management/reject}" method="GET" style="display: inline-block; float: right; margin-left: 10px; margin-right: 10px;">
+                        <form class="form-group" th:action="@{/member-management/reject}" method="POST" style="display: inline-block; float: right; margin-left: 10px; margin-right: 10px;">
                             <input type="hidden" name="email" th:value="${pendingMember.getEmail()}" />
                             <input type="hidden" name="projectId" th:value="${project.getId()}" />
                             <button
diff --git a/src/test/java/com/id/ui/cs/deadliners/adminauth/model/AdminAuthTest.java b/src/test/java/com/id/ui/cs/deadliners/adminauth/model/AdminAuthTest.java
index 60410a9..3f6ddcc 100644
--- a/src/test/java/com/id/ui/cs/deadliners/adminauth/model/AdminAuthTest.java
+++ b/src/test/java/com/id/ui/cs/deadliners/adminauth/model/AdminAuthTest.java
@@ -7,6 +7,6 @@ import org.junit.jupiter.api.Test;
 class AdminAuthTest {
     @Test
     void testAdminAuthIsSingleton(){
-        assertSame(AdminAuthorization.getInstance(), AdminAuthorization.getInstance());
+
     }
 }
-- 
GitLab