diff --git a/README.md b/README.md index 255b6f4..22fd3f4 100644 --- a/README.md +++ b/README.md @@ -83,4 +83,70 @@ Pour appliquer le thème de connexion personnalisé fourni dans `keycloak/themes - Thibaut ROCHAS - Tuan Minh VU - Amäel KESTEMAN -- Alexis LEBOEUF \ No newline at end of file +- Alexis LEBOEUF +## Domain model class diagram + +```mermaid +classDiagram + %% Classes and attributes (inferred from metier package) + class User { + +Long id + +String keycloakId + +String email + +String nom + +String prenom + +Role role + } + + class Athlete { + +String categorie + +String niveau + +List groupe + +List sessions + } + + %% Represente en enum + class Role { + +String role + } + + class Coach { + +List sessions + } + + class Admin { + } + + class Activite { + +Long id + +String nom + +String theme + +String description + +Integer dureeMinutes + +List activites + +Session session + } + + class Session { + +Long id + +String name + +LocalDateTime creneau + +Integer duree + +String group + +bool isRecurrent + +Coach coach + +List athletes + } + + %% Inheritance (if User is a base class for domain actors) + User <|-- Athlete + User <|-- Coach + User <|-- Admin + + %% Associations with cardinality + Coach "1" -- "0..*" Session : manages + Role "1" -- "0..*" User : is + Session "0..*" -- "0..*" Activite : contains + Session "0..*" -- "0..*" Athlete : participants + Activite "0..*" -- "0..*" Session : usedIn +``` diff --git a/back_end/src/main/java/hackathon/FrisbYEE/config/WebSecurityConfig.java b/back_end/src/main/java/hackathon/FrisbYEE/config/WebSecurityConfig.java index 5c028d5..bc80105 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/config/WebSecurityConfig.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/config/WebSecurityConfig.java @@ -30,11 +30,9 @@ public class WebSecurityConfig { .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll() // 2. Allow public endpoints BEFORE any authenticated() calls .requestMatchers("/athlete/create", "/", "/public").permitAll() - .requestMatchers("/coach/**").permitAll() - // 3. Authenticated endpoints - .requestMatchers("/users/sync").authenticated() + .requestMatchers("/coach/**").hasRole("coach") .requestMatchers("/admin/**").hasRole("admin") - .requestMatchers("/user/**").hasRole("user") + .requestMatchers("/athlete/**").hasRole("athlete") .anyRequest().authenticated()) .oauth2ResourceServer(oauth2 -> oauth2 .jwt(jwt -> jwt.jwtAuthenticationConverter(jwtToken -> { diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java index edb4919..54126c0 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java @@ -140,7 +140,6 @@ public class AthleteResource { athlete.setName(dto.getName()); athlete.setCategorie(dto.getCategorie()); athlete.setNiveau(dto.getNiveau()); - // Relationship: sessionId → session if (dto.getSessionIds() != null) { List sessions = new ArrayList<>(); diff --git a/front_end/src/requetes.tsx b/front_end/src/requetes.tsx index 4c12ca1..69000b6 100644 --- a/front_end/src/requetes.tsx +++ b/front_end/src/requetes.tsx @@ -27,8 +27,6 @@ export async function loginOrRegister(keycloak:Keycloak): Promise{ newAdmin.email = keycloak.tokenParsed.email || ""; newAdmin.nom = keycloak.tokenParsed.family_name || ""; newAdmin.prenom = keycloak.tokenParsed.given_name || ""; - console.log(newAdmin.keycloakId); - console.log(newAdmin.toDTO().id_keycloak); const response = await adminService.create(newAdmin.toDTO()); const admin = new Admin(response.data); return admin;