mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
removed middleware and replace it with a function
This commit is contained in:
parent
351d15ccb9
commit
676cf779c7
@ -1,12 +1,9 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
||||||
import { ObjectType, Field } from 'type-graphql'
|
import { ObjectType, Field } from 'type-graphql'
|
||||||
|
|
||||||
@ObjectType()
|
@ObjectType()
|
||||||
export class KlickTipp {
|
export class KlickTipp {
|
||||||
constructor(json: any) {
|
constructor(newsletterState: boolean) {
|
||||||
this.newsletterState = json.status === 'Subscribed'
|
this.newsletterState = newsletterState
|
||||||
}
|
}
|
||||||
|
|
||||||
@Field(() => Boolean)
|
@Field(() => Boolean)
|
||||||
|
|||||||
@ -8,17 +8,7 @@ import { TransactionLink as DbTransactionLink } from '@entity/TransactionLink'
|
|||||||
import { User as DbUser } from '@entity/User'
|
import { User as DbUser } from '@entity/User'
|
||||||
import { UserContact as DbUserContact } from '@entity/UserContact'
|
import { UserContact as DbUserContact } from '@entity/UserContact'
|
||||||
import i18n from 'i18n'
|
import i18n from 'i18n'
|
||||||
import {
|
import { Resolver, Query, Args, Arg, Authorized, Ctx, Mutation, Int } from 'type-graphql'
|
||||||
Resolver,
|
|
||||||
Query,
|
|
||||||
Args,
|
|
||||||
Arg,
|
|
||||||
Authorized,
|
|
||||||
Ctx,
|
|
||||||
UseMiddleware,
|
|
||||||
Mutation,
|
|
||||||
Int,
|
|
||||||
} from 'type-graphql'
|
|
||||||
import { v4 as uuidv4 } from 'uuid'
|
import { v4 as uuidv4 } from 'uuid'
|
||||||
|
|
||||||
import { CreateUserArgs } from '@arg/CreateUserArgs'
|
import { CreateUserArgs } from '@arg/CreateUserArgs'
|
||||||
@ -60,7 +50,6 @@ import {
|
|||||||
EVENT_ADMIN_USER_DELETE,
|
EVENT_ADMIN_USER_DELETE,
|
||||||
EVENT_ADMIN_USER_UNDELETE,
|
EVENT_ADMIN_USER_UNDELETE,
|
||||||
} from '@/event/Events'
|
} from '@/event/Events'
|
||||||
import { klicktippNewsletterStateMiddleware } from '@/middleware/klicktippMiddleware'
|
|
||||||
import { isValidPassword } from '@/password/EncryptorUtils'
|
import { isValidPassword } from '@/password/EncryptorUtils'
|
||||||
import { encryptPassword, verifyPassword } from '@/password/PasswordEncryptor'
|
import { encryptPassword, verifyPassword } from '@/password/PasswordEncryptor'
|
||||||
import { Context, getUser, getClientTimezoneOffset } from '@/server/context'
|
import { Context, getUser, getClientTimezoneOffset } from '@/server/context'
|
||||||
@ -73,6 +62,7 @@ import { getTimeDurationObject, printTimeDuration } from '@/util/time'
|
|||||||
import { FULL_CREATION_AVAILABLE } from './const/const'
|
import { FULL_CREATION_AVAILABLE } from './const/const'
|
||||||
import { getUserCreations } from './util/creations'
|
import { getUserCreations } from './util/creations'
|
||||||
import { findUserByIdentifier } from './util/findUserByIdentifier'
|
import { findUserByIdentifier } from './util/findUserByIdentifier'
|
||||||
|
import { getKlicktippState } from './util/getKlicktippState'
|
||||||
import { validateAlias } from './util/validateAlias'
|
import { validateAlias } from './util/validateAlias'
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-commonjs
|
// eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-commonjs
|
||||||
@ -122,7 +112,6 @@ const newGradidoID = async (): Promise<string> => {
|
|||||||
export class UserResolver {
|
export class UserResolver {
|
||||||
@Authorized([RIGHTS.VERIFY_LOGIN])
|
@Authorized([RIGHTS.VERIFY_LOGIN])
|
||||||
@Query(() => User)
|
@Query(() => User)
|
||||||
@UseMiddleware(klicktippNewsletterStateMiddleware)
|
|
||||||
async verifyLogin(@Ctx() context: Context): Promise<User> {
|
async verifyLogin(@Ctx() context: Context): Promise<User> {
|
||||||
logger.info('verifyLogin...')
|
logger.info('verifyLogin...')
|
||||||
// TODO refactor and do not have duplicate code with login(see below)
|
// TODO refactor and do not have duplicate code with login(see below)
|
||||||
@ -132,12 +121,12 @@ export class UserResolver {
|
|||||||
user.hasElopage = await this.hasElopage(context)
|
user.hasElopage = await this.hasElopage(context)
|
||||||
|
|
||||||
logger.debug(`verifyLogin... successful: ${user.firstName}.${user.lastName}`)
|
logger.debug(`verifyLogin... successful: ${user.firstName}.${user.lastName}`)
|
||||||
|
user.klickTipp = await getKlicktippState(userEntity.emailContact.email)
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
|
|
||||||
@Authorized([RIGHTS.LOGIN])
|
@Authorized([RIGHTS.LOGIN])
|
||||||
@Mutation(() => User)
|
@Mutation(() => User)
|
||||||
@UseMiddleware(klicktippNewsletterStateMiddleware)
|
|
||||||
async login(
|
async login(
|
||||||
@Args() { email, password, publisherId }: UnsecureLoginArgs,
|
@Args() { email, password, publisherId }: UnsecureLoginArgs,
|
||||||
@Ctx() context: Context,
|
@Ctx() context: Context,
|
||||||
@ -183,6 +172,7 @@ export class UserResolver {
|
|||||||
dbUser.publisherId = publisherId
|
dbUser.publisherId = publisherId
|
||||||
await DbUser.save(dbUser)
|
await DbUser.save(dbUser)
|
||||||
}
|
}
|
||||||
|
user.klickTipp = await getKlicktippState(dbUser.emailContact.email)
|
||||||
|
|
||||||
context.setHeaders.push({
|
context.setHeaders.push({
|
||||||
key: 'token',
|
key: 'token',
|
||||||
|
|||||||
19
backend/src/graphql/resolver/util/getKlicktippState.ts
Normal file
19
backend/src/graphql/resolver/util/getKlicktippState.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
||||||
|
import { KlickTipp } from '@model/KlickTipp'
|
||||||
|
|
||||||
|
import { getKlickTippUser } from '@/apis/KlicktippController'
|
||||||
|
import { klickTippLogger as logger } from '@/server/logger'
|
||||||
|
|
||||||
|
export const getKlicktippState = async (email: string): Promise<KlickTipp> => {
|
||||||
|
try {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||||
|
const klickTippUser = await getKlickTippUser(email)
|
||||||
|
if (klickTippUser) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
||||||
|
return new KlickTipp(klickTippUser.status === 'Subscribed')
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
logger.error('There is no klicktipp user for email', email, err)
|
||||||
|
}
|
||||||
|
return new KlickTipp(false)
|
||||||
|
}
|
||||||
@ -1,31 +0,0 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
||||||
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
||||||
import { MiddlewareFn } from 'type-graphql'
|
|
||||||
|
|
||||||
import { KlickTipp } from '@model/KlickTipp'
|
|
||||||
|
|
||||||
import { getKlickTippUser } from '@/apis/KlicktippController'
|
|
||||||
import { klickTippLogger as logger } from '@/server/logger'
|
|
||||||
|
|
||||||
export const klicktippNewsletterStateMiddleware: MiddlewareFn = async (
|
|
||||||
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
|
|
||||||
{ root, args, context, info },
|
|
||||||
next,
|
|
||||||
) => {
|
|
||||||
// eslint-disable-next-line n/callback-return
|
|
||||||
const result = await next()
|
|
||||||
let klickTipp = new KlickTipp({ status: 'Unsubscribed' })
|
|
||||||
try {
|
|
||||||
const klickTippUser = await getKlickTippUser(result.email)
|
|
||||||
if (klickTippUser) {
|
|
||||||
klickTipp = new KlickTipp(klickTippUser)
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
logger.error(`There is no user for (email='${result.email}') ${err}`)
|
|
||||||
}
|
|
||||||
result.klickTipp = klickTipp
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user