1. #1
    Membre habitué
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 325
    Points : 141
    Points
    141

    Par défaut Comment retourner une data

    Bonjour,

    J'apprends à utiliser nodejs avec adonisjs. J'ai codé une route qui renvoi vers un Controller qui exécute un provider.
    Le but est très simple, je veux juste me connecter à un ldap, et retourner les détails d'un utilisateur sans utiliser les callback, mais plutôt les promises (faut bien apprendre ...).
    Pour le moment dans mon provider, j'ai fait beaucoup de console.log. J'implémenterai les retour des ok/error quand je saurai comment faire ...

    Je passe le fichier de routes car pas important. Voici mon Controller:
    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
    class AuthenticationController {
      async checkUser({request, response}) {
        let tmp = await Ldap.verifyUser(request.body);
        console(tmp);
     
        let statusCode = 200;
        let result = {
          status: "success",
          statusCode: statusCode,
          statusMessage: "Command granted",
          data: "ok"
        };
        await response.status(statusCode).json(result);
      }
    }
    Et mon Provider. Pourquoi est ce que le return ne renvoie rien ?? Je pensais que le await servait justement à récupérer les data quand ils sont prêt ?

    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
    class Ldap {
      constructor(Config) {
        this.config = Config;
        //console.log(this.config);
      }
      async verifyUser(request) {
        const self = this;
     
        var LdapClient = require('promised-ldap');
        var client = new LdapClient({
          url: "ldap://" + Env.get('LDAP_HOST') + ":" + Env.get("LDAP_PORT")
        });
     
        let opts = {
          filter: '(&(sAMAccountName=' + request.username + ')(cn=*))',
          scope: 'sub',
          attributes: []
        };
     
        client.bind(Env.get('LDAP_USER'), Env.get('LDAP_PASSWORD'))
          .then((data) => {
            console.log("bind ok");
          })
          .catch((error) => {
            console.error(error);
          });
     
        client.search(Env.get('LDAP_BASE_DN'), opts)
          .then((data) => {
            let dn = data.entries[0].objectName;
            let userDetails = data.entries[0].object;
            client.bind(dn, request.password)
              .then((data) => {
                //console.log(data);
                console.log("=== true ===");
                return data; // J'ESSAI DE RECUPERER CA
              })
              .catch((error) => {
                console.error(error);
              });
          })
          .catch((error) => {
            console.error(error);
          });
        client.unbind();
      }
    }
    J'espère que vous pourrez m'aider.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    janvier 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2014
    Messages : 132
    Points : 103
    Points
    103

    Par défaut

    Hello,

    tente ceci:

    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
     
    let result = await client.search(Env.get('LDAP_BASE_DN'), opts)
          .then(async (data) => {
            let dn = data.entries[0].objectName;
            let userDetails = data.entries[0].object;
            return await client.bind(dn, request.password)
              .then((data) => {
                //console.log(data);
                console.log("=== true ===");
                return data; // J'ESSAI DE RECUPERER CA
              })
              .catch((error) => {
                console.error(error);
              });
          })
          .catch((error) => {
            console.error(error);
          });
    result devrait contenir tes datas
    Cocréateur d'un réseau social musical
    Suivez-nous sur https://www.facebook.com/Spolsik/?re...homepage_panel

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 325
    Points : 141
    Points
    141

    Par défaut

    Bonjour,

    ca ne fonctionne pas:

    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
    let result = await client.search(Env.get('LDAP_BASE_DN'), opts)
          .then(async (data) => {
            let dn = data.entries[0].objectName;
            let userDetails = data.entries[0].object;
            return await client.bind(dn, request.password)
              .then((data2) => {
                return "hello world";
              })
              .catch((err2) => {
                console.error(err2);
                return err2;
              });
          })
          .catch((error) => {
            console.error(error);
            return error;
          });
    Je ne récupère jamais dans mon controller la data. Je renvoie "hello world" pour tester, mais à terme ce sera la variable userDetails.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    janvier 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2014
    Messages : 132
    Points : 103
    Points
    103

    Par défaut

    Effectivement, autant pour moi, j'avais mal compris ton problème

    C'est plus quelque chose dans ce genre:

    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
     
    let data;
     
    try {
    	data = await client.search(Env.get('LDAP_BASE_DN'), opts);
    } catch (e) {
            console.error(error);
            return error;
    }
     
    let dn = data.entries[0].objectName;
    let userDetails = data.entries[0].object;
     
    let data2;
    try {
            data2 = await client.bind(dn, request.password);
    } catch (err2) {
            console.error(err2);
            return err2;
    }
     
    return data2 ||"hello world";
    Cocréateur d'un réseau social musical
    Suivez-nous sur https://www.facebook.com/Spolsik/?re...homepage_panel

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 325
    Points : 141
    Points
    141

    Par défaut

    Super !!! Merci bien, ça fonctionne enfin. Je vais pouvoir virer tout mes callback que j'avais coder le temps de trouver la solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/11/2007, 17h17
  2. Comment retourné une valeur pour le main
    Par kurkLord dans le forum Langage
    Réponses: 3
    Dernier message: 31/05/2007, 22h20
  3. [C# 1.1] Comment retourner une ArrayList avec un WS ?
    Par pi05 dans le forum Services Web
    Réponses: 6
    Dernier message: 09/02/2007, 13h00
  4. Réponses: 5
    Dernier message: 15/02/2005, 18h07
  5. Comment retourner une table !
    Par ptidoudou02 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/12/2004, 14h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo