瀏覽代碼

Fix socket auth

KernelDeimos 1 年之前
父節點
當前提交
965d99d137
共有 1 個文件被更改,包括 8 次插入20 次删除
  1. 8 20
      packages/backend/src/helpers.js

+ 8 - 20
packages/backend/src/helpers.js

@@ -1155,34 +1155,22 @@ async function jwt_auth(req){
         token = token.replace('Bearer ', '')
 
     try{
-        const jwt = require('jsonwebtoken');
-        const decoded = jwt.verify(token, config.jwt_secret)
+        const svc_auth = Context.get('services').get('auth');
+        const actor = await svc_auth.authenticate_from_token(token);
 
-        if ( decoded.type ) {
-            // This is usually not the correct way to throw an APIError;
-            // this is a workaround for the existing error handling in auth,
-            // which is well tested, stable, and legacy (no sense in refactoring)
+        if ( ! actor.type?.constructor?.name === 'UserActorType' ) {
             throw({
                 message: APIError.create('token_unsupported')
                     .serialize(),
             });
         }
 
-        /** @type BaseDatabaseAccessService */
-        const db = services.get('database').get(DB_READ, 'filesystem');
-
-        // in the vast majority of cases looking up a user should succeed unless the request is invalid (rare case),
-        // that's why we first hit up the read replica and if not successful we try the master DB
-        let user = await db.requireRead('SELECT * FROM `user` WHERE `uuid` = ? LIMIT 1', [decoded.uuid]);
-
-        // unsuccessful
-        if(!user[0])
-            throw('');
-        // successful
-        else {
-            return {user: user[0], token: token};
-        }
+        return {
+            user: actor.type.user,
+            token: token,
+        };
     }catch(e){
+        console.log('ERROR', e);
         throw(e.message);
     }
 }