]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/middlewares/secure.ts
Use async/await in lib and initializers
[github/Chocobozzz/PeerTube.git] / server / middlewares / secure.ts
index f7424c9c3e7b47c45025a75ae9d5dcebbe22860d..5dd809f15971237c2de54725df24e2db9503a65a 100644 (file)
@@ -8,45 +8,44 @@ import {
 } from '../helpers'
 import { PodSignature } from '../../shared'
 
-function checkSignature (req: express.Request, res: express.Response, next: express.NextFunction) {
+async function checkSignature (req: express.Request, res: express.Response, next: express.NextFunction) {
   const signatureObject: PodSignature = req.body.signature
   const host = signatureObject.host
 
-  db.Pod.loadByHost(host)
-    .then(pod => {
-      if (pod === null) {
-        logger.error('Unknown pod %s.', host)
-        return res.sendStatus(403)
-      }
-
-      logger.debug('Checking signature from %s.', host)
+  try {
+    const pod = await db.Pod.loadByHost(host)
+    if (pod === null) {
+      logger.error('Unknown pod %s.', host)
+      return res.sendStatus(403)
+    }
 
-      let signatureShouldBe
-      // If there is data in the body the sender used it for its signature
-      // If there is no data we just use its host as signature
-      if (req.body.data) {
-        signatureShouldBe = req.body.data
-      } else {
-        signatureShouldBe = host
-      }
+    logger.debug('Checking signature from %s.', host)
 
-      const signatureOk = peertubeCryptoCheckSignature(pod.publicKey, signatureShouldBe, signatureObject.signature)
+    let signatureShouldBe
+    // If there is data in the body the sender used it for its signature
+    // If there is no data we just use its host as signature
+    if (req.body.data) {
+      signatureShouldBe = req.body.data
+    } else {
+      signatureShouldBe = host
+    }
 
-      if (signatureOk === true) {
-        res.locals.secure = {
-          pod
-        }
+    const signatureOk = peertubeCryptoCheckSignature(pod.publicKey, signatureShouldBe, signatureObject.signature)
 
-        return next()
+    if (signatureOk === true) {
+      res.locals.secure = {
+        pod
       }
 
-      logger.error('Signature is not okay in body for %s.', signatureObject.host)
-      return res.sendStatus(403)
-    })
-    .catch(err => {
-      logger.error('Cannot get signed host in body.', { error: err.stack, signature: signatureObject.signature })
-      return res.sendStatus(500)
-    })
+      return next()
+    }
+
+    logger.error('Signature is not okay in body for %s.', signatureObject.host)
+    return res.sendStatus(403)
+  } catch (err) {
+    logger.error('Cannot get signed host in body.', { error: err.stack, signature: signatureObject.signature })
+    return res.sendStatus(500)
+  }
 }
 
 // ---------------------------------------------------------------------------