From df140c64f816deb01b9249561f77e9fa036a4ac2 Mon Sep 17 00:00:00 2001 From: wancat Date: Mon, 1 Apr 2024 11:53:02 +0800 Subject: [PATCH 1/3] fix: Update eslint rule for unused variables --- .eslintrc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index 26b0775..f95277a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -51,7 +51,7 @@ module.exports = { '@typescript-eslint/no-unused-vars': [ 'error', { - args: 'all', + args: 'after-used', argsIgnorePattern: '^_', caughtErrors: 'all', caughtErrorsIgnorePattern: '^_', From 455fde41ab6d646995fc718de61fcd00fda6137a Mon Sep 17 00:00:00 2001 From: wancat Date: Fri, 5 Apr 2024 17:56:09 +0800 Subject: [PATCH 2/3] fix: OAuth flow by setting scope and cookie to 'lax' --- server/src/api/routes/authRouter.ts | 5 ++++- server/src/auth/oauthVerify.ts | 2 ++ server/src/auth/passport.ts | 6 ++++-- server/src/middleware/error.ts | 2 +- server/src/middleware/session.ts | 2 +- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/server/src/api/routes/authRouter.ts b/server/src/api/routes/authRouter.ts index 956a4c6..9fabc58 100644 --- a/server/src/api/routes/authRouter.ts +++ b/server/src/api/routes/authRouter.ts @@ -46,7 +46,10 @@ router.get('/available-methods', (req, res) => { }) if (enabledMethods.google) { - router.get('/google', passport.authenticate('google')) + router.get( + '/google', + passport.authenticate('google', { scope: ['email', 'profile'] }) + ) router.get( '/google/callback', authenticateRateLimit, diff --git a/server/src/auth/oauthVerify.ts b/server/src/auth/oauthVerify.ts index 9daf3b8..262e373 100644 --- a/server/src/auth/oauthVerify.ts +++ b/server/src/auth/oauthVerify.ts @@ -1,6 +1,7 @@ import { User } from '@linux-odyssey/models' import type { Profile } from 'passport' import type { VerifyCallback } from 'passport-oauth2' +import logger from '../utils/logger.js' export default async function oauthVerify( provider: string, @@ -37,6 +38,7 @@ export default async function oauthVerify( email: user.email, }) } catch (err) { + logger.error(err) return cb( err instanceof Error ? err : new Error('An unknown error occurred') ) diff --git a/server/src/auth/passport.ts b/server/src/auth/passport.ts index 1d9bf15..a7f9041 100644 --- a/server/src/auth/passport.ts +++ b/server/src/auth/passport.ts @@ -1,6 +1,6 @@ import passport from 'passport' -import { UserProfile } from '@linux-odyssey/models' import type { Express } from 'express' +import { UserProfile } from '@linux-odyssey/models' import passwordStrategy from './passwordStrategy.js' import jwtStrategy from './jwtStrategy.js' import googleStrategy from './googleStrategy.js' @@ -30,7 +30,8 @@ passport.serializeUser((user: Express.User, done) => { process.nextTick(async () => { try { if (!('id' in user)) { - done(new Error('User has no _id')) + // OAuth new user + done(null, user) return } const { id } = user @@ -39,6 +40,7 @@ passport.serializeUser((user: Express.User, done) => { } done(null, user) } catch (err) { + logger.error(err) done(err) } }) diff --git a/server/src/middleware/error.ts b/server/src/middleware/error.ts index 84081cf..a9fe768 100644 --- a/server/src/middleware/error.ts +++ b/server/src/middleware/error.ts @@ -13,7 +13,7 @@ export default function errorHandler( req: Request, res: Response, // eslint-disable-next-line no-unused-vars - next: NextFunction + _next: NextFunction ) { logger.error(err) // Log error stack trace to the console res.status(500).send({ message: 'Something broke!' }) // Send error response diff --git a/server/src/middleware/session.ts b/server/src/middleware/session.ts index a6f90e3..34718e0 100644 --- a/server/src/middleware/session.ts +++ b/server/src/middleware/session.ts @@ -12,7 +12,7 @@ export default session({ domain: config.domain, httpOnly: true, secure: config.protocol === 'https:', - sameSite: 'strict', + sameSite: 'lax', maxAge: config.sessionMaxAge, }, store: MongoStore.create({ From 27b60966333309a32dd966dff7a0efc4ad96c2cd Mon Sep 17 00:00:00 2001 From: wancat Date: Fri, 5 Apr 2024 22:22:44 +0800 Subject: [PATCH 3/3] fix: eslint unused error --- packages/container/cli.js | 2 +- packages/container/discover.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/container/cli.js b/packages/container/cli.js index c49ccfd..e8397b5 100644 --- a/packages/container/cli.js +++ b/packages/container/cli.js @@ -26,7 +26,7 @@ const api = axios.create({ async function readOrNone(file) { try { return await fs.readFile(file, 'utf8') - } catch (err) { + } catch (_) { return '' } } diff --git a/packages/container/discover.js b/packages/container/discover.js index 7c6ab3e..9e91709 100644 --- a/packages/container/discover.js +++ b/packages/container/discover.js @@ -25,7 +25,7 @@ async function collectFilesInfo(inputPath, level = 0, hiddenFiles = false) { ) ) files.push(...result.flat()) - } catch (err) { + } catch (_) { // ignore } } @@ -41,7 +41,7 @@ async function discoverFiles(argv) { .map((p) => collectFilesInfo(p, 0, argv.a || argv.all)) ) return { discover: result.flat() } - } catch (err) { + } catch (_) { return {} } }