feat: 添加JWKS token支持,更新用户和OAuth相关逻辑
This commit is contained in:
@@ -9,7 +9,7 @@ import z from 'zod';
|
||||
* @param ctx
|
||||
* @returns
|
||||
*/
|
||||
export const createCookie = (token: { accessToken?: string; token?: string }, ctx: any) => {
|
||||
export const createCookie = (token: { accessToken?: string; token?: string, type?: string; }, ctx: any) => {
|
||||
if (!domain) {
|
||||
return;
|
||||
}
|
||||
@@ -17,6 +17,11 @@ export const createCookie = (token: { accessToken?: string; token?: string }, ct
|
||||
logger.debug('登陆用户没有请求对象,不需要创建cookie');
|
||||
return
|
||||
}
|
||||
// if (!token.type || token.type === 'jwks') {
|
||||
// // 如果是jwks类型的token,不创建cookie,
|
||||
// // 因为jwks类型的token自己就能检测是否过期了,不需要依赖cookie了
|
||||
// return;
|
||||
// }
|
||||
//TODO, 获取访问的 hostname, 如果访问的和 domain 的不一致,也创建cookie
|
||||
const browser = ctx?.req?.headers['user-agent'];
|
||||
const isBrowser = browser.includes('Mozilla'); // 浏览器
|
||||
@@ -139,7 +144,7 @@ app
|
||||
}
|
||||
if (tokenUser.id === user.id) {
|
||||
// 自己刷新自己的token
|
||||
const token = await User.oauth.resetToken(oldToken, {
|
||||
const token = await User.resetToken(oldToken, {
|
||||
...tokenUser.oauthExpand,
|
||||
});
|
||||
createCookie(token, ctx);
|
||||
@@ -156,9 +161,7 @@ app
|
||||
browser: someInfo['user-agent'],
|
||||
host: someInfo.host,
|
||||
});
|
||||
createCookie({
|
||||
token: token.accessToken
|
||||
}, ctx);
|
||||
createCookie(token, ctx);
|
||||
ctx.body = token;
|
||||
})
|
||||
.addTo(app);
|
||||
@@ -263,10 +266,8 @@ app
|
||||
const accessUser = await User.verifyToken(accessToken);
|
||||
const refreshToken = accessUser.oauthExpand?.refreshToken;
|
||||
if (refreshToken) {
|
||||
const result = await User.oauth.refreshToken(refreshToken);
|
||||
createCookie({
|
||||
token: result.accessToken
|
||||
}, ctx);
|
||||
const result = await User.refreshToken(refreshToken);
|
||||
createCookie(token, ctx);
|
||||
|
||||
ctx.body = result;
|
||||
return;
|
||||
@@ -276,9 +277,7 @@ app
|
||||
...accessUser.oauthExpand,
|
||||
hasRefreshToken: true,
|
||||
});
|
||||
createCookie({
|
||||
token: result.accessToken
|
||||
}, ctx);
|
||||
createCookie(result, ctx);
|
||||
ctx.body = result;
|
||||
return;
|
||||
}
|
||||
@@ -332,18 +331,13 @@ app
|
||||
const orgsList = [tokenUser.username, user.username, , ...orgs];
|
||||
if (orgsList.includes(username)) {
|
||||
if (tokenUsername === username) {
|
||||
const result = await User.oauth.resetToken(token);
|
||||
createCookie({
|
||||
token: result.accessToken,
|
||||
}, ctx);
|
||||
await User.oauth.delToken(token);
|
||||
const result = await User.resetToken(token);
|
||||
createCookie(result, ctx);
|
||||
ctx.body = result;
|
||||
} else {
|
||||
const user = await User.findOne({ username });
|
||||
const result = await user.createToken(userId, 'default');
|
||||
createCookie({
|
||||
token: result.accessToken,
|
||||
}, ctx);
|
||||
createCookie(result, ctx);
|
||||
ctx.body = result;
|
||||
}
|
||||
} else {
|
||||
@@ -371,12 +365,10 @@ app
|
||||
if (!refreshToken) {
|
||||
ctx.throw(400, 'Refresh Token is required');
|
||||
}
|
||||
const result = await User.oauth.refreshToken(refreshToken);
|
||||
const result = await User.refreshToken(refreshToken);
|
||||
if (result) {
|
||||
console.log('refreshToken result', result);
|
||||
createCookie({
|
||||
token: result.accessToken,
|
||||
}, ctx);
|
||||
createCookie(result, ctx);
|
||||
ctx.body = result;
|
||||
} else {
|
||||
ctx.throw(500, 'Refresh Token Failed, please login again');
|
||||
|
||||
@@ -119,9 +119,7 @@ app
|
||||
const token = JSON.parse(data);
|
||||
if (token.accessToken) {
|
||||
ctx.body = token;
|
||||
createCookie({
|
||||
token: token.accessToken,
|
||||
}, ctx);
|
||||
createCookie(token, ctx);
|
||||
} else {
|
||||
ctx.throw(500, 'Checked error Failed, login failed, please login again');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user