diff --git a/src/main/java/com/example/gestionstagesbackend/controllers/AuthController.java b/src/main/java/com/example/gestionstagesbackend/controllers/AuthController.java
index e8f5cc2cc8f3936cebc884d96e2074a0432b4033..692060d4366906e50c05b5d2435b6f1d5ca8c7d2 100644
--- a/src/main/java/com/example/gestionstagesbackend/controllers/AuthController.java
+++ b/src/main/java/com/example/gestionstagesbackend/controllers/AuthController.java
@@ -13,6 +13,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 
@@ -54,41 +55,29 @@ public class AuthController {
         String username = loginRequest.get("username");
         String password = loginRequest.get("password");
 
-        System.out.println("🔍 Attempting login for: " + username);
-
-        if (username == null || password == null) {
-            System.out.println("❌ Username or password is missing in the request.");
-            return ResponseEntity.status(400).body(Map.of("error", "Username and password are required"));
-        }
-
-        Optional<User> userOptional = userService.findByUsername(username);
-        if (userOptional.isEmpty()) {
-            System.out.println("❌ User not found!");
-            return ResponseEntity.status(401).body(Map.of("error", "Invalid credentials"));
+        Optional<User> user = userService.findByUsername(username);
+        if (user.isEmpty()) {
+            return ResponseEntity.status(401).body("Invalid credentials");
         }
 
-        User user = userOptional.get();
-        System.out.println("âś… User found: " + username);
-
         try {
             Authentication authentication = authenticationManager.authenticate(
                     new UsernamePasswordAuthenticationToken(username, password)
             );
 
-            // Update security context on successful authentication
             SecurityContextHolder.getContext().setAuthentication(authentication);
-            System.out.println("âś… Login successful for user: " + username);
 
-            // ✅ 🔥 Renvoie les rôles de l'utilisateur dans la réponse
-            return ResponseEntity.ok(Map.of(
-                    "message", "Login successful",
-                    "username", user.getUsername(),
-                    "roles", user.getRoles() // Retourne les rĂ´les ici
-            ));
+            // âś… Send username & familyname in the response
+            Map<String, Object> responseBody = new HashMap<>();
+            responseBody.put("id", user.get().getId()); // 🔥 Ajoute l'ID ici
+            responseBody.put("username", user.get().getUsername());
+            responseBody.put("familyname", user.get().getFamilyname()); // Assure-toi que ce champ existe bien
+            responseBody.put("roles", user.get().getRoles());
+            responseBody.put("message", "Login successful");
 
+            return ResponseEntity.ok(responseBody);
         } catch (Exception e) {
-            System.out.println("❌ Authentication failed for user " + username + ": " + e.getMessage());
-            return ResponseEntity.status(401).body(Map.of("error", "Invalid username or password"));
+            return ResponseEntity.status(401).body("Invalid username or password");
         }
     }
 
diff --git a/src/main/java/com/example/gestionstagesbackend/controllers/StudentController.java b/src/main/java/com/example/gestionstagesbackend/controllers/StudentController.java
index 45f172ddfd7884e47312c7dcc42f51df2d6fba81..5d9abad4d822a3f8ad787fdd551b863be52d39da 100644
--- a/src/main/java/com/example/gestionstagesbackend/controllers/StudentController.java
+++ b/src/main/java/com/example/gestionstagesbackend/controllers/StudentController.java
@@ -74,4 +74,10 @@ public class StudentController {
         studentService.deleteStudent(id);
         return ResponseEntity.noContent().build();
     }
+    @GetMapping("/with-role")
+    public ResponseEntity<List<Student>> getStudentsWithRoleEtudiant() {
+        List<Student> students = studentService.getStudentsByRole("ROLE_ETUDIANT");
+        return ResponseEntity.ok(students);
+    }
+
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/model/Student.java b/src/main/java/com/example/gestionstagesbackend/model/Student.java
index 3c14cc0ef6cc70e69fe525f9ab07056c55e23424..d596fba011b194d3635339cd219da993ac98f08e 100644
--- a/src/main/java/com/example/gestionstagesbackend/model/Student.java
+++ b/src/main/java/com/example/gestionstagesbackend/model/Student.java
@@ -14,43 +14,31 @@ public class Student {
     @OneToMany(mappedBy = "student", cascade = CascadeType.ALL)
     private List<Candidacy> candidacies;
 
+    @OneToOne
+    @JoinColumn(name = "user_id", unique = true)
+    private User user; // Ajout de la liaison avec User
+
     public Student() {}
 
-    public Student(Long id, String firstname, String lastname) {
+    public Student(Long id, String firstname, String lastname, User user) {
         this.id = id;
         this.firstname = firstname;
         this.lastname = lastname;
+        this.user = user;
     }
 
-    public Long getId() {
-        return id;
-    }
+    public Long getId() { return id; }
+    public void setId(Long id) { this.id = id; }
 
-    public void setId(Long id) {
-        this.id = id;
-    }
+    public String getFirstname() { return firstname; }
+    public void setFirstname(String firstname) { this.firstname = firstname; }
 
-    public String getFirstname() {
-        return firstname;
-    }
+    public String getLastname() { return lastname; }
+    public void setLastname(String lastname) { this.lastname = lastname; }
 
-    public void setFirstname(String firstname) {
-        this.firstname = firstname;
-    }
+    public List<Candidacy> getCandidacies() { return candidacies; }
+    public void setCandidacies(List<Candidacy> candidacies) { this.candidacies = candidacies; }
 
-    public String getLastname() {
-        return lastname;
-    }
-
-    public void setLastname(String lastname) {
-        this.lastname = lastname;
-    }
-
-    public List<Candidacy> getCandidacies() {
-        return candidacies;
-    }
-
-    public void setCandidacies(List<Candidacy> candidacies) {
-        this.candidacies = candidacies;
-    }
+    public User getUser() { return user; }
+    public void setUser(User user) { this.user = user; }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/model/User.java b/src/main/java/com/example/gestionstagesbackend/model/User.java
index 14ba5954dd4d0f3377d728c48cbc7e27cb947eee..0d1e46d299b5f4ea16003acad7354b610e2cd1cf 100644
--- a/src/main/java/com/example/gestionstagesbackend/model/User.java
+++ b/src/main/java/com/example/gestionstagesbackend/model/User.java
@@ -11,14 +11,17 @@ import java.util.stream.Collectors;
 
 @Entity
 @Table(name = "users")
-public class User implements UserDetails { // âś… Implements UserDetails
+public class User implements UserDetails { // Implements UserDetails
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
 
-    @Column(unique = true, nullable = false)
+    @Column(nullable = false)
     private String username;
 
+    @Column(nullable = false)
+    private String familyname; // âś… Added familyname
+
     @JsonIgnore
     @Column(nullable = false)
     private String password;
@@ -26,12 +29,13 @@ public class User implements UserDetails { // âś… Implements UserDetails
     @ElementCollection(fetch = FetchType.EAGER)
     @CollectionTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"))
     @Column(name = "role")
-    private Set<String> roles; // âś… Roles stored in a separate table
+    private Set<String> roles; // Roles stored in a separate table
 
     public User() {}
 
-    public User(String username, String password, Set<String> roles) {
+    public User(String username, String familyname, String password, Set<String> roles) {
         this.username = username;
+        this.familyname = familyname;
         this.password = password;
         this.roles = roles;
     }
@@ -52,6 +56,14 @@ public class User implements UserDetails { // âś… Implements UserDetails
         this.username = username;
     }
 
+    public String getFamilyname() {
+        return familyname;
+    }
+
+    public void setFamilyname(String familyname) {
+        this.familyname = familyname;
+    }
+
     public String getPassword() {
         return password;
     }
@@ -96,6 +108,6 @@ public class User implements UserDetails { // âś… Implements UserDetails
 
     @Override
     public String toString() {
-        return "User{id=" + id + ", username='" + username + "', roles=" + roles + "}";
+        return "User{id=" + id + ", username='" + username + "', familyname='" + familyname + "', roles=" + roles + "}";
     }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/repositories/StudentRepository.java b/src/main/java/com/example/gestionstagesbackend/repositories/StudentRepository.java
index e7474ad53c65a21b8c7aa4227673559831c6c668..35cb3a7b6c01d4650a170857f8c52b797560268a 100644
--- a/src/main/java/com/example/gestionstagesbackend/repositories/StudentRepository.java
+++ b/src/main/java/com/example/gestionstagesbackend/repositories/StudentRepository.java
@@ -2,8 +2,16 @@ package com.example.gestionstagesbackend.repositories;
 
 import com.example.gestionstagesbackend.model.Student;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+import java.util.Optional;
+
 @Repository
 public interface StudentRepository extends JpaRepository<Student, Long> {
+    @Query("SELECT s FROM Student s WHERE s.user.id IN (SELECT u.id FROM User u WHERE :role MEMBER OF u.roles)")
+    List<Student> findStudentsByRole(@Param("role") String role);
+    Optional<Student> findByFirstnameAndLastname(String firstname, String lastname);
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/repositories/UserRepository.java b/src/main/java/com/example/gestionstagesbackend/repositories/UserRepository.java
index ce9ec7d19ff099102c6b65986cfb5bc0b383732e..18a187275ef415a7d652097d28f9bcaee7059b42 100644
--- a/src/main/java/com/example/gestionstagesbackend/repositories/UserRepository.java
+++ b/src/main/java/com/example/gestionstagesbackend/repositories/UserRepository.java
@@ -2,9 +2,14 @@ package com.example.gestionstagesbackend.repositories;
 
 import com.example.gestionstagesbackend.model.User;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 
+import java.util.List;
 import java.util.Optional;
 
 public interface UserRepository extends JpaRepository<User, Long> {
     Optional<User> findByUsername(String username);
+    @Query("SELECT u FROM User u WHERE :role MEMBER OF u.roles")
+    List<User> findByRole(@Param("role") String role);
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/services/StudentService.java b/src/main/java/com/example/gestionstagesbackend/services/StudentService.java
index 2e13e2d6bb77e992abe523e245a235caf4002246..2c110bafea44d358b1158cbdfd7e2de0550007ee 100644
--- a/src/main/java/com/example/gestionstagesbackend/services/StudentService.java
+++ b/src/main/java/com/example/gestionstagesbackend/services/StudentService.java
@@ -34,4 +34,17 @@ public class StudentService {
             throw new IllegalArgumentException("Student with ID " + id + " does not exist.");
         }
     }
+    public void createStudentIfNotExists(String firstname, String lastname) {
+        if (studentRepository.findByFirstnameAndLastname(firstname, lastname).isEmpty()) {
+            Student student = new Student();
+            student.setFirstname(firstname);
+            student.setLastname(lastname);
+            studentRepository.save(student);
+            System.out.println("âś… Created student: " + firstname + " " + lastname);
+        }
+    }
+
+    public List<Student> getStudentsByRole(String role) {
+        return studentRepository.findStudentsByRole(role);
+    }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/services/UserService.java b/src/main/java/com/example/gestionstagesbackend/services/UserService.java
index 394867ce5a73d2d12007585876558dadefe0c9b6..7aeefd1e0a7b041e6a6b849db1b297dff7f03aeb 100644
--- a/src/main/java/com/example/gestionstagesbackend/services/UserService.java
+++ b/src/main/java/com/example/gestionstagesbackend/services/UserService.java
@@ -3,6 +3,7 @@ package com.example.gestionstagesbackend.services;
 import com.example.gestionstagesbackend.model.User;
 import com.example.gestionstagesbackend.repositories.UserRepository;
 import jakarta.annotation.PostConstruct;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
@@ -54,20 +55,31 @@ public class UserService implements UserDetailsService {
 
     @PostConstruct
     public void createDefaultUsers() {
-        createUserIfNotExists("admin", "admin123", Set.of("ROLE_ADMIN"));
-        createUserIfNotExists("etudiant", "etudiant123", Set.of("ROLE_ETUDIANT"));
-        createUserIfNotExists("entreprise", "entreprise123", Set.of("ROLE_ENTREPRISE"));
-        createUserIfNotExists("superviseur", "superviseur123", Set.of("ROLE_SUPERVISEUR"));
+        createUserIfNotExists("admin", "admin123", "Admin", "ROLE_ADMIN");
+        createUserIfNotExists("etudiant1", "etudiant123", "Etudiant1", "ROLE_ETUDIANT");
+        createUserIfNotExists("etudiant2", "etudiant123", "Etudiant2", "ROLE_ETUDIANT");
+        createUserIfNotExists("entreprise", "entreprise123", "Entreprise", "ROLE_ENTREPRISE");
+        createUserIfNotExists("superviseur", "superviseur123", "Superviseur", "ROLE_SUPERVISEUR");
     }
 
-    private void createUserIfNotExists(String username, String password, Set<String> roles) {
+    private void createUserIfNotExists(String username, String password, String familyname, String role) {
         if (userRepository.findByUsername(username).isEmpty()) {
             User user = new User();
             user.setUsername(username);
             user.setPassword(passwordEncoder.encode(password));
-            user.setRoles(roles);
+            user.setFamilyname(familyname);
+            user.setRoles(Set.of(role));
             userRepository.save(user);
-            System.out.println("âś… Created user: " + username + " with roles " + roles);
+
+            // Si l'utilisateur est un étudiant, on crée un étudiant associé
+            if (role.equals("ROLE_ETUDIANT")) {
+                studentService.createStudentIfNotExists(username, familyname);
+            }
+
+            System.out.println("âś… Created user: " + username + " with role " + role);
         }
     }
+
+    @Autowired
+    private StudentService studentService; // Injection du service pour créer un étudiant
 }