Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/SecurityConfiguration.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/SecurityConfiguration.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/SecurityConfiguration.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -2,4 +2,5 @@
 
 import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.Role;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -31,7 +32,17 @@
                 .authorizeHttpRequests(request -> request
                         // TO DO: FIX PERMISSIONS
-                        .requestMatchers("/api/job-advertisements/**","/api/job-advertisements/view/**","/api/recruiter/info/**",
-                                "/api/job-advertisements/apply/**","/api/auth/**", "/api/resume/**", "/api/my-applications/**", "/api/applications/{id}/update", "/api/admin/**").permitAll()
-                        //.requestMatchers("/api/job-advertisements/**").hasAnyAuthority(Role.ROLE_RECRUITER.name())
+                        .requestMatchers("/api/job-advertisements/**",
+                                "/api/job-advertisements/view/**",
+                                "/api/recruiter/**",
+                                "/api/job-seeker/**",
+                                "/api/recruiter/{id}/info",
+                                "/api/recruiter/{id}/edit-info",
+                                "/api/job-advertisements/apply/**",
+                                "/api/auth/**",
+                                "/api/resume/**",
+                                "/api/my-applications/**",
+                                "/api/applications/{id}/update",
+                                "/api/admin/**").permitAll()
+//                        .requestMatchers("/api/recruiter").hasAnyAuthority(Role.ROLE_RECRUITER.name())
                         .anyRequest().authenticated())
                 .sessionManagement(manager -> manager.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/AdminController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/AdminController.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/AdminController.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -2,4 +2,5 @@
 
 import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterAdminDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.AdminService;
@@ -20,12 +21,12 @@
     @PostMapping("/change-access/{recruiter_id}")
     public ResponseEntity<?> changeAccess(@PathVariable("recruiter_id") Long recruiterId, @RequestBody boolean access) {
-        RecruiterDetailsDTO recruiterDetailsDTO = adminService.changeAccess(recruiterId, access);
-        return new ResponseEntity<>(recruiterDetailsDTO, HttpStatus.OK);
+        RecruiterAdminDetailsDTO recruiterAdminDetailsDTO = adminService.changeAccess(recruiterId, access);
+        return new ResponseEntity<>(recruiterAdminDetailsDTO, HttpStatus.OK);
     }
 
     @GetMapping("/recruiters")
     public ResponseEntity<?> findAllRecruiters() {
-        List<RecruiterDetailsDTO> recruiterDetailsDTOList = adminService.findAllRecruiters();
-        return new ResponseEntity<>(recruiterDetailsDTOList, HttpStatus.OK);
+        List<RecruiterAdminDetailsDTO> recruiterAdminDetailsDTOList = adminService.findAllRecruiters();
+        return new ResponseEntity<>(recruiterAdminDetailsDTOList, HttpStatus.OK);
     }
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobSeekerController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobSeekerController.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobSeekerController.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -3,7 +3,14 @@
 
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JobSeekerEditDetailsDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JobSeekerService;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 @RestController
@@ -12,3 +19,33 @@
 @CrossOrigin(origins = "*")
 public class JobSeekerController {
+    private final JobSeekerService jobSeekerService;
+
+    @GetMapping("/{id}/edit-info")
+    public ResponseEntity<?> getJobSeekerEditDetailsById(@PathVariable("id") Long id) {
+        JobSeekerEditDetailsDTO jobSeekerEditDetailsDTO = jobSeekerService.getJobSeekerEditDetailsById(id);
+        return new ResponseEntity<>(jobSeekerEditDetailsDTO, HttpStatus.OK);
+    }
+
+    @PostMapping("/{id}/edit-info")
+    public ResponseEntity<?> editRecruiterDetailsById(@PathVariable("id") Long id, @RequestBody JobSeekerEditDetailsDTO jobSeekerEditDetailsDTO) {
+        JobSeekerEditDetailsDTO jobSeekerEditDetailsDTOresp = jobSeekerService.editJobSeekerDetailsById(id, jobSeekerEditDetailsDTO);
+        return new ResponseEntity<>(jobSeekerEditDetailsDTOresp, HttpStatus.OK);
+    }
+
+    @PostMapping("/submit-profile-pic")
+    public ResponseEntity<?> submitJobSeekerProfilePic(
+            @RequestParam("jobSeekerId") Long jobSeekerId,
+            @RequestParam("profilePicFile") MultipartFile profilePicFile) {
+        jobSeekerService.submitProfilePic(jobSeekerId, profilePicFile);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+    @GetMapping("/{id}/download-profile-pic")
+    public ResponseEntity<?> downloadJobSeekerProfilePic(@PathVariable("id") Long id) {
+        Resource resource = jobSeekerService.loadProfilePicAsResource(id);
+        return ResponseEntity.ok()
+                .contentType(MediaType.IMAGE_JPEG)
+                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
+                .body(resource);
+    }
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/RecruiterController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/RecruiterController.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/RecruiterController.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -3,8 +3,13 @@
 import lombok.AllArgsConstructor;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.RecruiterService;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 @RestController
@@ -16,8 +21,37 @@
     private final RecruiterService recruiterService;
 
-    @GetMapping("/info/{id}")
+    @GetMapping("/{id}/info")
     public ResponseEntity<?> getRecruiterDetailsById(@PathVariable("id") Long id) {
         RecruiterDetailsDTO recruiterDetailsDTO = recruiterService.getRecruiterDetailsById(id);
         return new ResponseEntity<>(recruiterDetailsDTO, HttpStatus.OK);
     }
+
+    @GetMapping("/{id}/edit-info")
+    public ResponseEntity<?> getRecruiterEditDetailsById(@PathVariable("id") Long id) {
+        RecruiterEditDetailsDTO recruiterEditDetailsDTO = recruiterService.getRecruiterEditDetailsById(id);
+        return new ResponseEntity<>(recruiterEditDetailsDTO, HttpStatus.OK);
+    }
+
+    @PostMapping("/{id}/edit-info")
+    public ResponseEntity<?> editRecruiterDetailsById(@PathVariable("id") Long id, @RequestBody RecruiterEditDetailsDTO recruiterEditDetailsDTO) {
+        RecruiterEditDetailsDTO recruiterEditDetailsDTOresp = recruiterService.editRecruiterDetailsById(id, recruiterEditDetailsDTO);
+        return new ResponseEntity<>(recruiterEditDetailsDTOresp, HttpStatus.OK);
+    }
+
+    @PostMapping("/submit-logo")
+    public ResponseEntity<?> submitRecruiterLogo(
+            @RequestParam("recruiterId") Long recruiterId,
+            @RequestParam("logoFile") MultipartFile logoFile) {
+        recruiterService.submitLogo(recruiterId, logoFile);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+    @GetMapping("/{id}/download-logo")
+    public ResponseEntity<?> downloadRecruiterLogo(@PathVariable("id") Long id) {
+        Resource resource = recruiterService.loadLogoAsResource(id);
+        return ResponseEntity.ok()
+                .contentType(MediaType.IMAGE_JPEG)
+                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
+                .body(resource);
+    }
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/Application.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/Application.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/Application.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -62,7 +62,8 @@
                 application.getJobSeeker().getEmail(),
                 application.getJobSeeker().getPhoneNumber(),
+                application.getJobAdvertisement().getRecruiter().getId(),
                 application.getJobAdvertisement().getRecruiter().getName(),
-                application.getJobAdvertisement().getRecruiter().getEmail(),
-                application.getJobAdvertisement().getRecruiter().getPhoneNumber(),
+                application.getJobAdvertisement().getRecruiter().getContactEmailAddress(),
+                application.getJobAdvertisement().getRecruiter().getContactPhoneNumber(),
                 application.getJobAdvertisement().getId(),
                 application.getJobAdvertisement().getTitle(),
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDetailsDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDetailsDTO.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDetailsDTO.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -18,4 +18,5 @@
     private String jobSeekerEmail;
     private String jobSeekerPhoneNumber;
+    private Long recruiterId;
     private String recruiterName;
     private String recruiterEmail;
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/DTO/JobAdvertisementDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/DTO/JobAdvertisementDTO.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/DTO/JobAdvertisementDTO.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -11,5 +11,5 @@
 @NoArgsConstructor
 public class JobAdvertisementDTO {
-    private String email;
+    private Long id;
     private String title;
     private String description;
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/RecruiterDetailsDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/RecruiterDetailsDTO.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/RecruiterDetailsDTO.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -11,10 +11,8 @@
 @NoArgsConstructor
 public class RecruiterDetailsDTO {
-    private Long id;
-    private String email;
     private String companyName;
     private String companyDescription;
-    private String phoneNumber;
-    private boolean hasAccess;
-    private LocalDateTime registeredOn;
+    private String contactEmail;
+    private String contactPhoneNumber;
+    private String receptionist;
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/JobSeeker.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/JobSeeker.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/JobSeeker.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -8,4 +8,6 @@
 import lombok.NoArgsConstructor;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.Role;
+
+import java.nio.file.Paths;
 
 @Entity
@@ -22,4 +24,8 @@
         this.lastName = lastName;
         this.phoneNumber = phoneNumber;
+
+        String relativeProfilePicFilePath = Paths.get("uploads", "job-seekers", "profile-pics", "default-profile-pic.png").toString();
+        this.profilePicFilePath = relativeProfilePicFilePath;
+
         this.role = Role.ROLE_JOBSEEKER;
     }
@@ -34,4 +40,6 @@
     private String phoneNumber;
 
+    private String profilePicFilePath;
+
     @Override
     public String getName() {
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/Recruiter.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/Recruiter.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/Recruiter.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -9,8 +9,9 @@
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.Role;
 
+import java.nio.file.Paths;
+
 @Entity
 @Data
 @NoArgsConstructor
-@AllArgsConstructor
 @Table(name = "recruiters")
 public class Recruiter extends User {
@@ -21,5 +22,10 @@
         this.companyName = companyName;
         this.companyDescription = "";
-        this.phoneNumber = phoneNumber;
+        this.contactEmailAddress = email;
+        this.contactPhoneNumber = phoneNumber;
+        this.receptionist = "";
+
+        String relativeLogoFilePath = Paths.get("uploads", "logo", "default-company-logo.png").toString();
+        this.logoFilePath = relativeLogoFilePath;
         this.role = Role.ROLE_RECRUITER;
     }
@@ -31,6 +37,11 @@
     private String companyDescription;
 
-    @Column(name = "phone_number")
-    private String phoneNumber;
+    private String contactEmailAddress;
+
+    private String contactPhoneNumber;
+
+    private String receptionist;
+
+    private String logoFilePath;
 
     @Override
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/JobSeekerMapper.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/JobSeekerMapper.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/JobSeekerMapper.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -2,5 +2,8 @@
 
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JobSeekerDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JobSeekerEditDetailsDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
 
 public class JobSeekerMapper {
@@ -26,3 +29,12 @@
     }
 
+    public static JobSeekerEditDetailsDTO mapToJobSeekerEditDetailsDTO(JobSeeker jobSeeker) {
+        return new JobSeekerEditDetailsDTO(
+                jobSeeker.getEmail(),
+                jobSeeker.getFirstName(),
+                jobSeeker.getLastName(),
+                jobSeeker.getPhoneNumber()
+        );
+    }
+
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/RecruiterMapper.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/RecruiterMapper.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/RecruiterMapper.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -1,6 +1,8 @@
 package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.mappers;
 
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterAdminDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
 
@@ -12,5 +14,5 @@
                 recruiter.getPassword(),
                 recruiter.getCompanyName(),
-                recruiter.getPhoneNumber()
+                recruiter.getContactPhoneNumber()
         );
     }
@@ -18,9 +20,31 @@
     public static RecruiterDetailsDTO mapToRecruiterDetailsDTO(Recruiter recruiter) {
         return new RecruiterDetailsDTO(
+                recruiter.getCompanyName(),
+                recruiter.getCompanyDescription(),
+                recruiter.getContactEmailAddress(),
+                recruiter.getContactPhoneNumber(),
+                recruiter.getReceptionist()
+        );
+    }
+    public static RecruiterEditDetailsDTO mapToRecruiterEditDetailsDTO(Recruiter recruiter) {
+        return new RecruiterEditDetailsDTO(
+                recruiter.getEmail(),
+                recruiter.getCompanyName(),
+                recruiter.getCompanyDescription(),
+                recruiter.getContactEmailAddress(),
+                recruiter.getContactPhoneNumber(),
+                recruiter.getReceptionist()
+        );
+    }
+
+    public static RecruiterAdminDetailsDTO mapToRecruiterAdminDetailsDTO(Recruiter recruiter) {
+        return new RecruiterAdminDetailsDTO(
                 recruiter.getId(),
                 recruiter.getEmail(),
                 recruiter.getCompanyName(),
                 recruiter.getCompanyDescription(),
-                recruiter.getPhoneNumber(),
+                recruiter.getContactEmailAddress(),
+                recruiter.getContactPhoneNumber(),
+                recruiter.getReceptionist(),
                 recruiter.isHasAccess(),
                 recruiter.getRegisteredOn()
@@ -36,4 +60,5 @@
         );
     }
+
 //    Using MapStruct:
 //    RecruiterMapper INSTANCE = Mappers.getMapper(RecruiterMapper.class);
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/AdminServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/AdminServiceImpl.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/AdminServiceImpl.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -3,4 +3,5 @@
 import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterAdminDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
@@ -20,10 +21,10 @@
 
     @Override
-    public RecruiterDetailsDTO changeAccess(long recruiterId, boolean access) {
+    public RecruiterAdminDetailsDTO changeAccess(long recruiterId, boolean access) {
         Recruiter recruiter = recruiterRepository.findById(recruiterId).orElse(null);
         if (recruiter != null) {
             recruiter.setHasAccess(access);
             recruiterRepository.save(recruiter);
-            return RecruiterMapper.mapToRecruiterDetailsDTO(recruiter);
+            return RecruiterMapper.mapToRecruiterAdminDetailsDTO(recruiter);
         }
         return null;
@@ -32,7 +33,7 @@
 
     @Override
-    public List<RecruiterDetailsDTO> findAllRecruiters() {
+    public List<RecruiterAdminDetailsDTO> findAllRecruiters() {
         List<Recruiter> recruiterList = recruiterRepository.findAll();
-        return recruiterList.stream().map(RecruiterMapper::mapToRecruiterDetailsDTO).toList();
+        return recruiterList.stream().map(RecruiterMapper::mapToRecruiterAdminDetailsDTO).toList();
     }
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobAdvertisementServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobAdvertisementServiceImpl.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobAdvertisementServiceImpl.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -30,5 +30,5 @@
     @Override
     public JobAdDetailsDTO addJobAdvertisement(JobAdvertisementDTO jobAdvertisementDTO) {
-        Recruiter recruiter = recruiterRepository.findRecruiterByEmail(jobAdvertisementDTO.getEmail()).orElseThrow(() -> new IllegalArgumentException("User not found"));
+        Recruiter recruiter = recruiterRepository.findById(jobAdvertisementDTO.getId()).orElseThrow(() -> new IllegalArgumentException("User not found"));
         JobAdvertisement jobAdvertisement = new JobAdvertisement(
                 recruiter,
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JwtServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JwtServiceImpl.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JwtServiceImpl.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -25,4 +25,5 @@
                 .claim("role", user.getRole())
                 .claim("access", user.isHasAccess())
+                .claim("id", user.getId())
                 .setIssuedAt(new Date())
                 .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24))
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/RecruiterServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/RecruiterServiceImpl.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/RecruiterServiceImpl.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -3,9 +3,21 @@
 import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.mappers.RecruiterMapper;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.RecruiterRepository;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.RecruiterService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.UrlResource;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
 
 @Service
@@ -14,4 +26,38 @@
 
     private final RecruiterRepository recruiterRepository;
+    private final Path logoStorageLocation;
+
+    @Autowired
+    RecruiterServiceImpl(@Value("./uploads") String uploadDir, RecruiterRepository recruiterRepository) {
+        this.recruiterRepository = recruiterRepository;
+
+        this.logoStorageLocation = Paths.get(uploadDir + "/logo").toAbsolutePath().normalize();
+        try {
+            Files.createDirectories(this.logoStorageLocation);
+        } catch (IOException ex) {
+            throw new RuntimeException("Could not create the directory where the uploaded files will be stored.", ex);
+        }
+    }
+
+
+    @Override
+    public RecruiterEditDetailsDTO editRecruiterDetailsById(Long recruiterId, RecruiterEditDetailsDTO recruiterEditDetailsDTO) {
+        Recruiter recruiter = recruiterRepository.findById(recruiterId).orElse(null);
+        recruiter.setEmail(recruiterEditDetailsDTO.getEmail());
+        recruiter.setCompanyName(recruiterEditDetailsDTO.getCompanyName());
+        recruiter.setCompanyDescription(recruiterEditDetailsDTO.getCompanyDescription());
+        recruiter.setContactEmailAddress(recruiterEditDetailsDTO.getContactEmail());
+        recruiter.setContactPhoneNumber(recruiterEditDetailsDTO.getContactPhoneNumber());
+        recruiter.setReceptionist(recruiterEditDetailsDTO.getReceptionist());
+        recruiterRepository.save(recruiter);
+        return RecruiterMapper.mapToRecruiterEditDetailsDTO(recruiter);
+    }
+
+    @Override
+    public RecruiterEditDetailsDTO getRecruiterEditDetailsById(Long recruiterId) {
+        Recruiter recruiter = recruiterRepository.findById(recruiterId).orElse(null);
+        return RecruiterMapper.mapToRecruiterEditDetailsDTO(recruiter);
+    }
+
 
     @Override
@@ -20,3 +66,50 @@
         return RecruiterMapper.mapToRecruiterDetailsDTO(recruiter);
     }
+
+    @Override
+    public void submitLogo(Long recruiterId, MultipartFile logoFile) {
+
+        Path recruiterLogoDir = this.logoStorageLocation.resolve(String.valueOf(recruiterId));
+        try {
+            Files.createDirectories(recruiterLogoDir);
+            String originalFilename = logoFile.getOriginalFilename();
+
+            if (originalFilename != null) {
+                Path targetLocation = recruiterLogoDir.resolve(originalFilename);
+
+                Files.copy(logoFile.getInputStream(), targetLocation, StandardCopyOption.REPLACE_EXISTING);
+
+                Recruiter recruiter = recruiterRepository.findById(recruiterId)
+                        .orElseThrow(() -> new RuntimeException("Recruiter not found"));
+                String relativePath = Paths.get("uploads", "logo", String.valueOf(recruiterId), originalFilename).toString();
+                recruiter.setLogoFilePath(relativePath);
+                recruiterRepository.save(recruiter);
+            }
+
+        } catch (IOException ex) {
+            throw new RuntimeException("Could not store file. Please try again!", ex);
+        }
+
+      
+    }
+
+    public Resource loadLogoAsResource(Long recruiterId) {
+        Recruiter recruiter = recruiterRepository.findById(recruiterId)
+                .orElseThrow(() -> new RuntimeException("Recruiter not found"));
+
+        try {
+            String relativeLogoPath = recruiter.getLogoFilePath();
+            Path logoPath = this.logoStorageLocation.getParent().getParent().resolve(relativeLogoPath);
+            Resource resource = new UrlResource(logoPath.toUri());
+            if (resource.exists()) {
+                return resource;
+            } else {
+                throw new RuntimeException("File not found " + logoPath);
+            }
+        } catch (IOException ex) {
+            throw new RuntimeException("File not found " + ex);
+        }
+
+    }
+
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/AdminService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/AdminService.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/AdminService.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef;
 
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterAdminDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
 
@@ -6,5 +7,5 @@
 
 public interface AdminService {
-    RecruiterDetailsDTO changeAccess(long recruiterId, boolean access);
-    List<RecruiterDetailsDTO> findAllRecruiters();
+    RecruiterAdminDetailsDTO changeAccess(long recruiterId, boolean access);
+    List<RecruiterAdminDetailsDTO> findAllRecruiters();
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/RecruiterService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/RecruiterService.java	(revision b2488107b82c95e4bdfdfd18b76b44f023786601)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/RecruiterService.java	(revision befb98800bd9171fa5ce8a5f29287e549f0ff5aa)
@@ -2,7 +2,14 @@
 
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
+import org.springframework.core.io.Resource;
+import org.springframework.web.multipart.MultipartFile;
 
 public interface RecruiterService {
     RecruiterDetailsDTO getRecruiterDetailsById(Long recruiterId);
+    RecruiterEditDetailsDTO editRecruiterDetailsById(Long recruiterId, RecruiterEditDetailsDTO recruiterEditDetailsDTO);
+    RecruiterEditDetailsDTO getRecruiterEditDetailsById(Long recruiterId);
+
+    void submitLogo(Long recruiterId, MultipartFile logoFile);
+    Resource loadLogoAsResource(Long recruiterId);
 }
