correction login
This commit is contained in:
@@ -2,7 +2,7 @@ import { useKeycloak } from '@react-keycloak/web'
|
||||
import { useEffect } from 'react';
|
||||
import { Athlete, User } from '../classes';
|
||||
import { useLocalData } from '../context/useLocalData';
|
||||
import { postAthlete } from '../requetes';
|
||||
import { loginOrRegister, postAthlete } from '../requetes';
|
||||
import { clearAuthToken, setAuthToken } from '../api';
|
||||
import { AthleteDTO } from '../classesDTO';
|
||||
|
||||
@@ -10,7 +10,7 @@ export const Login =() =>{
|
||||
const {user,setUser} = useLocalData()
|
||||
const { keycloak } = useKeycloak();
|
||||
|
||||
useEffect(() => {
|
||||
/*useEffect(() => {
|
||||
const syncAndLoadUser = async () => {
|
||||
if (keycloak.authenticated && keycloak.token && keycloak.tokenParsed) {
|
||||
try {
|
||||
@@ -24,47 +24,39 @@ export const Login =() =>{
|
||||
|
||||
const athlete: Athlete = await postAthlete(newAthlete);
|
||||
setUser(athlete);
|
||||
} catch (error) {
|
||||
console.error("Error :", error);
|
||||
}
|
||||
}
|
||||
};
|
||||
/*postAthlete
|
||||
if (keycloak.authenticated && keycloak.token) {
|
||||
const tokenParsed = keycloak.tokenParsed;
|
||||
setUser(
|
||||
|
||||
{
|
||||
id: 0,
|
||||
keycloakId: tokenParsed!.sub!,
|
||||
email: tokenParsed?.email || "",
|
||||
nom: tokenParsed?.family_name || "",
|
||||
prenom: tokenParsed?.given_name || "",
|
||||
sessions: []
|
||||
}
|
||||
);
|
||||
try {
|
||||
const response = await fetch("http://localhost:8081/api/users/sync", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Authorization": `Bearer ${keycloak.token}`,
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
});
|
||||
console.log("Sync status:", response.status);
|
||||
} catch (error) {
|
||||
console.error("Sync fetch failed:", error);
|
||||
console.error("Error :", error);
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
syncAndLoadUser();
|
||||
}, [keycloak.authenticated, keycloak.token, setUser]);
|
||||
*/
|
||||
|
||||
async function loginUser(){
|
||||
if(keycloak.authenticated){
|
||||
setAuthToken(keycloak.token);
|
||||
//alert("Connexion en cours : " + keycloak.tokenParsed?.sub + " " + keycloak.tokenParsed?.realm_access?.roles);
|
||||
|
||||
const logedUser = await loginOrRegister(keycloak);
|
||||
console.log(logedUser);
|
||||
if(logedUser!==null){
|
||||
setUser(logedUser);
|
||||
// alert("Connexion avec succès ! " + keycloak.tokenParsed?.sub);
|
||||
}
|
||||
else{
|
||||
alert("Erreur de connexion " + keycloak.tokenParsed?.sub + " " + keycloak.tokenParsed?.realm_access?.roles);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function handleLogin(): void {
|
||||
keycloak.login();
|
||||
//TODO setUser
|
||||
useEffect(() => {
|
||||
loginUser()
|
||||
},[keycloak.authenticated])
|
||||
|
||||
async function handleLogin() {
|
||||
await keycloak.login();
|
||||
}
|
||||
|
||||
function handleLogout(): void {
|
||||
@@ -81,9 +73,12 @@ export const Login =() =>{
|
||||
<div>
|
||||
<div>
|
||||
Keycloak ID : { keycloak.tokenParsed?.sub}
|
||||
</div>
|
||||
<div>
|
||||
Prenom : { user.prenom}
|
||||
</div>
|
||||
<div>
|
||||
User nom : { user.nom}
|
||||
Nom : { user.nom}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -15,28 +15,46 @@ export function delay(ms: number): Promise<void> {
|
||||
/*
|
||||
retourne l'utilisateur lié à l'identifiant keyloack
|
||||
*/
|
||||
export async function getUser(keycloak:Keycloak): Promise<User|null>{
|
||||
export async function loginOrRegister(keycloak:Keycloak): Promise<User|null>{
|
||||
try {
|
||||
const roles = keycloak.tokenParsed?.realm_access?.roles
|
||||
if(roles!=null){
|
||||
if(roles.includes("admin")){
|
||||
const response = await athleteService.create(keycloak.tokenParsed);
|
||||
const admin = new Admin(response.data);
|
||||
return admin;
|
||||
if(keycloak.tokenParsed!=null){
|
||||
const roles = keycloak.tokenParsed?.realm_access?.roles
|
||||
if(roles!=null){
|
||||
if(roles.includes("admin")){
|
||||
const id = keycloak.tokenParsed?.sub;
|
||||
if(id!=null){
|
||||
const response = await athleteService.getByKeycloakId(id);
|
||||
const admin = new Admin(response.data);
|
||||
return admin;
|
||||
}
|
||||
}
|
||||
else if(roles.includes("coach")){
|
||||
const id = keycloak.tokenParsed?.sub;
|
||||
if(id!=null){
|
||||
const response = await coachService.getByKeycloakId(id);
|
||||
const coach = new Coach(response.data);
|
||||
return coach;
|
||||
}
|
||||
}
|
||||
else if(roles.includes("athlete")){
|
||||
console.error("role = Athlete");
|
||||
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 response = await athleteService.create(newAthlete.toDTO());
|
||||
console.log(response);
|
||||
const athlete = new Athlete(response.data);
|
||||
console.log(athlete);
|
||||
return athlete;
|
||||
}
|
||||
else console.error("Error : role inconnu");
|
||||
}
|
||||
else if(roles.includes("coach")){
|
||||
const response = await coachService.create(keycloak.tokenParsed);
|
||||
const coach = new Coach(response.data);
|
||||
return coach;
|
||||
}
|
||||
else if(roles.includes("athletes")){
|
||||
const response = await athleteService.create(keycloak.tokenParsed);
|
||||
const athlete = new Athlete(response.data);
|
||||
return athlete;
|
||||
}
|
||||
console.error("Error roles inconnu");
|
||||
else console.error("Error : role null");
|
||||
}
|
||||
|
||||
else console.error("Error : token Keylcoak null");
|
||||
console.error("Error : pendant la récupération de l'User");
|
||||
return null;
|
||||
}
|
||||
catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user