Merge branch 'main' of https://gitlab2.istic.univ-rennes1.fr/tuvu/hackathon
This commit is contained in:
68
README.md
68
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
|
||||
- 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<String> groupe
|
||||
+List<Session> sessions
|
||||
}
|
||||
|
||||
%% Represente en enum
|
||||
class Role {
|
||||
+String role
|
||||
}
|
||||
|
||||
class Coach {
|
||||
+List<Session> sessions
|
||||
}
|
||||
|
||||
class Admin {
|
||||
}
|
||||
|
||||
class Activite {
|
||||
+Long id
|
||||
+String nom
|
||||
+String theme
|
||||
+String description
|
||||
+Integer dureeMinutes
|
||||
+List<Activite> activites
|
||||
+Session session
|
||||
}
|
||||
|
||||
class Session {
|
||||
+Long id
|
||||
+String name
|
||||
+LocalDateTime creneau
|
||||
+Integer duree
|
||||
+String group
|
||||
+bool isRecurrent
|
||||
+Coach coach
|
||||
+List<Athlete> 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
|
||||
```
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
@@ -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<Session> sessions = new ArrayList<>();
|
||||
|
||||
@@ -27,8 +27,6 @@ export async function loginOrRegister(keycloak:Keycloak): Promise<User|null>{
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user