diff --git a/backend/src/auth/RIGHTS.ts b/backend/src/auth/RIGHTS.ts index d5e2cc7ce..8e51c182e 100644 --- a/backend/src/auth/RIGHTS.ts +++ b/backend/src/auth/RIGHTS.ts @@ -48,4 +48,5 @@ export enum RIGHTS { LIST_CONTRIBUTION_LINKS = 'LIST_CONTRIBUTION_LINKS', DELETE_CONTRIBUTION_LINK = 'DELETE_CONTRIBUTION_LINK', UPDATE_CONTRIBUTION_LINK = 'UPDATE_CONTRIBUTION_LINK', + ADMIN_RETRIEVE_NOT_REGISTERED_EMAILS = 'ADMIN_RETRIEVE_NOT_REGISTERED_EMAILS', } diff --git a/backend/src/graphql/resolver/KlicktippResolver.ts b/backend/src/graphql/resolver/KlicktippResolver.ts index ce9a097e2..fecf6f08c 100644 --- a/backend/src/graphql/resolver/KlicktippResolver.ts +++ b/backend/src/graphql/resolver/KlicktippResolver.ts @@ -7,6 +7,8 @@ import { } from '@/apis/KlicktippController' import { RIGHTS } from '@/auth/RIGHTS' import SubscribeNewsletterArgs from '@arg/SubscribeNewsletterArgs' +import { User } from '@entity/User' +import { backendLogger } from '@/server/logger' @Resolver() export class KlicktippResolver { @@ -35,4 +37,21 @@ export class KlicktippResolver { ): Promise { return await klicktippSignIn(email, language) } + + @Authorized([RIGHTS.ADMIN_RETRIEVE_NOT_REGISTERED_EMAILS]) + @Query(() => [String]) + async retrieveNotRegisteredEmails(): Promise { + const users = await User.find() + const notRegisteredUser = [] + for (let i = 0; i < users.length; i++) { + const user = users[i] + try { + await getKlickTippUser(user.email) + } catch (err) { + notRegisteredUser.push(user.email) + backendLogger.error(`Error with email: ${user.email}; ${err}`) + } + } + return notRegisteredUser + } }