diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index df9e180c78..108c060ea7 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -5,10 +5,12 @@ on: branches: - master - develop + - bootstrap5 pull_request: branches: - master - develop + - bootstrap5 defaults: run: diff --git a/CHANGELOG.md b/CHANGELOG.md index 04a3ab3471..50531c9433 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ +#### v2.5.7 (2022-10-14) + +##### Chores + +* incrementing version number - v2.5.6 (c7bd7dbf) +* update changelog for v2.5.6 (e92238d0) +* incrementing version number - v2.5.5 (3509ed94) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### Performance Improvements + +* speed up build (dd4e9cce) + #### v2.5.6 (2022-10-13) ##### Chores diff --git a/README.md b/README.md index ec84b1303e..d06bc0362a 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ [![Workflow](https://github.com/NodeBB/NodeBB/actions/workflows/test.yaml/badge.svg)](https://github.com/NodeBB/NodeBB/actions/workflows/test.yaml) [![Coverage Status](https://coveralls.io/repos/github/NodeBB/NodeBB/badge.svg?branch=master)](https://coveralls.io/github/NodeBB/NodeBB?branch=master) [![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB) +[![](https://dcbadge.vercel.app/api/server/p6YKPXu7er?style=flat)](https://discord.gg/p6YKPXu7er) [**NodeBB Forum Software**](https://nodebb.org) is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB takes the best of the modern web: real-time streaming discussions, mobile responsiveness, and rich RESTful read/write APIs, while staying true to the original bulletin board/forum format → categorical hierarchies, local user accounts, and asynchronous messaging. diff --git a/install/data/defaults.json b/install/data/defaults.json index f3859d2d0c..130e72fd5a 100644 --- a/install/data/defaults.json +++ b/install/data/defaults.json @@ -146,6 +146,7 @@ "maximumRelatedTopics": 0, "disableEmailSubscriptions": 0, "emailConfirmInterval": 10, + "emailConfirmExpiry": 24, "removeEmailNotificationImages": 0, "sendValidationEmail": 1, "includeUnverifiedEmails": 0, diff --git a/install/package.json b/install/package.json index 9428775781..ef7ad84789 100644 --- a/install/package.json +++ b/install/package.json @@ -99,9 +99,9 @@ "nodebb-plugin-spam-be-gone": "1.0.2", "nodebb-rewards-essentials": "0.2.1", "nodebb-theme-lavender": "6.0.0", - "nodebb-theme-persona": "12.1.1", + "nodebb-theme-persona": "12.1.10", "nodebb-theme-slick": "2.0.2", - "nodebb-theme-vanilla": "12.1.18", + "nodebb-theme-vanilla": "12.1.19", "nodebb-widget-essentials": "6.0.0", "nodemailer": "6.7.8", "nprogress": "0.2.0", diff --git a/public/language/ar/admin/settings/email.json b/public/language/ar/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/ar/admin/settings/email.json +++ b/public/language/ar/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/ar/admin/settings/user.json b/public/language/ar/admin/settings/user.json index 6d50f5546f..4c6829de8f 100644 --- a/public/language/ar/admin/settings/user.json +++ b/public/language/ar/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "المصادقة", "email-confirm-interval": "لا يمكن للمستخدم إعادة إرسال رسالة تأكيد البريد الالكتروني حتى مرور", - "email-confirm-email2": "دقائق", + "email-confirm-interval2": "دقائق", "allow-login-with": "السماح بتسجيل الدخول باستخدام", "allow-login-with.username-email": "اسم المستخدم أو البريد الالكتروني", "allow-login-with.username": "اسم المستخدم فقط", diff --git a/public/language/bg/admin/settings/email.json b/public/language/bg/admin/settings/email.json index cab27f8c59..ccf78aba43 100644 --- a/public/language/bg/admin/settings/email.json +++ b/public/language/bg/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Име за полето „От“", "from-help": "Името на изпращача, което да бъде показано в е-писмото.", + "confirmation-settings": "Потвърждение", + "confirmation.expiry": "Продължителност на давността на връзката за потвърждаване, в часове", + "smtp-transport": "Транспорт чрез SMTP", "smtp-transport.enabled": "Включване на транспорта чрез SMTP", "smtp-transport-help": "Можете да изберете от списък от познати услуги, или да въведете такава ръчно.", diff --git a/public/language/bg/admin/settings/user.json b/public/language/bg/admin/settings/user.json index ba1c939c20..af5aa57464 100644 --- a/public/language/bg/admin/settings/user.json +++ b/public/language/bg/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Удостоверяване", "email-confirm-interval": "Потребителят не може да изпраща повторно е-писмото за потвърждение, преди да са минали", - "email-confirm-email2": "минути", + "email-confirm-interval2": "минути", "allow-login-with": "Позволяване на вписването чрез", "allow-login-with.username-email": "Потребителско име или е-поща", "allow-login-with.username": "Само потребителско име", diff --git a/public/language/bn/admin/settings/email.json b/public/language/bn/admin/settings/email.json index 03f53c6c75..cacfb095b9 100644 --- a/public/language/bn/admin/settings/email.json +++ b/public/language/bn/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/bn/admin/settings/user.json b/public/language/bn/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/bn/admin/settings/user.json +++ b/public/language/bn/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/cs/admin/settings/email.json b/public/language/cs/admin/settings/email.json index aa3253c18b..fadb159ee1 100644 --- a/public/language/cs/admin/settings/email.json +++ b/public/language/cs/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Jméno – od", "from-help": "Zobrazené jméno v e-mailu v – Od", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "Přenos SMTP", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Ze seznamu můžete vybrat známé služby nebo zadat vlastní.", diff --git a/public/language/cs/admin/settings/user.json b/public/language/cs/admin/settings/user.json index 78ecdda921..6e10f3f8c4 100644 --- a/public/language/cs/admin/settings/user.json +++ b/public/language/cs/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Ověření", "email-confirm-interval": "Uživatel nesmí požádat o znovu zaslání potvrzujícího e-mailu do", - "email-confirm-email2": "minut uplynulo", + "email-confirm-interval2": "minut uplynulo", "allow-login-with": "Povolit přihlášení pomocí", "allow-login-with.username-email": "Uživatelské jméno nebo e-mail", "allow-login-with.username": "Pouze uživatelské jméno", diff --git a/public/language/da/admin/settings/email.json b/public/language/da/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/da/admin/settings/email.json +++ b/public/language/da/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/da/admin/settings/user.json b/public/language/da/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/da/admin/settings/user.json +++ b/public/language/da/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/de/admin/settings/email.json b/public/language/de/admin/settings/email.json index 0c0ccd8a4d..1444ca221c 100644 --- a/public/language/de/admin/settings/email.json +++ b/public/language/de/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Name des Absenders", "from-help": "Der Name des Absenders, welcher in der E-Mail angezeigt werden soll.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Konfiguration", "smtp-transport.enabled": "SMTP-Transport aktivieren", "smtp-transport-help": "Du kannst aus einer Liste bekannter Email-Provider auswählen, oder einen benutzerdefinierten eingeben.", diff --git a/public/language/de/admin/settings/user.json b/public/language/de/admin/settings/user.json index a2ea87a8e0..e89b47c755 100644 --- a/public/language/de/admin/settings/user.json +++ b/public/language/de/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentifizierung", "email-confirm-interval": "Der Benutzer kann für ", - "email-confirm-email2": " Minuten keine Bestätigungsmail erneut senden.", + "email-confirm-interval2": " Minuten keine Bestätigungsmail erneut senden.", "allow-login-with": "Erlaube Login mit", "allow-login-with.username-email": "Benutzername oder E-Mail", "allow-login-with.username": "Nur Benutzername", diff --git a/public/language/el/admin/settings/email.json b/public/language/el/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/el/admin/settings/email.json +++ b/public/language/el/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/el/admin/settings/user.json b/public/language/el/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/el/admin/settings/user.json +++ b/public/language/el/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/en-GB/admin/settings/email.json b/public/language/en-GB/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/en-GB/admin/settings/email.json +++ b/public/language/en-GB/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/en-GB/admin/settings/user.json b/public/language/en-GB/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/en-GB/admin/settings/user.json +++ b/public/language/en-GB/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/en-US/admin/settings/email.json b/public/language/en-US/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/en-US/admin/settings/email.json +++ b/public/language/en-US/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/en-US/admin/settings/user.json b/public/language/en-US/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/en-US/admin/settings/user.json +++ b/public/language/en-US/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/en-x-pirate/admin/settings/email.json b/public/language/en-x-pirate/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/en-x-pirate/admin/settings/email.json +++ b/public/language/en-x-pirate/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/en-x-pirate/admin/settings/user.json b/public/language/en-x-pirate/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/en-x-pirate/admin/settings/user.json +++ b/public/language/en-x-pirate/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/es/admin/settings/email.json b/public/language/es/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/es/admin/settings/email.json +++ b/public/language/es/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/es/admin/settings/user.json b/public/language/es/admin/settings/user.json index b3bd1c340e..14c840f44c 100644 --- a/public/language/es/admin/settings/user.json +++ b/public/language/es/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticación", "email-confirm-interval": "El usuario no puede re-enviar una confirmación por email hasta", - "email-confirm-email2": "minutos han pasado", + "email-confirm-interval2": "minutos han pasado", "allow-login-with": "Permitir login con", "allow-login-with.username-email": "Nombre de usuario o Email", "allow-login-with.username": "Solo Nombre de Usuario", diff --git a/public/language/et/admin/settings/email.json b/public/language/et/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/et/admin/settings/email.json +++ b/public/language/et/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/et/admin/settings/user.json b/public/language/et/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/et/admin/settings/user.json +++ b/public/language/et/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/fa-IR/admin/settings/email.json b/public/language/fa-IR/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/fa-IR/admin/settings/email.json +++ b/public/language/fa-IR/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/fa-IR/admin/settings/user.json b/public/language/fa-IR/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/fa-IR/admin/settings/user.json +++ b/public/language/fa-IR/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/fi/admin/settings/email.json b/public/language/fi/admin/settings/email.json index 3557bacfc7..740998a605 100644 --- a/public/language/fi/admin/settings/email.json +++ b/public/language/fi/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/fi/admin/settings/user.json b/public/language/fi/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/fi/admin/settings/user.json +++ b/public/language/fi/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/fr/admin/settings/email.json b/public/language/fr/admin/settings/email.json index 3d3a4b8f4f..a741aa8dbf 100644 --- a/public/language/fr/admin/settings/email.json +++ b/public/language/fr/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Nom de l’expéditeur", "from-help": "Le nom de l’expéditeur à afficher dans l'e-mail", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "Protocole SMTP", "smtp-transport.enabled": "Activer l'envoi via SMTP", "smtp-transport-help": "Vous pouvez sélectionner depuis une liste de services ou entrer un service personnalisé.", diff --git a/public/language/fr/admin/settings/user.json b/public/language/fr/admin/settings/user.json index 5a0cfba2f1..a6e6c9f25f 100644 --- a/public/language/fr/admin/settings/user.json +++ b/public/language/fr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentification", "email-confirm-interval": "Les utilisateurs ne peuvent pas demander un e-mail de vérification avant", - "email-confirm-email2": "minutes se sont écoulées", + "email-confirm-interval2": "minutes se sont écoulées", "allow-login-with": "Autoriser l'identification avec", "allow-login-with.username-email": "Nom d'utilisateur ou e-mail", "allow-login-with.username": "Nom d'utilisateur uniquement", diff --git a/public/language/gl/admin/settings/email.json b/public/language/gl/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/gl/admin/settings/email.json +++ b/public/language/gl/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/gl/admin/settings/user.json b/public/language/gl/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/gl/admin/settings/user.json +++ b/public/language/gl/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/he/admin/settings/email.json b/public/language/he/admin/settings/email.json index c2f1b3c6ef..1b37b35a28 100644 --- a/public/language/he/admin/settings/email.json +++ b/public/language/he/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "מאת", "from-help": "השם 'מאת' יוצג בדוא\"ל.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/he/admin/settings/user.json b/public/language/he/admin/settings/user.json index 141edb7a99..6c3ce0caae 100644 --- a/public/language/he/admin/settings/user.json +++ b/public/language/he/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "אימות", "email-confirm-interval": "המשתמש לא יוכל לשלוח הודעת אישור מייל עד שיחלוף", - "email-confirm-email2": "דקות", + "email-confirm-interval2": "דקות", "allow-login-with": "אפשר התחברות עם", "allow-login-with.username-email": "שם משתמש או סיסמא", "allow-login-with.username": "שם משתמש בלבד", diff --git a/public/language/hr/admin/settings/email.json b/public/language/hr/admin/settings/email.json index d18d0cc705..3030ec0a35 100644 --- a/public/language/hr/admin/settings/email.json +++ b/public/language/hr/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Od imena", "from-help": "Ime prikazano u dolaznom emailu.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/hr/admin/settings/user.json b/public/language/hr/admin/settings/user.json index 9c402358cc..43c20bfdb1 100644 --- a/public/language/hr/admin/settings/user.json +++ b/public/language/hr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autentifikacija", "email-confirm-interval": "Korisnik ne može ponovno poslati potvrdni email do ", - "email-confirm-email2": "prošlo je minuta", + "email-confirm-interval2": "prošlo je minuta", "allow-login-with": "Dozvoli prijavu sa", "allow-login-with.username-email": "Korisničko ime ili Email", "allow-login-with.username": "Korisničko ime", diff --git a/public/language/hu/admin/settings/email.json b/public/language/hu/admin/settings/email.json index 22c226247d..f458051251 100644 --- a/public/language/hu/admin/settings/email.json +++ b/public/language/hu/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Feladó neve", "from-help": "Az emailben megjelenített feladói név.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP beállítások", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Válogathatsz a jól ismert szolgáltatások listájából vagy megadhatsz sajátot.", diff --git a/public/language/hu/admin/settings/user.json b/public/language/hu/admin/settings/user.json index ea1a2df882..3db2f70226 100644 --- a/public/language/hu/admin/settings/user.json +++ b/public/language/hu/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Hitelesítés", "email-confirm-interval": "A felhasználó nem küldetheti újra az emailt ameddig nem telt el", - "email-confirm-email2": "perc", + "email-confirm-interval2": "perc", "allow-login-with": "Bejelentkezés engedélyezése ezzel:", "allow-login-with.username-email": "Felhasználónév vagy email cím", "allow-login-with.username": "Csak felhasználónév", diff --git a/public/language/id/admin/settings/email.json b/public/language/id/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/id/admin/settings/email.json +++ b/public/language/id/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/id/admin/settings/user.json b/public/language/id/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/id/admin/settings/user.json +++ b/public/language/id/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/it/admin/settings/email.json b/public/language/it/admin/settings/email.json index 4d99b4399c..adbca929b5 100644 --- a/public/language/it/admin/settings/email.json +++ b/public/language/it/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Da Nome", "from-help": "Il nome da visualizzare nell'email.", + "confirmation-settings": "Conferma", + "confirmation.expiry": "Ore per mantenere valido il link di conferma dell'email", + "smtp-transport": "Trasporto SMTP", "smtp-transport.enabled": "Abilita trasporto SMTP", "smtp-transport-help": "Puoi selezionare da un elenco di servizi noti o inserirne uno personalizzato.", diff --git a/public/language/it/admin/settings/user.json b/public/language/it/admin/settings/user.json index e997d8791d..e3d5969aa6 100644 --- a/public/language/it/admin/settings/user.json +++ b/public/language/it/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticazione", "email-confirm-interval": "L'utente non può mandare una nuova email di conferma fino a", - "email-confirm-email2": "minuti trascorsi", + "email-confirm-interval2": "minuti trascorsi", "allow-login-with": "Consenti l'accesso con", "allow-login-with.username-email": "Username o Email", "allow-login-with.username": "Solo Username", diff --git a/public/language/ja/admin/settings/email.json b/public/language/ja/admin/settings/email.json index 400b5f1889..c08a7faccb 100644 --- a/public/language/ja/admin/settings/email.json +++ b/public/language/ja/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "名前から", "from-help": "メールからの名前が表示されます。", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/ja/admin/settings/user.json b/public/language/ja/admin/settings/user.json index f4f7db2de5..cac5496aba 100644 --- a/public/language/ja/admin/settings/user.json +++ b/public/language/ja/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "認証", "email-confirm-interval": "ユーザーが確認するまでEメールを再送信しない", - "email-confirm-email2": "分経過", + "email-confirm-interval2": "分経過", "allow-login-with": "ログインを許可", "allow-login-with.username-email": "ユーザー名または電子メール", "allow-login-with.username": "ユーザー名のみ", diff --git a/public/language/ko/admin/settings/email.json b/public/language/ko/admin/settings/email.json index 0b6d934886..9c90b4b582 100644 --- a/public/language/ko/admin/settings/email.json +++ b/public/language/ko/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "포럼 메일 발신자 이름", "from-help": "이메일에 표시할 발신자 이름", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "자주 사용되는 서비스 목록 중에 하나를 선택하거나 직접 입력할 수 있습니다.", diff --git a/public/language/ko/admin/settings/user.json b/public/language/ko/admin/settings/user.json index 638d2cf967..01d7ea0ec3 100644 --- a/public/language/ko/admin/settings/user.json +++ b/public/language/ko/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "인증", "email-confirm-interval": "사용자는", - "email-confirm-email2": "분이 지나기 전까지 인증 메일 재요청이 불가능합니다.", + "email-confirm-interval2": "분이 지나기 전까지 인증 메일 재요청이 불가능합니다.", "allow-login-with": "로그인 허용 수단", "allow-login-with.username-email": "사용자명 또는 이메일", "allow-login-with.username": "사용자명", diff --git a/public/language/lt/admin/settings/email.json b/public/language/lt/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/lt/admin/settings/email.json +++ b/public/language/lt/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/lt/admin/settings/user.json b/public/language/lt/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/lt/admin/settings/user.json +++ b/public/language/lt/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/lv/admin/settings/email.json b/public/language/lv/admin/settings/email.json index bb154ee970..81815fc6af 100644 --- a/public/language/lv/admin/settings/email.json +++ b/public/language/lv/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Sūtītāja vārds vai nosaukums", "from-help": "Vārds vai nosaukums, ko saņēmējs redzēs kā sūtītāju.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP transports", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Izvēlies no labi zināmu pakalpojumu saraksta vai ievadi pielāgotu pakalpojumu.", diff --git a/public/language/lv/admin/settings/user.json b/public/language/lv/admin/settings/user.json index 2a70ebf04b..78653597fd 100644 --- a/public/language/lv/admin/settings/user.json +++ b/public/language/lv/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autentifikācija", "email-confirm-interval": "Lietotājs nevar atkārtoti nosūtīt apstiprinājuma e-pastu pirms", - "email-confirm-email2": "minūtes nav pagājušas", + "email-confirm-interval2": "minūtes nav pagājušas", "allow-login-with": "Ielogoties", "allow-login-with.username-email": "Ar lietotājvārdu vai e-pasta adresi", "allow-login-with.username": "Tikai ar lietotājvārdu", diff --git a/public/language/ms/admin/settings/email.json b/public/language/ms/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/ms/admin/settings/email.json +++ b/public/language/ms/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/ms/admin/settings/user.json b/public/language/ms/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/ms/admin/settings/user.json +++ b/public/language/ms/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/nb/admin/settings/email.json b/public/language/nb/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/nb/admin/settings/email.json +++ b/public/language/nb/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/nb/admin/settings/user.json b/public/language/nb/admin/settings/user.json index 42b878793a..47b00c8486 100644 --- a/public/language/nb/admin/settings/user.json +++ b/public/language/nb/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autentisering ", "email-confirm-interval": "Brukeren kan ikke sende en bekreftelses-e-post på nytt før", - "email-confirm-email2": "minutter har gått", + "email-confirm-interval2": "minutter har gått", "allow-login-with": "Tillat innlogging med", "allow-login-with.username-email": "Brukernavn eller e-post", "allow-login-with.username": "Kun brukernavn", diff --git a/public/language/nl/admin/settings/email.json b/public/language/nl/admin/settings/email.json index 875a778a98..afbfe81aa2 100644 --- a/public/language/nl/admin/settings/email.json +++ b/public/language/nl/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Naam", "from-help": "De from naam om te tonen in de e-mail.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Je kunt een bekende dienst uit de lijst selecteren of vul een aangepaste dienst in.", diff --git a/public/language/nl/admin/settings/user.json b/public/language/nl/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/nl/admin/settings/user.json +++ b/public/language/nl/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/pl/admin/settings/email.json b/public/language/pl/admin/settings/email.json index b0f60c4768..d68a780326 100644 --- a/public/language/pl/admin/settings/email.json +++ b/public/language/pl/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Pole „Od”", "from-help": "Nazwa „Od” widoczna w e-mailach", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "Transport SMTP", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Możesz wybrać z listy dobrze znanych usług lub wskazać usługę niestandardową.", diff --git a/public/language/pl/admin/settings/user.json b/public/language/pl/admin/settings/user.json index 23dbe2c050..e019daa806 100644 --- a/public/language/pl/admin/settings/user.json +++ b/public/language/pl/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Uwierzytelnianie", "email-confirm-interval": "Użytkownik nie może ponownie wysłać e-maila z potwierdzeniem, dopóki nie minie", - "email-confirm-email2": "minut", + "email-confirm-interval2": "minut", "allow-login-with": "Zezwalaj na logowanie przy użyciu", "allow-login-with.username-email": "Nazwy użytkownika lub adresu email", "allow-login-with.username": "Tylko nazwy użytkownika", diff --git a/public/language/pt-BR/admin/settings/email.json b/public/language/pt-BR/admin/settings/email.json index 28e89bab67..1c56b7edcd 100644 --- a/public/language/pt-BR/admin/settings/email.json +++ b/public/language/pt-BR/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Por Nome (From)", "from-help": "O nome que será mostrado em \"De\" no e-mail.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "Trasporte por SMTP", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Você pode escolher entre uma lista de serviços conhecidos ou adicionar um personalizado.", diff --git a/public/language/pt-BR/admin/settings/user.json b/public/language/pt-BR/admin/settings/user.json index 55faa80564..a5b0a196a8 100644 --- a/public/language/pt-BR/admin/settings/user.json +++ b/public/language/pt-BR/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticação", "email-confirm-interval": "O usuário não pode reenviar um e-mail de confirmação até", - "email-confirm-email2": "minutos decorridos", + "email-confirm-interval2": "minutos decorridos", "allow-login-with": "Permitir login com", "allow-login-with.username-email": "Nome de Usuário ou E-mail", "allow-login-with.username": "Apenas Nome de Usuário", diff --git a/public/language/pt-PT/admin/settings/email.json b/public/language/pt-PT/admin/settings/email.json index 39197da34f..2c78449689 100644 --- a/public/language/pt-PT/admin/settings/email.json +++ b/public/language/pt-PT/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/pt-PT/admin/settings/user.json b/public/language/pt-PT/admin/settings/user.json index 68d8cb644e..29a086a557 100644 --- a/public/language/pt-PT/admin/settings/user.json +++ b/public/language/pt-PT/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticação", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Permitir início de sessão com", "allow-login-with.username-email": "Nome de Utilizador ou E-mail", "allow-login-with.username": "Nome de Utilizador Apenas", diff --git a/public/language/ro/admin/settings/email.json b/public/language/ro/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/ro/admin/settings/email.json +++ b/public/language/ro/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/ro/admin/settings/user.json b/public/language/ro/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/ro/admin/settings/user.json +++ b/public/language/ro/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/ru/admin/settings/email.json b/public/language/ru/admin/settings/email.json index 41e84d950c..8c519bc778 100644 --- a/public/language/ru/admin/settings/email.json +++ b/public/language/ru/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "От кого", "from-help": "Имя отправителя письма (или название форума).", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "Сервис SMTP", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Выберите один из популярных сервисов или укажите свой почтовый сервер.", diff --git a/public/language/ru/admin/settings/user.json b/public/language/ru/admin/settings/user.json index 3cdaa8955b..357396a153 100644 --- a/public/language/ru/admin/settings/user.json +++ b/public/language/ru/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Авторизация", "email-confirm-interval": "Пользователь не сможет снова запросить код подтверждения, пока не пройдёт", - "email-confirm-email2": "минут", + "email-confirm-interval2": "минут", "allow-login-with": "Разрешить вход с помощью", "allow-login-with.username-email": "Имени пользователя или адреса электронной почты", "allow-login-with.username": "Только имени пользователя", diff --git a/public/language/rw/admin/settings/email.json b/public/language/rw/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/rw/admin/settings/email.json +++ b/public/language/rw/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/rw/admin/settings/user.json b/public/language/rw/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/rw/admin/settings/user.json +++ b/public/language/rw/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/sc/admin/settings/email.json b/public/language/sc/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/sc/admin/settings/email.json +++ b/public/language/sc/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/sc/admin/settings/user.json b/public/language/sc/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/sc/admin/settings/user.json +++ b/public/language/sc/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/sk/admin/settings/email.json b/public/language/sk/admin/settings/email.json index 702de82895..f8d64a3462 100644 --- a/public/language/sk/admin/settings/email.json +++ b/public/language/sk/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Meno - od", "from-help": "Zobrazené meno v e-maily v - Od", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "Prenos SMTP", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Zo zoznamu môžete vybrať známe služby alebo zadať vlastné.", diff --git a/public/language/sk/admin/settings/user.json b/public/language/sk/admin/settings/user.json index 58a2f039b1..0c3cddcb0a 100644 --- a/public/language/sk/admin/settings/user.json +++ b/public/language/sk/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Overenie", "email-confirm-interval": "Používateľ nesmie požiadať o znovu odoslanie potvrdzujúceho e-mailu do", - "email-confirm-email2": "minút uplynulo", + "email-confirm-interval2": "minút uplynulo", "allow-login-with": "Povoliť prihlásenie pomocou", "allow-login-with.username-email": "Používateľské meno alebo e-mail", "allow-login-with.username": "Iba používateľské meno", diff --git a/public/language/sl/admin/settings/email.json b/public/language/sl/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/sl/admin/settings/email.json +++ b/public/language/sl/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/sl/admin/settings/user.json b/public/language/sl/admin/settings/user.json index 5f8505be91..31a7f090c0 100644 --- a/public/language/sl/admin/settings/user.json +++ b/public/language/sl/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Preverjanje pristnosti", "email-confirm-interval": "Uporabnik morda ne bo mogel znova poslati potrditvenega e-poštnega sporočila, dokler", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Dovoli prijavo z", "allow-login-with.username-email": "Uporabniško ime ali e-poštni naslov", "allow-login-with.username": "Samo uporabniško ime", diff --git a/public/language/sq-AL/admin/settings/email.json b/public/language/sq-AL/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/sq-AL/admin/settings/email.json +++ b/public/language/sq-AL/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/sq-AL/admin/settings/user.json b/public/language/sq-AL/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/sq-AL/admin/settings/user.json +++ b/public/language/sq-AL/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/sr/admin/settings/email.json b/public/language/sr/admin/settings/email.json index e7c80966fb..7543180f27 100644 --- a/public/language/sr/admin/settings/email.json +++ b/public/language/sr/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Od koga", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/sr/admin/settings/user.json b/public/language/sr/admin/settings/user.json index b4d65fef62..c8fc77bfd9 100644 --- a/public/language/sr/admin/settings/user.json +++ b/public/language/sr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Auntentifikacija", "email-confirm-interval": "Korisnik možda neće moći da ponovo pošalje email konfirmaciju sve dok", - "email-confirm-email2": "minuta je prošlo", + "email-confirm-interval2": "minuta je prošlo", "allow-login-with": "Dozvoli login sa", "allow-login-with.username-email": "Korisničko ime ili Email", "allow-login-with.username": "Samo korisničko ime", diff --git a/public/language/sv/admin/settings/email.json b/public/language/sv/admin/settings/email.json index bf487ccb99..a51b116c25 100644 --- a/public/language/sv/admin/settings/email.json +++ b/public/language/sv/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/sv/admin/settings/user.json b/public/language/sv/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/sv/admin/settings/user.json +++ b/public/language/sv/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/th/admin/settings/email.json b/public/language/th/admin/settings/email.json index 93ffe374f9..35e713adc0 100644 --- a/public/language/th/admin/settings/email.json +++ b/public/language/th/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/th/admin/settings/user.json b/public/language/th/admin/settings/user.json index ef21e7a864..2ed52e4742 100644 --- a/public/language/th/admin/settings/user.json +++ b/public/language/th/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/tr/admin/settings/email.json b/public/language/tr/admin/settings/email.json index 84d29b0242..bdebff56d6 100644 --- a/public/language/tr/admin/settings/email.json +++ b/public/language/tr/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "From Name", "from-help": "The from name to display in the email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP Transport", "smtp-transport.enabled": "SMTP Aktarımını Etkinleştir", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", diff --git a/public/language/tr/admin/settings/user.json b/public/language/tr/admin/settings/user.json index 0c27f44b91..9c40e644a7 100644 --- a/public/language/tr/admin/settings/user.json +++ b/public/language/tr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Kimlik Doğrulama", "email-confirm-interval": "Kullanıcı onay e-postasını tekrar gönderemez", - "email-confirm-email2": "dakika geçti", + "email-confirm-interval2": "dakika geçti", "allow-login-with": "Girişe izin ver:", "allow-login-with.username-email": "Kullanıcı Adı veya E-posta", "allow-login-with.username": "Sadece kullanıcı adı", diff --git a/public/language/uk/admin/settings/email.json b/public/language/uk/admin/settings/email.json index 046edf46d3..30dbc77964 100644 --- a/public/language/uk/admin/settings/email.json +++ b/public/language/uk/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Ім'я відправника", "from-help": "Ім'я відправника, що буде показано в електронних листах", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "Протокол SMTP", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Ви можете обрати поштовий сервіс зі списку або використати ваш власний сервіс.", diff --git a/public/language/uk/admin/settings/user.json b/public/language/uk/admin/settings/user.json index 126c831d45..29a4291d57 100644 --- a/public/language/uk/admin/settings/user.json +++ b/public/language/uk/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Аутентифікація", "email-confirm-interval": "Користувач не може повторно надіслати підтвердження електронної пошти поки не мине", - "email-confirm-email2": "хвилин", + "email-confirm-interval2": "хвилин", "allow-login-with": "Дозволити вхід використовуючи", "allow-login-with.username-email": "Ім'я користувача або електронну пошту", "allow-login-with.username": "Тільки ім'я користувача", diff --git a/public/language/vi/admin/settings/email.json b/public/language/vi/admin/settings/email.json index 30cebf9d91..a1854f39a0 100644 --- a/public/language/vi/admin/settings/email.json +++ b/public/language/vi/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "Tên Người Gửi", "from-help": "Tên người gửi hiển thị trong email.", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "Truyền Tải SMTP", "smtp-transport.enabled": "Bật truyền tải SMTP", "smtp-transport-help": "Bạn có thể chọn từ danh sách các dịch vụ nổi bật hoặc nhập một dịch vụ tùy chỉnh.", diff --git a/public/language/vi/admin/settings/user.json b/public/language/vi/admin/settings/user.json index beed174c86..6aa242566f 100644 --- a/public/language/vi/admin/settings/user.json +++ b/public/language/vi/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Xác thực", "email-confirm-interval": "Người dùng không thể gửi lại email xác nhận cho đến khi", - "email-confirm-email2": "phút đã trôi qua", + "email-confirm-interval2": "phút đã trôi qua", "allow-login-with": "Cho phép đăng nhập với", "allow-login-with.username-email": "Tên Đăng Nhập hoặc Email", "allow-login-with.username": "Chỉ Tên Đăng Nhập", diff --git a/public/language/zh-CN/admin/settings/email.json b/public/language/zh-CN/admin/settings/email.json index 011373afd6..4d6570a579 100644 --- a/public/language/zh-CN/admin/settings/email.json +++ b/public/language/zh-CN/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "发送者", "from-help": "用于邮件中显示的发送者", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP 通信", "smtp-transport.enabled": "启用 SMTP 通信", "smtp-transport-help": "您可以从列表中选取一个已知的服务或自定义。", diff --git a/public/language/zh-CN/admin/settings/user.json b/public/language/zh-CN/admin/settings/user.json index 28e6e94305..2eef5b6245 100644 --- a/public/language/zh-CN/admin/settings/user.json +++ b/public/language/zh-CN/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "验证", "email-confirm-interval": "用户无法重新发送电子邮箱激活直到", - "email-confirm-email2": "分钟已经过", + "email-confirm-interval2": "分钟已经过", "allow-login-with": "允许使用何种登录名", "allow-login-with.username-email": "用户名或者邮箱", "allow-login-with.username": "仅限用户名", diff --git a/public/language/zh-TW/admin/settings/email.json b/public/language/zh-TW/admin/settings/email.json index 71d8f17e6c..3289f089ee 100644 --- a/public/language/zh-TW/admin/settings/email.json +++ b/public/language/zh-TW/admin/settings/email.json @@ -5,6 +5,9 @@ "from": "發送人", "from-help": "用於郵件中顯示的發送人", + "confirmation-settings": "Confirmation", + "confirmation.expiry": "Hours to keep email confirmation link valid", + "smtp-transport": "SMTP 通信", "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "您可以從列表中選取一個已知的服務或自訂。", diff --git a/public/language/zh-TW/admin/settings/user.json b/public/language/zh-TW/admin/settings/user.json index 2189f063a7..3af23f0a2b 100644 --- a/public/language/zh-TW/admin/settings/user.json +++ b/public/language/zh-TW/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "驗證", "email-confirm-interval": "使用者無法重新發送電子信箱確認信直到", - "email-confirm-email2": "分鐘已經過", + "email-confirm-interval2": "分鐘已經過", "allow-login-with": "允許使用何種登入名", "allow-login-with.username-email": "使用者名或者電子信箱", "allow-login-with.username": "僅限使用者名", diff --git a/public/src/client/groups/memberlist.js b/public/src/client/groups/memberlist.js index 44b593c63c..7a3376eb51 100644 --- a/public/src/client/groups/memberlist.js +++ b/public/src/client/groups/memberlist.js @@ -2,7 +2,6 @@ define('forum/groups/memberlist', ['api', 'bootbox', 'alerts'], function (api, bootbox, alerts) { const MemberList = {}; - let searchInterval; let groupName; let templateName; @@ -89,25 +88,22 @@ define('forum/groups/memberlist', ['api', 'bootbox', 'alerts'], function (api, b } function handleMemberSearch() { - $('[component="groups/members/search"]').on('keyup', function () { - const query = $(this).val(); - if (searchInterval) { - clearInterval(searchInterval); - searchInterval = 0; - } - - searchInterval = setTimeout(function () { - socket.emit('groups.searchMembers', { groupName: groupName, query: query }, function (err, results) { - if (err) { - return alerts.error(err); - } - parseAndTranslate(results.users, function (html) { - $('[component="groups/members"] tbody').html(html); - $('[component="groups/members"]').attr('data-nextstart', 20); - }); + const searchEl = $('[component="groups/members/search"]'); + searchEl.on('keyup', utils.debounce(function () { + const query = searchEl.val(); + socket.emit('groups.searchMembers', { + groupName: groupName, + query: query, + }, function (err, results) { + if (err) { + return alerts.error(err); + } + parseAndTranslate(results.users, function (html) { + $('[component="groups/members"] tbody').html(html); + $('[component="groups/members"]').attr('data-nextstart', 20); }); - }, 250); - }); + }); + }, 250)); } function handleMemberInfiniteScroll() { diff --git a/public/src/modules/iconSelect.js b/public/src/modules/iconSelect.js index 7bbbfb7fa9..b901372a18 100644 --- a/public/src/modules/iconSelect.js +++ b/public/src/modules/iconSelect.js @@ -45,7 +45,7 @@ define('iconSelect', ['benchpress', 'bootbox'], function (Benchpress, bootbox) { label: 'Select', className: 'btn-primary', callback: function () { - const iconClass = $('.bootbox .selected').attr('class'); + const iconClass = $('.bootbox .selected').attr('class') || `fa fa-${$('.bootbox #fa-filter').val()}`; const categoryIconClass = $('
').addClass(iconClass).removeClass('fa').removeClass('selected') .attr('class'); const searchElVal = picker.find('input').val(); diff --git a/public/src/modules/messages.js b/public/src/modules/messages.js index 724d6886f1..1f473fed6a 100644 --- a/public/src/modules/messages.js +++ b/public/src/modules/messages.js @@ -38,12 +38,7 @@ define('messages', ['bootbox', 'translator', 'storage', 'alerts', 'hooks'], func msg.message = message || '[[error:email-not-confirmed]]'; msg.clickfn = function () { alerts.remove('email_confirm'); - socket.emit('user.emailConfirm', {}, function (err) { - if (err) { - return alerts.error(err); - } - alerts.success('[[notifications:email-confirm-sent]]'); - }); + ajaxify.go('/me/edit/email'); }; alerts.alert(msg); } else if (!app.user['email:confirmed'] && app.user.isEmailConfirmSent) { diff --git a/public/src/modules/search.js b/public/src/modules/search.js index 1a0d8e6b9e..20e3a02d33 100644 --- a/public/src/modules/search.js +++ b/public/src/modules/search.js @@ -87,13 +87,13 @@ define('search', ['translator', 'storage', 'hooks', 'alerts'], function (transla const filterCategoryEl = quickSearchResults.find('.filter-category'); function updateCategoryFilterName() { - if (ajaxify.data.template.category) { + if (ajaxify.data.template.category && ajaxify.data.cid) { translator.translate('[[search:search-in-category, ' + ajaxify.data.name + ']]', function (translated) { const name = $('
').html(translated).text(); filterCategoryEl.find('.name').text(name); }); } - filterCategoryEl.toggleClass('hidden', !ajaxify.data.template.category); + filterCategoryEl.toggleClass('hidden', !(ajaxify.data.template.category && ajaxify.data.cid)); } function doSearch() { @@ -101,7 +101,7 @@ define('search', ['translator', 'storage', 'hooks', 'alerts'], function (transla options.searchOptions.term = inputEl.val(); updateCategoryFilterName(); - if (ajaxify.data.template.category) { + if (ajaxify.data.template.category && ajaxify.data.cid) { if (filterCategoryEl.find('input[type="checkbox"]').is(':checked')) { options.searchOptions.categories = [ajaxify.data.cid]; options.searchOptions.searchChildren = true; diff --git a/src/cli/index.js b/src/cli/index.js index 86bfc127b4..b1ce151f4c 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -267,6 +267,10 @@ program ].join('\n')}`); }) .action((scripts, options) => { + if (program.opts().dev) { + process.env.NODE_ENV = 'development'; + global.env = 'development'; + } require('./upgrade').upgrade(scripts.length ? scripts : true, options); }); diff --git a/src/cli/package-install.js b/src/cli/package-install.js index b3b5544bb4..eea93e5d9e 100644 --- a/src/cli/package-install.js +++ b/src/cli/package-install.js @@ -120,7 +120,7 @@ pkgInstall.installAll = () => { command = `cnpm install ${prod ? ' --production' : ''}`; break; default: - command += prod ? ' --production' : ''; + command += prod ? ' --omit=dev' : ''; break; } } diff --git a/src/controllers/search.js b/src/controllers/search.js index 82aed2b308..238c167709 100644 --- a/src/controllers/search.js +++ b/src/controllers/search.js @@ -29,11 +29,15 @@ searchController.search = async function (req, res, next) { 'search:tags': privileges.global.can('search:tags', req.uid), }); req.query.in = req.query.in || meta.config.searchDefaultIn || 'titlesposts'; - const allowed = (req.query.in === 'users' && userPrivileges['search:users']) || + let allowed = (req.query.in === 'users' && userPrivileges['search:users']) || (req.query.in === 'tags' && userPrivileges['search:tags']) || (req.query.in === 'categories') || (['titles', 'titlesposts', 'posts'].includes(req.query.in) && userPrivileges['search:content']); - + ({ allowed } = await plugins.hooks.fire('filter:search.isAllowed', { + uid: req.uid, + query: req.query, + allowed, + })); if (!allowed) { return helpers.notAllowed(req, res); } diff --git a/src/middleware/headers.js b/src/middleware/headers.js index dacfb62dec..7f05f11928 100644 --- a/src/middleware/headers.js +++ b/src/middleware/headers.js @@ -86,15 +86,16 @@ module.exports = function (middleware) { } return next(); } - if (parseInt(req.uid, 10) > 0 || !meta.config.autoDetectLang) { - return next(); - } - const langs = await listCodes(); - const lang = req.acceptsLanguages(langs); - if (!lang) { - return next(); + + if (meta.config.autoDetectLang && req.uid === 0) { + const langs = await listCodes(); + const lang = req.acceptsLanguages(langs); + if (!lang) { + return next(); + } + req.query.lang = lang; } - req.query.lang = lang; + next(); }); diff --git a/src/routes/authentication.js b/src/routes/authentication.js index 3c6ea76f0b..9febe062a8 100644 --- a/src/routes/authentication.js +++ b/src/routes/authentication.js @@ -171,7 +171,7 @@ Auth.reloadRoutes = async function (params) { router.post('/register', middlewares, controllers.authentication.register); router.post('/register/complete', middlewares, controllers.authentication.registerComplete); - router.post('/register/abort', controllers.authentication.registerAbort); + router.post('/register/abort', Auth.middleware.applyCSRF, controllers.authentication.registerAbort); router.post('/login', Auth.middleware.applyCSRF, Auth.middleware.applyBlacklist, controllers.authentication.login); router.post('/logout', Auth.middleware.applyCSRF, controllers.authentication.logout); }; diff --git a/src/search.js b/src/search.js index d5555a21fb..cbd4e4f40c 100644 --- a/src/search.js +++ b/src/search.js @@ -15,7 +15,6 @@ const search = module.exports; search.search = async function (data) { const start = process.hrtime(); - data.searchIn = data.searchIn || 'titlesposts'; data.sortBy = data.sortBy || 'relevance'; let result; @@ -27,6 +26,10 @@ search.search = async function (data) { result = await categories.search(data); } else if (data.searchIn === 'tags') { result = await topics.searchAndLoadTags(data); + } else if (data.searchIn) { + result = await plugins.hooks.fire('filter:search.searchIn', { + data, + }); } else { throw new Error('[[error:unknown-search-filter]]'); } @@ -81,6 +84,7 @@ async function searchInContent(data) { const metadata = await plugins.hooks.fire('filter:search.inContent', { pids: allPids, + data: data, }); if (data.returnIds) { @@ -107,6 +111,7 @@ async function searchInContent(data) { returnData.posts = await posts.getPostSummaryByPids(metadata.pids, data.uid, {}); await plugins.hooks.fire('filter:search.contentGetResult', { result: returnData, data: data }); delete metadata.pids; + delete metadata.data; return Object.assign(returnData, metadata); } diff --git a/src/socket.io/user.js b/src/socket.io/user.js index 55a9a26d87..4f5c616114 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -16,6 +16,7 @@ const db = require('../database'); const userController = require('../controllers/user'); const privileges = require('../privileges'); const utils = require('../utils'); +const sockets = require('.'); const SocketUser = module.exports; @@ -25,6 +26,8 @@ require('./user/picture')(SocketUser); require('./user/registration')(SocketUser); SocketUser.emailConfirm = async function (socket) { + sockets.warnDeprecated(socket, 'HTTP 302 /me/edit/email'); + if (!socket.uid) { throw new Error('[[error:no-privileges]]'); } @@ -32,7 +35,6 @@ SocketUser.emailConfirm = async function (socket) { return await user.email.sendValidationEmail(socket.uid); }; - // Password Reset SocketUser.reset = {}; diff --git a/src/upgrades/1.11.0/navigation_visibility_groups.js b/src/upgrades/1.11.0/navigation_visibility_groups.js index 3567b3c9c1..4e3730b9cb 100644 --- a/src/upgrades/1.11.0/navigation_visibility_groups.js +++ b/src/upgrades/1.11.0/navigation_visibility_groups.js @@ -4,9 +4,7 @@ module.exports = { name: 'Navigation item visibility groups', timestamp: Date.UTC(2018, 10, 10), method: async function () { - const navigationAdmin = require('../../navigation/admin'); - - const data = await navigationAdmin.get(); + const data = await navigationAdminGet(); data.forEach((navItem) => { if (navItem && navItem.properties) { navItem.groups = []; @@ -23,6 +21,38 @@ module.exports = { } } }); - await navigationAdmin.save(data); + await navigationAdminSave(data); }, }; +// use navigation.get/save as it was in 1.11.0 so upgrade script doesn't crash on latest nbb +// see https://github.com/NodeBB/NodeBB/pull/11013 +async function navigationAdminGet() { + const db = require('../../database'); + const data = await db.getSortedSetRange('navigation:enabled', 0, -1); + return data.filter(Boolean).map((item) => { + item = JSON.parse(item); + item.groups = item.groups || []; + if (item.groups && !Array.isArray(item.groups)) { + item.groups = [item.groups]; + } + return item; + }); +} + +async function navigationAdminSave(data) { + const db = require('../../database'); + const translator = require('../../translator'); + const order = Object.keys(data); + const items = data.map((item, index) => { + Object.keys(item).forEach((key) => { + if (item.hasOwnProperty(key) && typeof item[key] === 'string' && (key === 'title' || key === 'text')) { + item[key] = translator.escape(item[key]); + } + }); + item.order = order[index]; + return JSON.stringify(item); + }); + + await db.delete('navigation:enabled'); + await db.sortedSetAdd('navigation:enabled', order, items); +} diff --git a/src/user/email.js b/src/user/email.js index 60ed9b56b3..1ea8bd551e 100644 --- a/src/user/email.js +++ b/src/user/email.js @@ -49,12 +49,17 @@ UserEmail.isValidationPending = async (uid, email) => { if (email) { const confirmObj = await db.getObject(`confirm:${code}`); - return confirmObj && email === confirmObj.email; + return !!(confirmObj && email === confirmObj.email); } return !!code; }; +UserEmail.getValidationExpiry = async (uid) => { + const pending = await UserEmail.isValidationPending(uid); + return pending ? db.pttl(`confirm:byUid:${uid}`) : null; +}; + UserEmail.expireValidation = async (uid) => { const code = await db.get(`confirm:byUid:${uid}`); await db.deleteAll([ @@ -63,6 +68,19 @@ UserEmail.expireValidation = async (uid) => { ]); }; +UserEmail.canSendValidation = async (uid, email) => { + const pending = UserEmail.isValidationPending(uid, email); + if (!pending) { + return true; + } + + const ttl = await UserEmail.getValidationExpiry(uid); + const max = meta.config.emailConfirmExpiry * 60 * 60 * 1000; + const interval = meta.config.emailConfirmInterval * 60 * 1000; + + return ttl + interval < max; +}; + UserEmail.sendValidationEmail = async function (uid, options) { /* * Options: @@ -88,7 +106,7 @@ UserEmail.sendValidationEmail = async function (uid, options) { const confirm_code = utils.generateUUID(); const confirm_link = `${nconf.get('url')}/confirm/${confirm_code}`; - const emailInterval = meta.config.emailConfirmInterval; + const { emailConfirmInterval, emailConfirmExpiry } = meta.config; // If no email passed in (default), retrieve email from uid if (!options.email || !options.email.length) { @@ -97,12 +115,9 @@ UserEmail.sendValidationEmail = async function (uid, options) { if (!options.email) { return; } - let sent = false; - if (!options.force) { - sent = await UserEmail.isValidationPending(uid, options.email); - } - if (sent) { - throw new Error(`[[error:confirm-email-already-sent, ${emailInterval}]]`); + + if (!options.force && !await UserEmail.canSendValidation(uid, options.email)) { + throw new Error(`[[error:confirm-email-already-sent, ${emailConfirmInterval}]]`); } const username = await user.getUserField(uid, 'username'); @@ -119,13 +134,13 @@ UserEmail.sendValidationEmail = async function (uid, options) { await UserEmail.expireValidation(uid); await db.set(`confirm:byUid:${uid}`, confirm_code); - await db.pexpireAt(`confirm:byUid:${uid}`, Date.now() + (emailInterval * 60 * 1000)); + await db.pexpire(`confirm:byUid:${uid}`, emailConfirmExpiry * 24 * 60 * 60 * 1000); await db.setObject(`confirm:${confirm_code}`, { email: options.email.toLowerCase(), uid: uid, }); - await db.expireAt(`confirm:${confirm_code}`, Math.floor((Date.now() / 1000) + (60 * 60 * 24))); + await db.pexpire(`confirm:${confirm_code}`, emailConfirmExpiry * 24 * 60 * 60 * 1000); winston.verbose(`[user/email] Validation email for uid ${uid} sent to ${options.email}`); events.log({ diff --git a/src/user/interstitials.js b/src/user/interstitials.js index fcec4b7f96..2a662785f9 100644 --- a/src/user/interstitials.js +++ b/src/user/interstitials.js @@ -42,10 +42,10 @@ Interstitials.email = async (data) => { callback: async (userData, formData) => { // Validate and send email confirmation if (userData.uid) { - const [isPasswordCorrect, canEdit, current, { allowed, error }] = await Promise.all([ + const [isPasswordCorrect, canEdit, { email: current, 'email:confirmed': confirmed }, { allowed, error }] = await Promise.all([ user.isPasswordCorrect(userData.uid, formData.password, data.req.ip), privileges.users.canEdit(data.req.uid, userData.uid), - user.getUserField(userData.uid, 'email'), + user.getUserFields(userData.uid, ['email', 'email:confirmed']), plugins.hooks.fire('filter:user.saveEmail', { uid: userData.uid, email: formData.email, @@ -64,8 +64,13 @@ Interstitials.email = async (data) => { throw new Error(error); } + // Handle errors when setting to same email (unconfirmed accts only) if (formData.email === current) { - throw new Error('[[error:email-nochange]]'); + if (confirmed) { + throw new Error('[[error:email-nochange]]'); + } else if (await user.email.canSendValidation(userData.uid, current)) { + throw new Error(`[[error:confirm-email-already-sent, ${meta.config.emailConfirmInterval}]]`); + } } // Admins editing will auto-confirm, unless editing their own email diff --git a/src/views/admin/settings/email.tpl b/src/views/admin/settings/email.tpl index d4ef6a52a7..4d8dcf27b1 100644 --- a/src/views/admin/settings/email.tpl +++ b/src/views/admin/settings/email.tpl @@ -28,29 +28,6 @@

[[admin/settings/email:require-email-address-warning]]

-
- -
- -
- -
-

[[admin/settings/email:include-unverified-warning]]

- -
- -
-

[[admin/settings/email:prompt-help]]

-
+
+
[[admin/settings/email:confirmation-settings]]
+
+
+ + + +
+ +
+ + +
+ +
+ +
+ +
+ +
+

[[admin/settings/email:include-unverified-warning]]

+ +
+ +
+

[[admin/settings/email:prompt-help]]

+
+
+
[[admin/settings/email:subscriptions]]
diff --git a/src/views/admin/settings/user.tpl b/src/views/admin/settings/user.tpl index d49788c68b..8a04d13524 100644 --- a/src/views/admin/settings/user.tpl +++ b/src/views/admin/settings/user.tpl @@ -4,13 +4,6 @@
[[admin/settings/user:authentication]]
-
- - - -
-