Merge pull request #2107 from gradido/2105-add-emailChecked-to-opt-in-check

fix: 🍰 Add `emailChecked` Before Changing `optIn` State & Log Error On klicktipp Middleware
This commit is contained in:
Hannes Heine 2022-08-12 12:25:53 +02:00 committed by GitHub
commit eed210dc9e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 9 deletions

View File

@ -25,6 +25,14 @@
"keepFileExt" : true,
"fileNameSep" : "_"
},
"klicktipp":
{
"type": "dateFile",
"filename": "../logs/backend/klicktipp.log",
"pattern": "%d{ISO8601} %p %c %X{user} %f:%l %m",
"keepFileExt" : true,
"fileNameSep" : "_"
},
"errorFile":
{
"type": "dateFile",
@ -90,6 +98,17 @@
"level": "debug",
"enableCallStack": true
},
"klicktipp":
{
"appenders":
[
"klicktipp",
"out",
"errors"
],
"level": "debug",
"enableCallStack": true
},
"http":
{
"appenders":

View File

@ -501,7 +501,7 @@ export class AdminResolver {
order: { updatedAt: 'DESC' },
})
optInCode = await checkOptInCode(optInCode, user.id)
optInCode = await checkOptInCode(optInCode, user)
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const emailSent = await sendAccountActivationEmail({

View File

@ -187,7 +187,7 @@ const newEmailOptIn = (userId: number): LoginEmailOptIn => {
// if optIn does not exits, it is created
export const checkOptInCode = async (
optInCode: LoginEmailOptIn | undefined,
userId: number,
user: DbUser,
optInType: OptInType = OptInType.EMAIL_OPT_IN_REGISTER,
): Promise<LoginEmailOptIn> => {
logger.info(`checkOptInCode... ${optInCode}`)
@ -207,15 +207,18 @@ export const checkOptInCode = async (
optInCode.updatedAt = new Date()
optInCode.resendCount++
} else {
logger.trace('create new OptIn for userId=' + userId)
optInCode = newEmailOptIn(userId)
logger.trace('create new OptIn for userId=' + user.id)
optInCode = newEmailOptIn(user.id)
}
if (user.emailChecked) {
optInCode.emailOptInTypeId = optInType
}
optInCode.emailOptInTypeId = optInType
await LoginEmailOptIn.save(optInCode).catch(() => {
logger.error('Unable to save optin code= ' + optInCode)
throw new Error('Unable to save optin code.')
})
logger.debug(`checkOptInCode...successful: ${optInCode} for userid=${userId}`)
logger.debug(`checkOptInCode...successful: ${optInCode} for userid=${user.id}`)
return optInCode
}
@ -493,7 +496,7 @@ export class UserResolver {
userId: user.id,
})
optInCode = await checkOptInCode(optInCode, user.id, OptInType.EMAIL_OPT_IN_RESET_PASSWORD)
optInCode = await checkOptInCode(optInCode, user, OptInType.EMAIL_OPT_IN_RESET_PASSWORD)
logger.info(`optInCode for ${email}=${optInCode}`)
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const emailSent = await sendResetPasswordEmailMailer({

View File

@ -2,6 +2,7 @@ import { MiddlewareFn } from 'type-graphql'
import { /* klicktippSignIn, */ getKlickTippUser } from '@/apis/KlicktippController'
import { KlickTipp } from '@model/KlickTipp'
import CONFIG from '@/config'
import { klickTippLogger as logger } from '@/server/logger'
// export const klicktippRegistrationMiddleware: MiddlewareFn = async (
// // Only for demo
@ -29,7 +30,9 @@ export const klicktippNewsletterStateMiddleware: MiddlewareFn = async (
if (klickTippUser) {
klickTipp = new KlickTipp(klickTippUser)
}
} catch (err) {}
} catch (err) {
logger.error(`There is no user for (email='${result.email}') ${err}`)
}
}
result.klickTipp = klickTipp
return result

View File

@ -12,7 +12,8 @@ log4js.configure(options)
const apolloLogger = log4js.getLogger('apollo')
const backendLogger = log4js.getLogger('backend')
const klickTippLogger = log4js.getLogger('klicktipp')
backendLogger.addContext('user', 'unknown')
export { apolloLogger, backendLogger }
export { apolloLogger, backendLogger, klickTippLogger }