Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Lier mon API avec le front [login / register]


Sujet :

NodeJS

  1. #1
    Membre du Club
    Lier mon API avec le front [login / register]
    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 :

    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); 
        }
    }


    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
        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 });
     
          }


    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)


    SVP si quelqu'un pourrait m'aider cela fait plusieurs jours que je suis bloquée sur ce projet

    Merci d'avance

  2. #2
    Membre du Club
    Wow! c'est toujours comme dans ce forum, personne ne répond !!

  3. #3
    Futur Membre du Club
    Bonjour Kagami !

    Je vais essayer de t'aider mais je suis pas sur d'avoir bien saisi.

    Tu cherches depuis le front a envoyer ses informations à ton serveur afin de pouvoir récupérer ton token ?

  4. #4
    Futur Membre du Club
    Citation Envoyé par Kagami Voir le message
    Wow! c'est toujours comme dans ce forum, personne ne répond !!
    Effectivement, personne ne répond