Appliquez la notion

Pour qu'un utilisateur puisse accéder à notre application, on considère qu'il doit s'agir de l'utilisateur "admin". On souhaite également lui faire résoudre une opération simple afin de vérifier qu'il ne s'agit pas d'un robot.

Ces deux opérations doivent être un succès pour qu'il puisse continuer : on ne lui donnera accès à rien tant qu'il n'aura pas donné ces deux renseignements.

Question

Complétez le code ci-dessous afin de rendre ce système opérationnel. Implémentez le contenu des deux promesses. La première vérifiera que le nom d'utilisateur saisi vaut bien "admin", la seconde vérifiera que l'utilisateur a bien répondu "4".

Les deux promesses seront résolues grâce à la méthode all().

1
function askUsername() {
2
  return prompt('Quel est votre nom d\'utilisateur ?')
3
}   
4
5
function askMathOperation() {
6
  return prompt('Combien font 2 + 2')
7
}   
8
9
function success() {
10
  console.log('Vous pouvez accéder à l\'application')
11
}
12
13
function error() {
14
  console.log('Restez où vous êtes')
15
}
16
17
function checkUsername() {
18
  return new Promise((resolve, reject) => {
19
    // code à implémenter
20
  })
21
}
22
23
function checkIfIsBot() {
24
  return new Promise((resolve, reject) => {
25
    // code à implémenter
26
  })
27
}
28
29
// Résolution des promesses

Solution

1
function askUsername() {
2
  return prompt('Quel est votre nom d\'utilisateur ?')
3
}   
4
5
function askMathOperation() {
6
  return prompt('Combien font 2 + 2')
7
}   
8
9
function success() {
10
  console.log('Vous pouvez accéder à l\'application')
11
}
12
13
function error() {
14
  console.log('Restez où vous êtes')
15
}
16
17
function checkUsername() {
18
  return new Promise((resolve, reject) => {
19
    let username = askUsername()
20
21
    if ('admin' === username) {
22
      resolve()
23
    } else {
24
      reject()
25
    }
26
  })
27
}
28
29
function checkIfIsBot() {
30
  return new Promise((resolve, reject) => {
31
    let result = askMathOperation()
32
    if (4 === parseInt(result)) {
33
      resolve()
34
    } else {
35
      reject()
36
    }
37
  })
38
}
39
40
Promise.all([checkUsername(), checkIfIsBot()]).then(success, error)