11import express , { NextFunction , Request , Response , urlencoded } from 'express' ;
22import Provider from 'oidc-provider' ;
33import { authorize , generateOtp , login , abortLogin } from '../controllers/auth-controller' ;
4- import { LoginTimeoutError , setNoCache } from '../utils/helpers' ;
4+ import { LoginTimeoutError , parseForwardedHeader , setNoCache } from '../utils/helpers' ;
55import { errors } from 'oidc-provider' ;
66import logger from '../modules/winston.config' ;
7+ import { UAParser } from 'ua-parser-js' ;
78
89const body = urlencoded ( { extended : false } ) ;
910
@@ -15,7 +16,16 @@ export const oidcRouter = async (oidcProvider: Provider) => {
1516 oidcRouter . post ( '/:uid/abort' , await abortLogin ( oidcProvider ) ) ;
1617 oidcRouter . use ( ( err : Error , req : Request , res : Response , next : NextFunction ) => {
1718 if ( err ) {
18- logger . error ( 'OIDC interaction error:' , err ) ;
19+ try {
20+ const ua = UAParser ( req . headers [ 'user-agent' ] ) ;
21+ const forwardedHeaders = parseForwardedHeader ( req . headers . forwarded ) ;
22+ logger . error (
23+ 'OIDC interaction error:' ,
24+ Object . assign ( err , { ipAddr : forwardedHeaders . for , userAgent : ua , path : req . path } ) ,
25+ ) ;
26+ } catch {
27+ logger . error ( 'OIDC interaction error:' , err ) ;
28+ }
1929 let errorMessage = 'An unexpected error occurred' ;
2030 let errorStatus = 500 ;
2131 if ( err instanceof LoginTimeoutError ) {
0 commit comments