Ignore:
Timestamp:
05/23/26 19:27:12 (4 months ago)
Author:
MBK <marija.karapandzova@…>
Branches:
master
Children:
ccb5a6b
Parents:
43e476a
Message:

Assign roles for doctors and patients and add role permissions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • backend/src/main/java/medora/controller/DoctorController.java

    r43e476a r946877f  
    11package medora.controller;
    22
    3 import medora.dto.*;
    4 import medora.models.domain.Departments;
     3import medora.dto.DoctorDTO;
     4import medora.dto.CreateDoctorRequest;
     5import medora.dto.DoctorLevelDTO;
     6import medora.dto.DoctorSpecializationDTO;
     7import medora.dto.DepartmentDTO;
     8import medora.models.domain.Doctors;
    59import medora.models.domain.DoctorLevel;
    610import medora.models.domain.DoctorSpecialization;
    7 import medora.models.domain.Doctors;
     11import medora.models.domain.Departments;
    812import medora.service.DoctorService;
     13import medora.util.SecurityUtil;
    914import org.slf4j.Logger;
    1015import org.slf4j.LoggerFactory;
     
    1217import org.springframework.http.ResponseEntity;
    1318import org.springframework.web.bind.annotation.*;
     19import jakarta.servlet.http.HttpServletRequest;
    1420
    1521import java.util.List;
     
    2430
    2531    private final DoctorService doctorService;
    26 
    27     public DoctorController(DoctorService doctorService) {
     32    private final SecurityUtil securityUtil;
     33
     34    public DoctorController(DoctorService doctorService, SecurityUtil securityUtil) {
    2835        this.doctorService = doctorService;
     36        this.securityUtil = securityUtil;
    2937    }
    3038
    3139    @PostMapping
    32     public ResponseEntity<?> createDoctor(@RequestBody CreateDoctorRequest request) {
    33         try {
     40    public ResponseEntity<?> createDoctor(@RequestBody CreateDoctorRequest request, HttpServletRequest httpRequest) {
     41        try {
     42            String role = securityUtil.getRoleFromRequest(httpRequest);
     43            if (role == null) {
     44                return ResponseEntity.status(HttpStatus.UNAUTHORIZED)
     45                        .body(Map.of("error", "Unauthorized"));
     46            }
     47
     48            // Only ADMIN can create doctors
     49            if (!role.equals("ADMIN")) {
     50                return ResponseEntity.status(HttpStatus.FORBIDDEN)
     51                        .body(Map.of("error", "Only administrators can create doctors"));
     52            }
    3453            if (request.getFirstName() == null || request.getFirstName().isBlank()) {
    3554                return ResponseEntity.badRequest()
     
    193212    @PutMapping("/{doctorId}")
    194213    public ResponseEntity<?> updateDoctor(@PathVariable Long doctorId,
    195                                          @RequestBody CreateDoctorRequest request) {
    196         try {
     214                                          @RequestBody CreateDoctorRequest request,
     215                                          HttpServletRequest httpRequest) {
     216        try {
     217            String role = securityUtil.getRoleFromRequest(httpRequest);
     218            if (role == null) {
     219                return ResponseEntity.status(HttpStatus.UNAUTHORIZED)
     220                        .body(Map.of("error", "Unauthorized"));
     221            }
     222
     223            // Only ADMIN can update doctors
     224            if (!role.equals("ADMIN")) {
     225                return ResponseEntity.status(HttpStatus.FORBIDDEN)
     226                        .body(Map.of("error", "Only administrators can update doctors"));
     227            }
     228
    197229            logger.info("Updating doctor with ID: {}", doctorId);
    198230
Note: See TracChangeset for help on using the changeset viewer.