Skip to content

Commit

Permalink
fix(logging): correct log levels for error types from auth flow (#3934)
Browse files Browse the repository at this point in the history
  • Loading branch information
iainsproat authored Feb 4, 2025
1 parent 8934179 commit 9bbd6be
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 13 deletions.
23 changes: 17 additions & 6 deletions packages/server/modules/auth/middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,15 @@ import { createRedisClient } from '@/modules/shared/redis/redis'
import {
isSSLServer,
getRedisUrl,
getFrontendOrigin
getFrontendOrigin,
getSessionSecret
} from '@/modules/shared/helpers/envHelper'
import { getSessionSecret } from '@/modules/shared/helpers/envHelper'
import { isString, noop } from 'lodash'
import { CreateAuthorizationCode } from '@/modules/auth/domain/operations'

import { authLogger } from '@/logging/logging'
import { ensureError } from '@speckle/shared'
import { LegacyGetUser } from '@/modules/core/domain/users/operations'
import { ForbiddenError } from '@/modules/shared/errors'
import { UserInputError } from '@/modules/core/errors/userinput'

export const sessionMiddlewareFactory = (): RequestHandler => {
const RedisStore = ConnectRedis(ExpressSession)
Expand Down Expand Up @@ -93,10 +92,22 @@ export const finalizeAuthMiddlewareFactory =

return res.redirect(redirectUrl)
} catch (err) {
authLogger.error(err, 'Could not finalize auth')
const e = ensureError(err, 'Unexpected issue arose while finalizing auth')
switch (e.constructor) {
case ForbiddenError:
req.log.debug({ err: e }, 'Could not finalize auth')
break
case UserInputError:
req.log.info({ err: e }, 'Could not finalize auth')
break
default:
req.log.error({ err: e }, 'Could not finalize auth')
break
}

if (req.session) req.session.destroy(noop)
return res.status(401).send({
err: ensureError(err, 'Unexpected issue arose while finalizing auth').message
err: e.message
})
}
}
3 changes: 3 additions & 0 deletions packages/server/modules/auth/strategies/azureAd.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import {
} from '@/modules/core/domain/users/operations'
import { GetServerInfo } from '@/modules/core/domain/server/operations'
import { EnvironmentResourceError } from '@/modules/shared/errors'
import { InviteNotFoundError } from '@/modules/serverinvites/errors'

const azureAdStrategyBuilderFactory =
(deps: {
Expand Down Expand Up @@ -195,6 +196,8 @@ const azureAdStrategyBuilderFactory =

switch (e.constructor) {
case UserInputError:
case UnverifiedEmailSSOLoginError:
case InviteNotFoundError:
logger.info(
{ e },
'User input error during Entra ID authentication callback.'
Expand Down
3 changes: 3 additions & 0 deletions packages/server/modules/auth/strategies/github.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import {
import crs from 'crypto-random-string'
import { GetServerInfo } from '@/modules/core/domain/server/operations'
import { EnvironmentResourceError } from '@/modules/shared/errors'
import { InviteNotFoundError } from '@/modules/serverinvites/errors'

const githubStrategyBuilderFactory =
(deps: {
Expand Down Expand Up @@ -160,6 +161,8 @@ const githubStrategyBuilderFactory =
)
switch (e.constructor) {
case UserInputError:
case InviteNotFoundError:
case UnverifiedEmailSSOLoginError:
logger.info(err)
break
default:
Expand Down
9 changes: 6 additions & 3 deletions packages/server/modules/auth/strategies/google.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import {
} from '@/modules/core/domain/users/operations'
import { GetServerInfo } from '@/modules/core/domain/server/operations'
import { EnvironmentResourceError } from '@/modules/shared/errors'
import { InviteNotFoundError } from '@/modules/serverinvites/errors'

const googleStrategyBuilderFactory =
(deps: {
Expand Down Expand Up @@ -142,13 +143,15 @@ const googleStrategyBuilderFactory =
'Unexpected issue occured while authenticating with Google'
)
switch (e.constructor) {
case UnverifiedEmailSSOLoginError:
case UserInputError:
logger.info(err)
case InviteNotFoundError:
logger.info({ err: e })
break
default:
logger.error(err)
logger.error({ err: e })
}
return done(err, false, { message: e.message })
return done(e, false, { message: e.message })
}
}
)
Expand Down
24 changes: 20 additions & 4 deletions packages/server/modules/auth/strategies/oidc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ import {
getOidcName,
getServerOrigin
} from '@/modules/shared/helpers/envHelper'
import { UnverifiedEmailSSOLoginError } from '@/modules/core/errors/userinput'
import {
UnverifiedEmailSSOLoginError,
UserInputError
} from '@/modules/core/errors/userinput'
import { getNameFromUserInfo } from '@/modules/auth/helpers/oidc'
import { ServerInviteResourceType } from '@/modules/serverinvites/domain/constants'
import { getResourceTypeRole } from '@/modules/serverinvites/helpers/core'
import { AuthStrategyBuilder } from '@/modules/auth/helpers/types'
import { get } from 'lodash'
import { Optional } from '@speckle/shared'
import { ensureError, Optional } from '@speckle/shared'
import { ServerInviteRecord } from '@/modules/serverinvites/domain/types'
import {
FinalizeInvitedServerRegistration,
Expand All @@ -28,6 +31,7 @@ import {
} from '@/modules/core/domain/users/operations'
import { GetServerInfo } from '@/modules/core/domain/server/operations'
import { EnvironmentResourceError } from '@/modules/shared/errors'
import { InviteNotFoundError } from '@/modules/serverinvites/errors'

const oidcStrategyBuilderFactory =
(deps: {
Expand Down Expand Up @@ -149,8 +153,20 @@ const oidcStrategyBuilderFactory =
isInvite: !!invite
})
} catch (err) {
logger.error(err)
return done(err, undefined)
const e = ensureError(
err,
'Unexpected issue occured while authenticating with Google'
)
switch (e.constructor) {
case UnverifiedEmailSSOLoginError:
case UserInputError:
case InviteNotFoundError:
logger.info({ err: e })
break
default:
logger.error({ err: e })
}
return done(e, undefined)
}
}
)
Expand Down

0 comments on commit 9bbd6be

Please sign in to comment.