From d089146fe4effe1f4c25c12d857dcf1e57cd807c Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Wed, 8 May 2024 17:49:50 +0200 Subject: [PATCH] user must delete account on humhub --- backend/src/apis/humhub/HumHubClient.ts | 7 ++++++- backend/src/apis/humhub/compareHumhubUserDbUser.ts | 1 + backend/src/apis/humhub/model/Account.ts | 2 ++ backend/src/graphql/resolver/UserResolver.ts | 11 +++++++++++ .../components/UserSettings/UserSettingsSwitch.vue | 8 +++++++- frontend/src/locales/de.json | 3 ++- frontend/src/locales/en.json | 1 + frontend/src/pages/Settings.vue | 14 ++++++++------ 8 files changed, 38 insertions(+), 9 deletions(-) diff --git a/backend/src/apis/humhub/HumHubClient.ts b/backend/src/apis/humhub/HumHubClient.ts index dbada6ac3..6fe04e719 100644 --- a/backend/src/apis/humhub/HumHubClient.ts +++ b/backend/src/apis/humhub/HumHubClient.ts @@ -1,6 +1,6 @@ import { User } from '@entity/User' import { SignJWT } from 'jose' -import { IRequestOptions, RestClient } from 'typed-rest-client' +import { IRequestOptions, IRestResponse, RestClient } from 'typed-rest-client' import { CONFIG } from '@/config' import { LogError } from '@/server/LogError' @@ -104,6 +104,11 @@ export class HumHubClient { return response.result } + public async userByEmailAsync(email: string): Promise> { + const options = await this.createRequestOptions({ email }) + return this.restClient.get('/api/v1/user/get-by-email', options) + } + /** * get user by username * https://marketplace.humhub.com/module/rest/docs/html/user.html#tag/User/paths/~1user~1get-by-username/get diff --git a/backend/src/apis/humhub/compareHumhubUserDbUser.ts b/backend/src/apis/humhub/compareHumhubUserDbUser.ts index 95192be89..9b7f0b51b 100644 --- a/backend/src/apis/humhub/compareHumhubUserDbUser.ts +++ b/backend/src/apis/humhub/compareHumhubUserDbUser.ts @@ -17,6 +17,7 @@ function accountIsTheSame(account: Account, user: User): boolean { if (account.username !== gradidoUserAccount.username) return false if (account.email !== gradidoUserAccount.email) return false if (account.language !== gradidoUserAccount.language) return false + if (account.status !== gradidoUserAccount.status) return false return true } diff --git a/backend/src/apis/humhub/model/Account.ts b/backend/src/apis/humhub/model/Account.ts index 1133ababb..1ac30fc98 100644 --- a/backend/src/apis/humhub/model/Account.ts +++ b/backend/src/apis/humhub/model/Account.ts @@ -13,9 +13,11 @@ export class Account { this.email = user.emailContact.email this.language = convertGradidoLanguageToHumhub(user.language) + this.status = 1 } username: string email: string language: string + status: number } diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index a75f69fed..9f6ce8d74 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -82,6 +82,8 @@ 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' @@ -144,6 +146,10 @@ export class UserResolver { @Args() { email, password, publisherId }: UnsecureLoginArgs, @Ctx() context: Context, ): Promise { + let humhubUserPromise: Promise> | 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) @@ -192,6 +198,11 @@ export class UserResolver { }) await EVENT_USER_LOGIN(dbUser) + // load humhub state + if (CONFIG.HUMHUB_ACTIVE && user.humhubAllowed) { + const result = await humhubUserPromise + user.humhubAllowed = result?.result?.account.status === 1 + } logger.info(`successful Login: ${JSON.stringify(user, null, 2)}`) return user } diff --git a/frontend/src/components/UserSettings/UserSettingsSwitch.vue b/frontend/src/components/UserSettings/UserSettingsSwitch.vue index dfa4e5260..20878db86 100644 --- a/frontend/src/components/UserSettings/UserSettingsSwitch.vue +++ b/frontend/src/components/UserSettings/UserSettingsSwitch.vue @@ -1,5 +1,5 @@