mirror of
https://github.com/OpenSquawk/OpenSquawk
synced 2026-07-31 13:55:34 +08:00
Fix remaining German comment
This commit is contained in:
@@ -15,7 +15,7 @@ export default defineEventHandler(async (event) => {
|
||||
const email = body.email?.trim().toLowerCase()
|
||||
|
||||
if (!email) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Bitte eine E-Mail-Adresse angeben' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'Please provide an email address' })
|
||||
}
|
||||
|
||||
const user = await User.findOne({ email })
|
||||
@@ -32,21 +32,21 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
const salutation = user.name ? ` ${user.name}` : ''
|
||||
const lines = [
|
||||
`Hallo${salutation},`,
|
||||
`Hi${salutation},`,
|
||||
'',
|
||||
'du hast den Link zum Zurücksetzen deines OpenSquawk-Passworts angefordert.',
|
||||
`Klicke innerhalb von ${RESET_TOKEN_TTL_MINUTES} Minuten auf den folgenden Link, um ein neues Passwort festzulegen:`,
|
||||
'You requested a link to reset your OpenSquawk password.',
|
||||
`Click the link below within ${RESET_TOKEN_TTL_MINUTES} minutes to choose a new password:`,
|
||||
resetLink,
|
||||
'',
|
||||
'Wenn du diese Anfrage nicht gestellt hast, kannst du diese E-Mail ignorieren.',
|
||||
'If you did not make this request, you can safely ignore this email.',
|
||||
'',
|
||||
'Blue skies,',
|
||||
'dein OpenSquawk-Team',
|
||||
'Your OpenSquawk crew',
|
||||
]
|
||||
|
||||
await sendMail({
|
||||
to: user.email,
|
||||
subject: 'OpenSquawk Passwort zurücksetzen',
|
||||
subject: 'Reset your OpenSquawk password',
|
||||
text: lines.join('\n'),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -13,17 +13,17 @@ export default defineEventHandler(async (event) => {
|
||||
const password = body.password?.trim()
|
||||
|
||||
if (!email || !password) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Bitte E-Mail und Passwort angeben' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'Please provide email and password' })
|
||||
}
|
||||
|
||||
const user = await User.findOne({ email })
|
||||
if (!user) {
|
||||
throw createError({ statusCode: 401, statusMessage: 'Ungültige Zugangsdaten' })
|
||||
throw createError({ statusCode: 401, statusMessage: 'Invalid credentials' })
|
||||
}
|
||||
|
||||
const valid = await verifyPassword(password, user.passwordHash)
|
||||
if (!valid) {
|
||||
throw createError({ statusCode: 401, statusMessage: 'Ungültige Zugangsdaten' })
|
||||
throw createError({ statusCode: 401, statusMessage: 'Invalid credentials' })
|
||||
}
|
||||
|
||||
user.lastLoginAt = new Date()
|
||||
|
||||
@@ -23,36 +23,36 @@ export default defineEventHandler(async (event) => {
|
||||
const email = emailInput.toLowerCase()
|
||||
|
||||
if (!emailInput || !password || !code) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Bitte E-Mail, Passwort und Einladungscode angeben' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'Please provide email, password and invitation code' })
|
||||
}
|
||||
|
||||
if (!body.acceptPrivacy || !body.acceptTerms) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Bitte AGB und Datenschutz bestätigen' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'Please accept the terms and privacy policy' })
|
||||
}
|
||||
|
||||
if (!isValidEmail(emailInput)) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Bitte eine gültige E-Mail-Adresse angeben' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'Please provide a valid email address' })
|
||||
}
|
||||
|
||||
const passwordValidation = validatePasswordStrength(password)
|
||||
if (!passwordValidation.valid) {
|
||||
throw createError({ statusCode: 400, statusMessage: passwordValidation.message || 'Passwort ist zu schwach' })
|
||||
throw createError({ statusCode: 400, statusMessage: passwordValidation.message || 'Password is too weak' })
|
||||
}
|
||||
|
||||
const existingUser = await User.findOne({ email })
|
||||
if (existingUser) {
|
||||
throw createError({ statusCode: 409, statusMessage: 'Für diese E-Mail existiert bereits ein Konto' })
|
||||
throw createError({ statusCode: 409, statusMessage: 'An account already exists for this email address' })
|
||||
}
|
||||
|
||||
const invitation = await InvitationCode.findOne({ code })
|
||||
if (!invitation) {
|
||||
throw createError({ statusCode: 404, statusMessage: 'Einladungscode nicht gefunden' })
|
||||
throw createError({ statusCode: 404, statusMessage: 'Invitation code not found' })
|
||||
}
|
||||
if (invitation.usedBy) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Einladungscode wurde bereits verwendet' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'Invitation code has already been used' })
|
||||
}
|
||||
if (invitation.expiresAt && invitation.expiresAt < new Date()) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Einladungscode ist abgelaufen' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'Invitation code has expired' })
|
||||
}
|
||||
|
||||
const passwordHash = await hashPassword(password)
|
||||
|
||||
@@ -15,24 +15,24 @@ export default defineEventHandler(async (event) => {
|
||||
const password = body.password?.trim()
|
||||
|
||||
if (!token || !password) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Token und neues Passwort erforderlich' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'Token and new password required' })
|
||||
}
|
||||
|
||||
if (password.length < 8) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Das Passwort muss mindestens 8 Zeichen enthalten' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'Password must be at least 8 characters long' })
|
||||
}
|
||||
|
||||
const tokenHash = createHash('sha256').update(token).digest('hex')
|
||||
const resetToken = await PasswordResetToken.findOne({ tokenHash })
|
||||
|
||||
if (!resetToken || (resetToken.expiresAt && resetToken.expiresAt < new Date()) || resetToken.usedAt) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Dieser Link ist ungültig oder abgelaufen' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'This link is invalid or has expired' })
|
||||
}
|
||||
|
||||
const user = await User.findById(resetToken.user)
|
||||
if (!user) {
|
||||
await resetToken.deleteOne().catch(() => undefined)
|
||||
throw createError({ statusCode: 400, statusMessage: 'Dieser Link ist ungültig oder abgelaufen' })
|
||||
throw createError({ statusCode: 400, statusMessage: 'This link is invalid or has expired' })
|
||||
}
|
||||
|
||||
user.passwordHash = await hashPassword(password)
|
||||
|
||||
Reference in New Issue
Block a user