remove profiling, lint, fix test

This commit is contained in:
einhornimmond 2024-05-09 13:48:19 +02:00
parent 97f3cd456d
commit 04696c46d4
5 changed files with 34 additions and 16 deletions

View File

@ -105,10 +105,7 @@ export class HumHubClient {
}
public async userByEmailAsync(email: string): Promise<IRestResponse<GetUser>> {
const startTime = new Date()
const options = await this.createRequestOptions({ email })
const endTime = new Date()
console.log("time for prepare connection: ", endTime.getTime() - startTime.getTime())
return this.restClient.get<GetUser>('/api/v1/user/get-by-email', options)
}

View File

@ -1,5 +1,6 @@
import { User } from '@entity/User'
import { UserContact } from '@entity/UserContact'
import { IRestResponse } from 'typed-rest-client'
import { GetUser } from '@/apis/humhub/model/GetUser'
import { PostUser } from '@/apis/humhub/model/PostUser'
@ -33,6 +34,25 @@ export class HumHubClient {
return Promise.resolve(new GetUser(user, 1))
}
public async userByEmailAsync(email: string): Promise<IRestResponse<GetUser>> {
const user = new User()
user.emailContact = new UserContact()
user.emailContact.email = email
return Promise.resolve({
statusCode: 200,
result: new GetUser(user, 1),
headers: {},
})
}
public async userByUsername(username: string): Promise<GetUser | null> {
const user = new User()
user.alias = username
user.emailContact = new UserContact()
user.emailContact.email = 'testemail@gmail.com'
return Promise.resolve(new GetUser(user, 1))
}
public async createUser(): Promise<void> {
return Promise.resolve()
}

View File

@ -73,6 +73,8 @@ import { objectValuesToArray } from '@/util/utilities'
import { Location2Point } from './util/Location2Point'
jest.mock('@/apis/humhub/HumHubClient')
jest.mock('@/emails/sendEmailVariants', () => {
const originalModule = jest.requireActual('@/emails/sendEmailVariants')
return {

View File

@ -10,6 +10,7 @@ import { UserContact as DbUserContact } from '@entity/UserContact'
import { UserRole } from '@entity/UserRole'
import i18n from 'i18n'
import { Resolver, Query, Args, Arg, Authorized, Ctx, Mutation, Int } from 'type-graphql'
import { IRestResponse } from 'typed-rest-client'
import { v4 as uuidv4 } from 'uuid'
import { UserArgs } from '@arg//UserArgs'
@ -32,6 +33,7 @@ import { UserAdmin, SearchUsersResult } from '@model/UserAdmin'
import { updateGmsUser } from '@/apis/gms/GmsClient'
import { GmsUser } from '@/apis/gms/model/GmsUser'
import { HumHubClient } from '@/apis/humhub/HumHubClient'
import { GetUser } from '@/apis/humhub/model/GetUser'
import { subscribe } from '@/apis/KlicktippController'
import { encode } from '@/auth/JWT'
import { RIGHTS } from '@/auth/RIGHTS'
@ -82,8 +84,6 @@ import { setUserRole, deleteUserRole } from './util/modifyUserRole'
import { sendUserToGms } from './util/sendUserToGms'
import { syncHumhub } from './util/syncHumhub'
import { validateAlias } from './util/validateAlias'
import { GetUser } from '@/apis/humhub/model/GetUser'
import { IRestResponse } from 'typed-rest-client'
const LANGUAGES = ['de', 'en', 'es', 'fr', 'nl']
const DEFAULT_LANGUAGE = 'de'
@ -146,10 +146,6 @@ export class UserResolver {
@Args() { email, password, publisherId }: UnsecureLoginArgs,
@Ctx() context: Context,
): Promise<User> {
let humhubUserPromise: Promise<IRestResponse<GetUser>> | undefined
if (CONFIG.HUMHUB_ACTIVE && HumHubClient.getInstance()) {
humhubUserPromise = HumHubClient.getInstance()?.userByEmailAsync(email)
}
logger.info(`login with ${email}, ***, ${publisherId} ...`)
email = email.trim().toLowerCase()
const dbUser = await findUserByEmail(email)
@ -164,11 +160,17 @@ export class UserResolver {
// TODO we want to catch this on the frontend and ask the user to check his emails or resend code
throw new LogError('The User has not set a password yet', dbUser)
}
if (!verifyPassword(dbUser, password)) {
throw new LogError('No user with this credentials', dbUser)
}
// request to humhub and klicktipp run in parallel
let humhubUserPromise: Promise<IRestResponse<GetUser>> | undefined
const klicktippStatePromise = getKlicktippState(dbUser.emailContact.email)
if (CONFIG.HUMHUB_ACTIVE && dbUser.humhubAllowed) {
humhubUserPromise = HumHubClient.getInstance()?.userByEmailAsync(email)
}
if (dbUser.passwordEncryptionType !== PasswordEncryptionType.GRADIDO_ID) {
dbUser.passwordEncryptionType = PasswordEncryptionType.GRADIDO_ID
dbUser.password = encryptPassword(dbUser, password)
@ -190,7 +192,6 @@ export class UserResolver {
dbUser.publisherId = publisherId
await DbUser.save(dbUser)
}
user.klickTipp = await getKlicktippState(dbUser.emailContact.email)
context.setHeaders.push({
key: 'token',
@ -199,13 +200,11 @@ export class UserResolver {
await EVENT_USER_LOGIN(dbUser)
// load humhub state
if (CONFIG.HUMHUB_ACTIVE && user.humhubAllowed) {
const startTime = new Date()
if (humhubUserPromise) {
const result = await humhubUserPromise
const endTime = new Date()
console.log("wait for humhub at login ", endTime.getTime() - startTime.getTime())
user.humhubAllowed = result?.result?.account.status === 1
}
user.klickTipp = await klicktippStatePromise
logger.info(`successful Login: ${JSON.stringify(user, null, 2)}`)
return user
}

View File

@ -332,7 +332,7 @@
"hideAmountGDT": "Dein GDT Betrag ist versteckt.",
"humhub": {
"delete-disabled": "Das Benutzerkonto kann nur im Profil-Menü der Kooperationsplattform gelöscht werden.",
"disabled": "Daten werden nicht in die Gradido Community exportiert",
"disabled": "Daten werden nicht in die Gradido Community exportiert",
"enabled": "Daten werden in die Gradido Community exportiert",
"naming-format": "Namen anzeigen:",
"publish-name": {