Merge branch 'master' into 2501-feature-federation-implement-a-graphql-client-to-request-getpublickey

This commit is contained in:
clauspeterhuebner 2023-02-07 00:30:18 +01:00 committed by GitHub
commit 94c4be81c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 45 additions and 91 deletions

View File

@ -1,4 +1,3 @@
import { EventProtocol } from '@entity/EventProtocol'
import decimal from 'decimal.js-light' import decimal from 'decimal.js-light'
import { EventProtocolType } from './EventProtocolType' import { EventProtocolType } from './EventProtocolType'
@ -87,21 +86,6 @@ export class EventDeleteContributionLink extends EventBasicCt {}
export class EventUpdateContributionLink extends EventBasicCt {} export class EventUpdateContributionLink extends EventBasicCt {}
export class Event { export class Event {
constructor()
constructor(event?: EventProtocol) {
if (event) {
this.id = event.id
this.type = event.type
this.createdAt = event.createdAt
this.userId = event.userId
this.xUserId = event.xUserId
this.xCommunityId = event.xCommunityId
this.transactionId = event.transactionId
this.contributionId = event.contributionId
this.amount = event.amount
}
}
public setEventBasic(): Event { public setEventBasic(): Event {
this.type = EventProtocolType.BASIC this.type = EventProtocolType.BASIC
this.createdAt = new Date() this.createdAt = new Date()

View File

@ -3,39 +3,21 @@ import { backendLogger as logger } from '@/server/logger'
import { EventProtocol } from '@entity/EventProtocol' import { EventProtocol } from '@entity/EventProtocol'
import CONFIG from '@/config' import CONFIG from '@/config'
class EventProtocolEmitter { export const writeEvent = async (event: Event): Promise<EventProtocol | null> => {
/* }extends EventEmitter { */ if (CONFIG.EVENT_PROTOCOL_DISABLED) {
private events: Event[] logger.info('EventProtocol is disabled', CONFIG.EVENT_PROTOCOL_DISABLED)
return null
/*
public addEvent(event: Event) {
this.events.push(event)
} }
public getEvents(): Event[] { logger.info('writeEvent', event)
return this.events const dbEvent = new EventProtocol()
} dbEvent.type = event.type
*/ dbEvent.createdAt = event.createdAt
dbEvent.userId = event.userId
public isDisabled() { dbEvent.xUserId = event.xUserId || null
logger.info(`EventProtocol - isDisabled=${CONFIG.EVENT_PROTOCOL_DISABLED}`) dbEvent.xCommunityId = event.xCommunityId || null
return CONFIG.EVENT_PROTOCOL_DISABLED === true dbEvent.contributionId = event.contributionId || null
} dbEvent.transactionId = event.transactionId || null
dbEvent.amount = event.amount || null
public async writeEvent(event: Event): Promise<void> { return dbEvent.save()
if (!eventProtocol.isDisabled()) {
logger.info(`writeEvent(${JSON.stringify(event)})`)
const dbEvent = new EventProtocol()
dbEvent.type = event.type
dbEvent.createdAt = event.createdAt
dbEvent.userId = event.userId
if (event.xUserId) dbEvent.xUserId = event.xUserId
if (event.xCommunityId) dbEvent.xCommunityId = event.xCommunityId
if (event.contributionId) dbEvent.contributionId = event.contributionId
if (event.transactionId) dbEvent.transactionId = event.transactionId
if (event.amount) dbEvent.amount = event.amount
await dbEvent.save()
}
}
} }
export const eventProtocol = new EventProtocolEmitter()

View File

@ -46,7 +46,7 @@ import {
EventAdminContributionDelete, EventAdminContributionDelete,
EventAdminContributionUpdate, EventAdminContributionUpdate,
} from '@/event/Event' } from '@/event/Event'
import { eventProtocol } from '@/event/EventProtocolEmitter' import { writeEvent } from '@/event/EventProtocolEmitter'
import { calculateDecay } from '@/util/decay' import { calculateDecay } from '@/util/decay'
import { import {
sendContributionConfirmedEmail, sendContributionConfirmedEmail,
@ -97,7 +97,7 @@ export class ContributionResolver {
eventCreateContribution.userId = user.id eventCreateContribution.userId = user.id
eventCreateContribution.amount = amount eventCreateContribution.amount = amount
eventCreateContribution.contributionId = contribution.id eventCreateContribution.contributionId = contribution.id
await eventProtocol.writeEvent(event.setEventContributionCreate(eventCreateContribution)) await writeEvent(event.setEventContributionCreate(eventCreateContribution))
return new UnconfirmedContribution(contribution, user, creations) return new UnconfirmedContribution(contribution, user, creations)
} }
@ -133,7 +133,7 @@ export class ContributionResolver {
eventDeleteContribution.userId = user.id eventDeleteContribution.userId = user.id
eventDeleteContribution.contributionId = contribution.id eventDeleteContribution.contributionId = contribution.id
eventDeleteContribution.amount = contribution.amount eventDeleteContribution.amount = contribution.amount
await eventProtocol.writeEvent(event.setEventContributionDelete(eventDeleteContribution)) await writeEvent(event.setEventContributionDelete(eventDeleteContribution))
const res = await contribution.softRemove() const res = await contribution.softRemove()
return !!res return !!res
@ -290,7 +290,7 @@ export class ContributionResolver {
eventUpdateContribution.userId = user.id eventUpdateContribution.userId = user.id
eventUpdateContribution.contributionId = contributionId eventUpdateContribution.contributionId = contributionId
eventUpdateContribution.amount = amount eventUpdateContribution.amount = amount
await eventProtocol.writeEvent(event.setEventContributionUpdate(eventUpdateContribution)) await writeEvent(event.setEventContributionUpdate(eventUpdateContribution))
return new UnconfirmedContribution(contributionToUpdate, user, creations) return new UnconfirmedContribution(contributionToUpdate, user, creations)
} }
@ -357,9 +357,7 @@ export class ContributionResolver {
eventAdminCreateContribution.userId = moderator.id eventAdminCreateContribution.userId = moderator.id
eventAdminCreateContribution.amount = amount eventAdminCreateContribution.amount = amount
eventAdminCreateContribution.contributionId = contribution.id eventAdminCreateContribution.contributionId = contribution.id
await eventProtocol.writeEvent( await writeEvent(event.setEventAdminContributionCreate(eventAdminCreateContribution))
event.setEventAdminContributionCreate(eventAdminCreateContribution),
)
return getUserCreation(emailContact.userId, clientTimezoneOffset) return getUserCreation(emailContact.userId, clientTimezoneOffset)
} }
@ -469,9 +467,7 @@ export class ContributionResolver {
eventAdminContributionUpdate.userId = user.id eventAdminContributionUpdate.userId = user.id
eventAdminContributionUpdate.amount = amount eventAdminContributionUpdate.amount = amount
eventAdminContributionUpdate.contributionId = contributionToUpdate.id eventAdminContributionUpdate.contributionId = contributionToUpdate.id
await eventProtocol.writeEvent( await writeEvent(event.setEventAdminContributionUpdate(eventAdminContributionUpdate))
event.setEventAdminContributionUpdate(eventAdminContributionUpdate),
)
return result return result
} }
@ -549,9 +545,7 @@ export class ContributionResolver {
eventAdminContributionDelete.userId = contribution.userId eventAdminContributionDelete.userId = contribution.userId
eventAdminContributionDelete.amount = contribution.amount eventAdminContributionDelete.amount = contribution.amount
eventAdminContributionDelete.contributionId = contribution.id eventAdminContributionDelete.contributionId = contribution.id
await eventProtocol.writeEvent( await writeEvent(event.setEventAdminContributionDelete(eventAdminContributionDelete))
event.setEventAdminContributionDelete(eventAdminContributionDelete),
)
sendContributionDeniedEmail({ sendContributionDeniedEmail({
firstName: user.firstName, firstName: user.firstName,
lastName: user.lastName, lastName: user.lastName,
@ -679,7 +673,7 @@ export class ContributionResolver {
eventContributionConfirm.userId = user.id eventContributionConfirm.userId = user.id
eventContributionConfirm.amount = contribution.amount eventContributionConfirm.amount = contribution.amount
eventContributionConfirm.contributionId = contribution.id eventContributionConfirm.contributionId = contribution.id
await eventProtocol.writeEvent(event.setEventContributionConfirm(eventContributionConfirm)) await writeEvent(event.setEventContributionConfirm(eventContributionConfirm))
} finally { } finally {
releaseLock() releaseLock()
} }

View File

@ -30,7 +30,7 @@ import {
sendTransactionReceivedEmail, sendTransactionReceivedEmail,
} from '@/emails/sendEmailVariants' } from '@/emails/sendEmailVariants'
import { Event, EventTransactionReceive, EventTransactionSend } from '@/event/Event' import { Event, EventTransactionReceive, EventTransactionSend } from '@/event/Event'
import { eventProtocol } from '@/event/EventProtocolEmitter' import { writeEvent } from '@/event/EventProtocolEmitter'
import { BalanceResolver } from './BalanceResolver' import { BalanceResolver } from './BalanceResolver'
import { MEMO_MAX_CHARS, MEMO_MIN_CHARS } from './const/const' import { MEMO_MAX_CHARS, MEMO_MIN_CHARS } from './const/const'
@ -144,16 +144,14 @@ export const executeTransaction = async (
eventTransactionSend.xUserId = transactionSend.linkedUserId eventTransactionSend.xUserId = transactionSend.linkedUserId
eventTransactionSend.transactionId = transactionSend.id eventTransactionSend.transactionId = transactionSend.id
eventTransactionSend.amount = transactionSend.amount.mul(-1) eventTransactionSend.amount = transactionSend.amount.mul(-1)
await eventProtocol.writeEvent(new Event().setEventTransactionSend(eventTransactionSend)) await writeEvent(new Event().setEventTransactionSend(eventTransactionSend))
const eventTransactionReceive = new EventTransactionReceive() const eventTransactionReceive = new EventTransactionReceive()
eventTransactionReceive.userId = transactionReceive.userId eventTransactionReceive.userId = transactionReceive.userId
eventTransactionReceive.xUserId = transactionReceive.linkedUserId eventTransactionReceive.xUserId = transactionReceive.linkedUserId
eventTransactionReceive.transactionId = transactionReceive.id eventTransactionReceive.transactionId = transactionReceive.id
eventTransactionReceive.amount = transactionReceive.amount eventTransactionReceive.amount = transactionReceive.amount
await eventProtocol.writeEvent( await writeEvent(new Event().setEventTransactionReceive(eventTransactionReceive))
new Event().setEventTransactionReceive(eventTransactionReceive),
)
} catch (e) { } catch (e) {
await queryRunner.rollbackTransaction() await queryRunner.rollbackTransaction()
logger.error(`Transaction was not successful: ${e}`) logger.error(`Transaction was not successful: ${e}`)

View File

@ -48,7 +48,7 @@ import { klicktippNewsletterStateMiddleware } from '@/middleware/klicktippMiddle
import { klicktippSignIn } from '@/apis/KlicktippController' import { klicktippSignIn } from '@/apis/KlicktippController'
import { RIGHTS } from '@/auth/RIGHTS' import { RIGHTS } from '@/auth/RIGHTS'
import { hasElopageBuys } from '@/util/hasElopageBuys' import { hasElopageBuys } from '@/util/hasElopageBuys'
import { eventProtocol } from '@/event/EventProtocolEmitter' import { writeEvent } from '@/event/EventProtocolEmitter'
import { import {
Event, Event,
EventLogin, EventLogin,
@ -179,7 +179,7 @@ export class UserResolver {
}) })
const ev = new EventLogin() const ev = new EventLogin()
ev.userId = user.id ev.userId = user.id
eventProtocol.writeEvent(new Event().setEventLogin(ev)) writeEvent(new Event().setEventLogin(ev))
logger.info(`successful Login: ${JSON.stringify(user, null, 2)}`) logger.info(`successful Login: ${JSON.stringify(user, null, 2)}`)
return user return user
} }
@ -251,9 +251,7 @@ export class UserResolver {
}) })
const eventSendAccountMultiRegistrationEmail = new EventSendAccountMultiRegistrationEmail() const eventSendAccountMultiRegistrationEmail = new EventSendAccountMultiRegistrationEmail()
eventSendAccountMultiRegistrationEmail.userId = foundUser.id eventSendAccountMultiRegistrationEmail.userId = foundUser.id
eventProtocol.writeEvent( writeEvent(event.setEventSendConfirmationEmail(eventSendAccountMultiRegistrationEmail))
event.setEventSendConfirmationEmail(eventSendAccountMultiRegistrationEmail),
)
logger.info( logger.info(
`sendAccountMultiRegistrationEmail by ${firstName} ${lastName} to ${foundUser.firstName} ${foundUser.lastName} <${email}>`, `sendAccountMultiRegistrationEmail by ${firstName} ${lastName} to ${foundUser.firstName} ${foundUser.lastName} <${email}>`,
) )
@ -336,7 +334,7 @@ export class UserResolver {
}) })
logger.info(`sendAccountActivationEmail of ${firstName}.${lastName} to ${email}`) logger.info(`sendAccountActivationEmail of ${firstName}.${lastName} to ${email}`)
eventSendConfirmEmail.userId = dbUser.id eventSendConfirmEmail.userId = dbUser.id
eventProtocol.writeEvent(event.setEventSendConfirmationEmail(eventSendConfirmEmail)) writeEvent(event.setEventSendConfirmationEmail(eventSendConfirmEmail))
if (!emailSent) { if (!emailSent) {
logger.debug(`Account confirmation link: ${activationLink}`) logger.debug(`Account confirmation link: ${activationLink}`)
@ -354,10 +352,10 @@ export class UserResolver {
if (redeemCode) { if (redeemCode) {
eventRedeemRegister.userId = dbUser.id eventRedeemRegister.userId = dbUser.id
await eventProtocol.writeEvent(event.setEventRedeemRegister(eventRedeemRegister)) await writeEvent(event.setEventRedeemRegister(eventRedeemRegister))
} else { } else {
eventRegister.userId = dbUser.id eventRegister.userId = dbUser.id
await eventProtocol.writeEvent(event.setEventRegister(eventRegister)) await writeEvent(event.setEventRegister(eventRegister))
} }
return new User(dbUser) return new User(dbUser)
@ -477,7 +475,7 @@ export class UserResolver {
const eventActivateAccount = new EventActivateAccount() const eventActivateAccount = new EventActivateAccount()
eventActivateAccount.userId = user.id eventActivateAccount.userId = user.id
eventProtocol.writeEvent(event.setEventActivateAccount(eventActivateAccount)) writeEvent(event.setEventActivateAccount(eventActivateAccount))
} catch (e) { } catch (e) {
await queryRunner.rollbackTransaction() await queryRunner.rollbackTransaction()
throw new LogError('Error on writing User and User Contact data', e) throw new LogError('Error on writing User and User Contact data', e)
@ -824,9 +822,7 @@ export class UserResolver {
const event = new Event() const event = new Event()
const eventSendConfirmationEmail = new EventSendConfirmationEmail() const eventSendConfirmationEmail = new EventSendConfirmationEmail()
eventSendConfirmationEmail.userId = user.id eventSendConfirmationEmail.userId = user.id
await eventProtocol.writeEvent( await writeEvent(event.setEventSendConfirmationEmail(eventSendConfirmationEmail))
event.setEventSendConfirmationEmail(eventSendConfirmationEmail),
)
} }
return true return true

View File

@ -16,17 +16,17 @@ export class EventProtocol extends BaseEntity {
@Column({ name: 'user_id', unsigned: true, nullable: false }) @Column({ name: 'user_id', unsigned: true, nullable: false })
userId: number userId: number
@Column({ name: 'x_user_id', unsigned: true, nullable: true }) @Column({ name: 'x_user_id', type: 'int', unsigned: true, nullable: true })
xUserId: number xUserId: number | null
@Column({ name: 'x_community_id', unsigned: true, nullable: true }) @Column({ name: 'x_community_id', type: 'int', unsigned: true, nullable: true })
xCommunityId: number xCommunityId: number | null
@Column({ name: 'transaction_id', unsigned: true, nullable: true }) @Column({ name: 'transaction_id', type: 'int', unsigned: true, nullable: true })
transactionId: number transactionId: number | null
@Column({ name: 'contribution_id', unsigned: true, nullable: true }) @Column({ name: 'contribution_id', type: 'int', unsigned: true, nullable: true })
contributionId: number contributionId: number | null
@Column({ @Column({
type: 'decimal', type: 'decimal',
@ -35,8 +35,8 @@ export class EventProtocol extends BaseEntity {
nullable: true, nullable: true,
transformer: DecimalTransformer, transformer: DecimalTransformer,
}) })
amount: Decimal amount: Decimal | null
@Column({ name: 'message_id', unsigned: true, nullable: true }) @Column({ name: 'message_id', type: 'int', unsigned: true, nullable: true })
messageId: number messageId: number | null
} }