diff --git a/front_end/src/components/login.tsx b/front_end/src/components/login.tsx index e01f7f0..3633a6c 100644 --- a/front_end/src/components/login.tsx +++ b/front_end/src/components/login.tsx @@ -4,6 +4,7 @@ import { Athlete, User } from '../classes'; import { useLocalData } from '../context/useLocalData'; import { postAthlete } from '../requetes'; import { clearAuthToken, setAuthToken } from '../api'; +import { AthleteDTO } from '../classesDTO'; export const Login =() =>{ const {user,setUser} = useLocalData() @@ -11,12 +12,23 @@ export const Login =() =>{ useEffect(() => { const syncAndLoadUser = async () => { - const newAthlete:Athlete = new Athlete() - - const athlete:Athlete = await postAthlete(newAthlete) - - setAuthToken(keycloak.token); - setUser(athlete); + if (keycloak.authenticated && keycloak.token && keycloak.tokenParsed) { + try { + const newAthlete: Athlete = new Athlete(); + newAthlete.keycloakId = keycloak.tokenParsed.sub || ""; + newAthlete.email = keycloak.tokenParsed.email || ""; + newAthlete.nom = keycloak.tokenParsed.family_name || ""; + newAthlete.prenom = keycloak.tokenParsed.given_name || ""; + + const newAthleteDTO: AthleteDTO =newAthlete.toDTO(); + setAuthToken(keycloak.token); + const athlete: Athlete = await postAthlete(newAthlete); + setUser(athlete); + } catch (error) { + console.error("Error :", error); + } + } + }; /*postAthlete if (keycloak.authenticated && keycloak.token) { const tokenParsed = keycloak.tokenParsed; @@ -44,7 +56,7 @@ export const Login =() =>{ console.error("Sync fetch failed:", error); } }*/ - }; + syncAndLoadUser(); }, [keycloak.authenticated, keycloak.token, setUser]); diff --git a/front_end/src/requetes.tsx b/front_end/src/requetes.tsx index 68f4b52..3e969bf 100644 --- a/front_end/src/requetes.tsx +++ b/front_end/src/requetes.tsx @@ -128,7 +128,7 @@ export async function postActivityAPI(session: Session, activity: Activite){ export async function postAthlete(athlete: Athlete):Promise{ try { - const response = await api.post("/athlete/create/",athlete); + const response = await api.post("/athlete/create/",athlete.toDTO); console.log(response); return response.data; } catch (error) {