Bonjour,
j'ai besoin de vous pleaaaase sur un projet où j'intériens en tant que Front, j'ai eu l'API qui a été créé par le dev-backend sur l'authentification (login, register) que ce soit avec son un mail ou par Google/Facebook.
Je n'ai pas su comment lier ses Routes avec le mon front, c'est à dire appeler par exemple la funciton Connexion (ci-dessous) sur mon composent, cette dérnière est assez complèxe et remplie de conditions, j'ai beau cherché sur Net, je n'ai pas pu le faire !!
voilà le code dans l'API pour la Connexion :
J'ai fait un truc de ce genre dans mon composent mais cela ne donne rien, il faut que l'user se connecte et soit redirigé vers ('http://localhost:3000/gerercomptes'); par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 /** * POST /api/connexion */ exports.connnexion = (req, res) => { try{ var email = req.body.email; var password = req.body.password; //get email and password if( ( (typeof email !== 'undefined') || (email === '') ) || ( (typeof password !== 'undefined') || ( password === '') ) ){ //check email if Exist in DB Account.find({email : email},function(err, account){ if (err){ resultats = { "success": false, "message": "Error, check email/password", "result": '' } res.json(resultats); } else{ if((account[0].google.id)===undefined && (account[0].facebook.id)===undefined){//dont have google & facebook account console.log('connexion classique'); if(account.length){ //if exist, //get password of this account if(bcrypt.compareSync(password,account[0].password)){//if password ok //create new token try{ jwt.sign({ account }, 'secretKey', (err,token) => { if(err){ resultats = { "success": false, "message": 'Error : '+ err, "result": '' } res.json(resultats); } resultats = { "success": true, "message": "SUCCESS", "result": token } res.json(resultats); }); }catch(e){ resultats = { "success": false, "message": 'Error : '+ e, "result": '' } res.json(resultats); } } else{ resultats = { "success": false, "message": "Error, check email/password", "result": '' } res.json(resultats); } } else{ resultats = { "success": false, "message": 'Error : check email/password', "result": '' } res.json(resultats); } } else{ console.log('impossible de se connecter(google ou facebook)'); resultats = { "success": false, "message": "Error, check email/password", "result": '' } res.json(resultats); } } }); } else{ resultats = { "success": false, "message": 'Error : check email/password', "result": '' } res.json(resultats); } }catch(e){ resultats = { "success": false, "message": 'Error : '+ e, "result": '' } res.json(resultats); } }
sur POSTMAN, je tape l'email et mdp, après je reçois un Token que j'utilise pour d'autre function comme affichier la liste des user..(image ci-dessous)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 constructor (props) { super(props); this.state = { // name: "", cnx_mail: '', cnx_pwd: '', sub_mail: '', sub_pwd: '', errors: {}, formErrors: {cnx_mail: '', cnx_pwd: '', sub_mail: '', sub_pwd: '' }, emailValid: false, passwordValid: false, formValid: false } this.handleUserInput = this.handleUserInput.bind(this); this.handleSubmit = this.handleSubmit.bind(this); } handleSubmit(event) { event.preventDefault(); fetch(`/api/connexion`) .then(resultats => resultats.json()) .then(state => this.setState(state)); // this.props.history.push('http://localhost:3000/gerercomptes'); } handleUserInput = (e) => { const name = e.target.name; const value = e.target.value; this.setState({[name]: value}, () => { this.validateField(name, value) }); // this.setState({ [e.target.id]: e.target.value }); }
SVP si quelqu'un pourrait m'aider cela fait plusieurs jours que je suis bloquée sur ce projet
Merci d'avance
Partager