Merge pull request #1448 from gradido/admin-email-confirmation

fix: Admin Email Confirmation Date and Time
This commit is contained in:
Moriz Wahl 2022-02-14 13:54:19 +01:00 committed by GitHub
commit a503a4d456
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 43 additions and 18 deletions

View File

@ -1,7 +1,7 @@
<template>
<div class="component-confirm-register-mail">
<div class="shadow p-3 mb-5 bg-white rounded">
<div v-if="checked">{{ $t('unregister_mail.text_true', { date: dateLastSend }) }}</div>
<div v-if="checked">{{ $t('unregister_mail.text_true') }}</div>
<div v-else>
{{ $t('unregister_mail.text_false', { date: dateLastSend, mail: email }) }}

View File

@ -63,7 +63,11 @@
<confirm-register-mail-formular
:checked="row.item.emailChecked"
:email="row.item.email"
:dateLastSend="$d(new Date(), 'long')"
:dateLastSend="
row.item.emailConfirmationSend
? $d(new Date(row.item.emailConfirmationSend), 'long')
: ''
"
/>
</template>
<template #show-transaction-list>

View File

@ -17,6 +17,7 @@ export const searchUsers = gql`
creation
emailChecked
hasElopage
emailConfirmationSend
}
}
}

View File

@ -54,9 +54,9 @@ const dateTimeFormats = {
},
long: {
year: 'numeric',
month: 'short',
month: 'long',
day: 'numeric',
weekday: 'short',
weekday: 'long',
hour: 'numeric',
minute: 'numeric',
},
@ -78,9 +78,9 @@ const dateTimeFormats = {
},
long: {
day: 'numeric',
month: 'short',
month: 'long',
year: 'numeric',
weekday: 'short',
weekday: 'long',
hour: 'numeric',
minute: 'numeric',
},

View File

@ -77,7 +77,7 @@
"info": "Email bestätigen, wiederholt senden an:",
"success": "Erfolgreiches Senden des Bestätigungs-Links an die E-Mail des Nutzers! ({email})",
"text_false": " Die letzte Email wurde am {date} Uhr an das Mitglied ({mail}) gesendet.",
"text_true": " Die Email wurde am {date} Uhr bestätigt."
"text_true": " Die Email wurde bestätigt."
},
"user_search": "Nutzer-Suche"
}

View File

@ -76,8 +76,8 @@
"error": "Error sending the confirmation link to the user: {message}",
"info": "Confirm email, send repeatedly to:",
"success": "Successfully send the confirmation link to the user's email! ({email})",
"text_false": "The last email was sent to the member ({mail}) on {date} clock.",
"text_true": "The email was confirmed on {date} clock."
"text_false": "The last email was sent to the member ({mail}) on {date}.",
"text_true": "The email was confirmed."
},
"user_search": "User search"
}

View File

@ -22,6 +22,9 @@ export class UserAdmin {
@Field(() => Boolean)
hasElopage: boolean
@Field(() => String, { nullable: true })
emailConfirmationSend?: string
}
@ObjectType()

View File

@ -22,7 +22,10 @@ import { BalanceRepository } from '../../typeorm/repository/Balance'
import { calculateDecay } from '../../util/decay'
import { AdminPendingCreation } from '@entity/AdminPendingCreation'
import { hasElopageBuys } from '../../util/hasElopageBuys'
import { User as dbUser } from '@entity/User'
import { LoginEmailOptIn } from '@entity/LoginEmailOptIn'
// const EMAIL_OPT_IN_REGISTER = 1
// const EMAIL_OPT_UNKNOWN = 3 // elopage?
@Resolver()
export class AdminResolver {
@ -41,8 +44,28 @@ export class AdminResolver {
adminUser.lastName = user.lastName
adminUser.email = user.email
adminUser.creation = await getUserCreations(user.id)
adminUser.emailChecked = await hasActivatedEmail(user.email)
adminUser.emailChecked = user.emailChecked
adminUser.hasElopage = await hasElopageBuys(user.email)
if (!user.emailChecked) {
const emailOptIn = await LoginEmailOptIn.findOne(
{
userId: user.id,
},
{
order: {
updatedAt: 'DESC',
createdAt: 'DESC',
},
},
)
if (emailOptIn) {
if (emailOptIn.updatedAt) {
adminUser.emailConfirmationSend = emailOptIn.updatedAt.toISOString()
} else {
adminUser.emailConfirmationSend = emailOptIn.createdAt.toISOString()
}
}
}
return adminUser
}),
)
@ -61,8 +84,7 @@ export class AdminResolver {
): Promise<number[]> {
const userRepository = getCustomRepository(UserRepository)
const user = await userRepository.findByEmail(email)
const isActivated = await hasActivatedEmail(user.email)
if (!isActivated) {
if (!user.emailChecked) {
throw new Error('Creation could not be saved, Email is not activated')
}
const creations = await getUserCreations(user.id)
@ -374,8 +396,3 @@ function isCreationValid(creations: number[], amount: number, creationDate: Date
}
return true
}
async function hasActivatedEmail(email: string): Promise<boolean> {
const user = await dbUser.findOne({ email })
return user ? user.emailChecked : false
}