This commit is contained in:
2026-01-17 23:11:08 +08:00
parent d6da542989
commit 7b0b00feff
9 changed files with 95 additions and 184 deletions

View File

@@ -54,7 +54,6 @@ export class UserSecret extends Model {
}
const secretToken = await oauth.verifyToken(token);
if (secretToken) {
console.log('verifyToken: verified as normal token');
return secretToken;
}
console.log('verifyToken: try to verify as secret key');

View File

@@ -20,27 +20,27 @@ export const getTokenFromRequest = (req: http.IncomingMessage) => {
}
return token;
}
export const checkAuth = async (req: http.IncomingMessage, res: http.ServerResponse) => {
const token = getTokenFromRequest(req);
const resNoPermission = () => {
res.statusCode = 401;
res.end(error('Invalid authorization'));
return { tokenUser: null, token: null };
};
if (!token) {
return resNoPermission();
}
let tokenUser;
try {
tokenUser = await User.verifyToken(token);
} catch (e) {
console.log('checkAuth error', e);
res.statusCode = 401;
res.end(error('Invalid token'));
return { tokenUser: null, token: null };
}
return { tokenUser, token };
};
// export const checkAuth = async (req: http.IncomingMessage, res: http.ServerResponse) => {
// const token = getTokenFromRequest(req);
// const resNoPermission = () => {
// res.statusCode = 401;
// res.end(error('Invalid authorization'));
// return { tokenUser: null, token: null };
// };
// if (!token) {
// return resNoPermission();
// }
// let tokenUser;
// try {
// tokenUser = await User.verifyToken(token);
// } catch (e) {
// console.log('checkAuth error', e);
// res.statusCode = 401;
// res.end(error('Invalid token'));
// return { tokenUser: null, token: null };
// }
// return { tokenUser, token };
// };
export const getLoginUserByToken = async (token: string) => {
if (token) {

View File

@@ -7,7 +7,7 @@ import { getLoginUser } from '@/modules/auth.ts';
import busboy from 'busboy';
import { getContentType, getTextContentType } from '../get-content-type.ts';
import { OssBase } from '@kevisual/oss';
import { parseSearchValue } from '@kevisual/router/browser';
import { parseSearchValue } from '@kevisual/router/src/server/parse-body.ts';
import { logger } from '@/modules/logger.ts';
import { pipeBusboy } from '../pipe-busboy.ts';
import { pipeMinioStream } from '../pipe.ts';

View File

@@ -26,12 +26,15 @@ export const addAuth = (app: App) => {
return;
}
if (!token) {
app.throw(401, 'Token is required');
ctx.throw(401, 'Token is required');
}
const user = await User.getOauthUser(token);
console.log('auth user: exists', !user);
if (!user) {
app.throw(401, 'Token is invalid');
ctx.throw(401, 'Token is invalid');
return;
}
console.log(`auth user: ${user.username} (${user.id})`);
const someInfo = getSomeInfoFromReq(ctx);
if (someInfo.isBrowser && !ctx.req?.cookies?.['token']) {
createCookie({ accessToken: token }, ctx);

View File

@@ -40,6 +40,7 @@ app
description: '获取应用详情可以通过id或者key+version来获取',
})
.define(async (ctx) => {
console.log('get app manager called');
const tokenUser = ctx.state.tokenUser;
const id = ctx.query.id;
const { key, version } = ctx.query?.data || {};
@@ -61,6 +62,7 @@ app
if (!am) {
throw new CustomError('app not found');
}
console.log('get app', am.id, am.key, am.version);
ctx.body = prefixFix(am, tokenUser.username);
})
.addTo(app);