diff --git a/src/main/java/polish_community_group_11/polish_community/admin/controllers/AdminApiController.java b/src/main/java/polish_community_group_11/polish_community/admin/controllers/AdminApiController.java new file mode 100644 index 0000000000000000000000000000000000000000..8f8aea46bc9aab8de1c2920cc4eaf5810cd97798 --- /dev/null +++ b/src/main/java/polish_community_group_11/polish_community/admin/controllers/AdminApiController.java @@ -0,0 +1,26 @@ +package polish_community_group_11.polish_community.admin.controllers; + +import org.springframework.web.bind.annotation.*; +import polish_community_group_11.polish_community.admin.models.AdminBoard; +import polish_community_group_11.polish_community.admin.models.ManageUser; +import polish_community_group_11.polish_community.admin.services.AdminService; + +@RestController +public class AdminApiController { + private final AdminService adminService; + + public AdminApiController(AdminService adminService) { + this.adminService = adminService; + } + + @PutMapping("admin/edit/role/{role_name}") + public void changeUserRole(@PathVariable("role_name") String role_name, + @ModelAttribute ManageUser user){ + adminService.updateUserRole(user,role_name); + } + + @DeleteMapping("admin/delete/{user_id}") + public void removeUser(@PathVariable("user_id") int user_id){ + adminService.deleteUser(user_id); + } +} diff --git a/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepository.java b/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepository.java index 9cad39f168482d32e7060681171a1ce9c5c071e9..fc773c9c2ebee9fc262d606558029e60ccd3c723 100644 --- a/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepository.java +++ b/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepository.java @@ -9,4 +9,6 @@ import java.util.List; public interface AdminRepository { List<ManageUser> getUserManagementInfo() throws SQLException; AdminBoard getBoardManagementInfo() throws SQLException; + int updateUserRole(ManageUser user); + void deleteUser(int userId); } diff --git a/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepositoryImpl.java b/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepositoryImpl.java index 0f62d3a423ecf0a9626321c5227ad9141be0a7e8..3659da4df2575916d9de4b92d21b0c467a3beeed 100644 --- a/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepositoryImpl.java +++ b/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepositoryImpl.java @@ -31,6 +31,7 @@ public class AdminRepositoryImpl implements AdminRepository { rs.getString("fullname"), rs.getString("email"), rs.getBoolean("enabled"), + rs.getInt("role_id"), rs.getString("role_name") ); }; @@ -93,4 +94,14 @@ public class AdminRepositoryImpl implements AdminRepository { } return dashboard; } + + public int updateUserRole(ManageUser user){ + String sql="UPDATE users SET role_id=? WHERE id =?"; + return jdbc.update(sql,user.getRole_id(),user.getId()); + } + + public void deleteUser(int userId){ + String sql="DELETE FROM users WHERE id =?"; + jdbc.update(sql,userId); + } } diff --git a/src/main/java/polish_community_group_11/polish_community/admin/models/ManageUser.java b/src/main/java/polish_community_group_11/polish_community/admin/models/ManageUser.java index 73c638cb0f9cb0ad14cad5a818638042eaff43b2..154adb4de538e16958c18895c766c5ca242d1a63 100644 --- a/src/main/java/polish_community_group_11/polish_community/admin/models/ManageUser.java +++ b/src/main/java/polish_community_group_11/polish_community/admin/models/ManageUser.java @@ -12,5 +12,6 @@ public class ManageUser { private String fullName; private String email; private Boolean enabled; + private int role_id; private String role; } diff --git a/src/main/java/polish_community_group_11/polish_community/admin/services/AdminService.java b/src/main/java/polish_community_group_11/polish_community/admin/services/AdminService.java index da2d1b9a9d4958fa18968dd108be1d2c7c1c9d30..15340967d488bdb1149be2c762bee3aea8f23734 100644 --- a/src/main/java/polish_community_group_11/polish_community/admin/services/AdminService.java +++ b/src/main/java/polish_community_group_11/polish_community/admin/services/AdminService.java @@ -9,4 +9,6 @@ import java.util.List; public interface AdminService { List<ManageUser> getUserManagementInfo() throws SQLException; AdminBoard getBoardManagementInfo() throws SQLException; + void updateUserRole(ManageUser user,String roleName); + void deleteUser(int userId); } diff --git a/src/main/java/polish_community_group_11/polish_community/admin/services/AdminServiceImpl.java b/src/main/java/polish_community_group_11/polish_community/admin/services/AdminServiceImpl.java index b3e910351840621817894f80002d7faabaa2038c..2d7d6ebc58e91c7ead073250b3439a6873ccc6d5 100644 --- a/src/main/java/polish_community_group_11/polish_community/admin/services/AdminServiceImpl.java +++ b/src/main/java/polish_community_group_11/polish_community/admin/services/AdminServiceImpl.java @@ -21,4 +21,18 @@ public class AdminServiceImpl implements AdminService { public AdminBoard getBoardManagementInfo() throws SQLException{ return adminRepository.getBoardManagementInfo(); } + + public void updateUserRole(ManageUser user, String roleName){ + boolean needsUpdate=roleName.toLowerCase().equals(user.getRole().toLowerCase())? + false:true; + if(needsUpdate){ + int updatedRoleId=roleName.toLowerCase().equals("admin")?1:2; + user.setRole_id(updatedRoleId); + adminRepository.updateUserRole(user); + } + } + + public void deleteUser(int userId){ + adminRepository.deleteUser(userId); + } }