@@ -7,11 +7,11 @@ import {
77 verifyAuthenticationResponse ,
88} from '@simplewebauthn/server' ;
99import { isoBase64URL } from '@simplewebauthn/server/helpers' ;
10- import { authenticateToken } from '../middleware/auth.js' ;
10+ import { authenticateToken , generateToken } from '../middleware/auth.js' ;
1111import { createHash , randomBytes } from 'crypto' ;
1212import { query } from '../config/db.js' ;
13- import { generateToken } from '../middleware/auth.js' ;
1413import { logActivity } from '../services/activity.js' ;
14+ import { isVpnOrProxy } from './auth.js' ;
1515
1616const router = Router ( ) ;
1717
@@ -166,6 +166,12 @@ router.post('/passkeys/register/complete', authenticateToken, passkeyRegisterLim
166166
167167router . post ( '/passkeys/login/begin' , passkeyLoginLimiter , async ( req , res ) => {
168168 try {
169+ const ip = getClientIp ( req ) ;
170+
171+ if ( await isVpnOrProxy ( ip ) ) {
172+ return res . status ( 403 ) . json ( { error : 'VPN or proxy detected. Please disable your VPN for security reasons.' } ) ;
173+ }
174+
169175 const { email } = req . body ;
170176 let userId = null ;
171177 let allowCredentials ;
@@ -221,6 +227,12 @@ router.post('/passkeys/login/begin', passkeyLoginLimiter, async (req, res) => {
221227
222228router . post ( '/passkeys/login/complete' , passkeyLoginLimiter , async ( req , res ) => {
223229 try {
230+ const ip = getClientIp ( req ) ;
231+
232+ if ( await isVpnOrProxy ( ip ) ) {
233+ return res . status ( 403 ) . json ( { error : 'VPN or proxy detected. Please disable your VPN for security reasons.' } ) ;
234+ }
235+
224236 const { response, sessionToken } = req . body ;
225237 if ( ! response ) {
226238 return res . status ( 400 ) . json ( { error : 'Response is required' } ) ;
0 commit comments