various improvements (#2671)
* improve oauth config logic * expire pending login * move sort to backend
This commit is contained in:
@@ -40,6 +40,8 @@ export default defineEventHandler(async (event) => {
|
||||
type: 'oauth',
|
||||
userId: result.userId,
|
||||
remember: false,
|
||||
// 5min
|
||||
expires_at: Date.now() + 5 * 60 * 1000,
|
||||
},
|
||||
oauth_nonce: undefined,
|
||||
oauth_state: undefined,
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
const session = await useWGSession(event, false);
|
||||
const session = await useWGSession(event);
|
||||
|
||||
await session.update({
|
||||
pendingLogin: undefined,
|
||||
oauth_nonce: undefined,
|
||||
oauth_state: undefined,
|
||||
oauth_verifier: undefined,
|
||||
});
|
||||
|
||||
return { success: true as const };
|
||||
});
|
||||
|
||||
@@ -32,6 +32,8 @@ export default defineEventHandler(async (event) => {
|
||||
type: 'password',
|
||||
userId: result.userId,
|
||||
remember,
|
||||
// 5min
|
||||
expires_at: Date.now() + 5 * 60 * 1000,
|
||||
},
|
||||
});
|
||||
return { status: 'TOTP_REQUIRED' as const };
|
||||
|
||||
@@ -7,6 +7,16 @@ export default defineEventHandler(async (event) => {
|
||||
statusMessage: 'No pending authentication',
|
||||
});
|
||||
}
|
||||
if (new Date() > new Date(session.data.pendingLogin.expires_at)) {
|
||||
await session.update({
|
||||
pendingLogin: undefined,
|
||||
});
|
||||
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
statusMessage: 'No pending authentication',
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
type: session.data.pendingLogin.type,
|
||||
|
||||
@@ -14,6 +14,13 @@ export default defineEventHandler(async (event) => {
|
||||
statusMessage: 'No pending authentication',
|
||||
});
|
||||
}
|
||||
if (new Date() > new Date(pendingLogin.expires_at)) {
|
||||
await session.update({
|
||||
pendingLogin: undefined,
|
||||
});
|
||||
|
||||
return { status: 'PENDING_LOGIN_EXPIRED' as const };
|
||||
}
|
||||
|
||||
const totpStatus = await Database.users.validateTotpCode(
|
||||
pendingLogin.userId,
|
||||
|
||||
Reference in New Issue
Block a user