diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AdminDTO.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AdminDTO.java index f07fe8c..30bac97 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AdminDTO.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AdminDTO.java @@ -1,4 +1,5 @@ package hackathon.FrisbYEE.jpa.dto; +import hackathon.FrisbYEE.jpa.metier.Role; import lombok.Data; @Data @@ -7,4 +8,5 @@ public class AdminDTO { private Integer id; private String name; private String prenom; + private Role role; } diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/service/AdminDAO.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/service/AdminDAO.java index 273dccb..20a1d0b 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/service/AdminDAO.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/service/AdminDAO.java @@ -1,10 +1,13 @@ package hackathon.FrisbYEE.jpa.service; import hackathon.FrisbYEE.jpa.metier.Admin; + +import java.util.Optional; + import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface AdminDAO extends JpaRepository { - + Optional findByKeycloakId(String keycloakId); } \ No newline at end of file diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/service/UserDAO.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/service/UserDAO.java index d63ee5c..0f2693d 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/service/UserDAO.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/service/UserDAO.java @@ -1,6 +1,5 @@ package hackathon.FrisbYEE.jpa.service; -import hackathon.FrisbYEE.jpa.metier.Coach; import hackathon.FrisbYEE.jpa.metier.User; import java.util.Optional; @@ -10,5 +9,5 @@ import org.springframework.stereotype.Repository; @Repository public interface UserDAO extends JpaRepository { - Optional findByKeycloakId(String keycloakId); + Optional findByKeycloakId(String keycloakId); } diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/AdminResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/AdminResource.java new file mode 100644 index 0000000..bb0a259 --- /dev/null +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/AdminResource.java @@ -0,0 +1,48 @@ +package hackathon.FrisbYEE.rest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import hackathon.FrisbYEE.jpa.dto.AdminDTO; +import hackathon.FrisbYEE.jpa.metier.Admin; +import hackathon.FrisbYEE.jpa.service.AdminDAO; + +@RestController +@RequestMapping("/admin") +@CrossOrigin(origins = "http://localhost:3000") +public class AdminResource { + + @Autowired + private AdminDAO adminDAO; + + @GetMapping("/{id}") + @PreAuthorize("hasRole('admin')") + public ResponseEntity getAdmin(@PathVariable Integer id) { + Admin admin = adminDAO.findById(id).get(); + return ResponseEntity.ok(mapToDTO(admin)); + } + + @GetMapping("/keycloak/{keycloak_id}") + @PreAuthorize("hasRole('admin')") + public ResponseEntity getByKeycloakId(@PathVariable String keycloak_id) { + Admin admin = adminDAO.findByKeycloakId(keycloak_id).get(); + return ResponseEntity.ok(mapToDTO(admin)); + } + + private AdminDTO mapToDTO(Admin admin) { + AdminDTO dto = new AdminDTO(); + dto.setId(admin.getId()); + dto.setId_keycloak(admin.getKeycloakId()); + dto.setName(admin.getName()); + dto.setPrenom(admin.getPrenom()); + dto.setRole(admin.getRole()); + + return dto; + } +} diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/UserResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/UserResource.java index 4e43a0c..defde3e 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/UserResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/UserResource.java @@ -54,8 +54,8 @@ public class UserResource { }) @GetMapping("/{id}") @PreAuthorize("hasRole('admin') or hasRole('coach') or hasRole('athlete')") - public ResponseEntity getById(@PathVariable String id) { - User user = userDAO.findByKeycloakId(id).get(); + public ResponseEntity getById(@PathVariable Integer id) { + User user = userDAO.findById(id).get(); return ResponseEntity.ok(mapToDTO(user)); } diff --git a/front_end/src/api.ts b/front_end/src/api.ts index 976da0b..adbf284 100644 --- a/front_end/src/api.ts +++ b/front_end/src/api.ts @@ -94,9 +94,15 @@ export const coachService = { }; export const userService = { - getByKeycloakId: (keycloak_id: string) => api.get(`/users/${keycloak_id}`), + getById: (id: number) => api.get(`/users/${id}`), + getByKeycloakId: (keycloak_id: string) => api.get(`/users/keycloak/${keycloak_id}`), getAll: () => api.get(`/users/all`), sync: () => api.post(`/users/sync`), }; +export const adminService = { + getByKeycloakId: (keycloak_id: string) => api.get(`/admin/keycloak/${keycloak_id}`), + getById: (id: number | string) => api.get(`/admin/${id}`), +}; + export default api; \ No newline at end of file