(id, token)
| 562 | } |
| 563 | |
| 564 | updateEmail(id, token) { |
| 565 | let decodedToken; |
| 566 | try { |
| 567 | decodedToken = jwt.verify(token, settings.encryptionKey); |
| 568 | } catch (e) { |
| 569 | return new Promise((resolve, reject) => reject(e)); |
| 570 | } |
| 571 | |
| 572 | if (`${decodedToken.id}` !== `${id}`) { |
| 573 | return new Promise((resolve, reject) => reject(new Error(401))); |
| 574 | } |
| 575 | |
| 576 | // check if email exists |
| 577 | return this.emailExists(decodedToken.newEmail) |
| 578 | .then((exists) => { |
| 579 | if (exists) { |
| 580 | return new Promise((resolve, reject) => reject(new Error(409))); |
| 581 | } |
| 582 | |
| 583 | return db.User.findByPk(id); |
| 584 | }) |
| 585 | .then((userData) => { |
| 586 | if (userData.email !== decodedToken.email) { |
| 587 | return new Promise((resolve, reject) => reject(new Error(401))); |
| 588 | } |
| 589 | |
| 590 | return this.update(id, { email: decodedToken.newEmail }); |
| 591 | }) |
| 592 | .then(() => { |
| 593 | return this.findById(id); |
| 594 | }) |
| 595 | .catch((error) => { |
| 596 | return new Promise((resolve, reject) => reject(error)); |
| 597 | }); |
| 598 | } |
| 599 | |
| 600 | generateQrCodeUrl(email, secret) { |
| 601 | const totp = new TOTP({ |
no test coverage detected