mirror of
https://github.com/makeplane/plane.git
synced 2025-12-21 05:10:24 -06:00
[WEB-5518]: update magic code token to send code as 6 digit numbers (#8188)
* refactor: simplify token generation in MagicCodeProvider by using a numeric approach * fix: update placeholder text for unique code input across multiple languages * refactor: replace token generation with a numeric approach for user email updates * fix: update placeholder text for unique code input in multiple languages to a numeric format * refactor: replace random token generation with secrets for enhanced security in user email updates and magic code provider
This commit is contained in:
@@ -2,8 +2,6 @@
|
||||
import uuid
|
||||
import json
|
||||
import logging
|
||||
import random
|
||||
import string
|
||||
import secrets
|
||||
|
||||
# Django imports
|
||||
@@ -151,13 +149,7 @@ class UserEndpoint(BaseViewSet):
|
||||
# Include user ID to bind the code to the specific user
|
||||
cache_key = f"magic_email_update_{user.id}_{new_email}"
|
||||
## Generate a random token
|
||||
token = (
|
||||
"".join(secrets.choice(string.ascii_lowercase) for _ in range(4))
|
||||
+ "-"
|
||||
+ "".join(secrets.choice(string.ascii_lowercase) for _ in range(4))
|
||||
+ "-"
|
||||
+ "".join(secrets.choice(string.ascii_lowercase) for _ in range(4))
|
||||
)
|
||||
token = str(secrets.randbelow(900000) + 100000)
|
||||
# Store in cache with 10 minute expiration
|
||||
cache_data = json.dumps({"token": token})
|
||||
cache.set(cache_key, cache_data, timeout=600)
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
# Python imports
|
||||
import json
|
||||
import os
|
||||
import random
|
||||
import string
|
||||
import secrets
|
||||
|
||||
|
||||
# Module imports
|
||||
@@ -50,13 +49,7 @@ class MagicCodeProvider(CredentialAdapter):
|
||||
|
||||
def initiate(self):
|
||||
## Generate a random token
|
||||
token = (
|
||||
"".join(random.choices(string.ascii_lowercase, k=4))
|
||||
+ "-"
|
||||
+ "".join(random.choices(string.ascii_lowercase, k=4))
|
||||
+ "-"
|
||||
+ "".join(random.choices(string.ascii_lowercase, k=4))
|
||||
)
|
||||
token = str(secrets.randbelow(900000) + 100000)
|
||||
|
||||
ri = redis_instance()
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ export function AuthUniqueCodeForm(props: TAuthUniqueCodeForm) {
|
||||
name="code"
|
||||
value={uniqueCodeFormData.code}
|
||||
onChange={(e) => handleFormChange("code", e.target.value)}
|
||||
placeholder="gets-sets-flys"
|
||||
placeholder="123456"
|
||||
className="disable-autofill-style h-10 w-full border border-custom-border-100 !bg-custom-background-100 pr-12 placeholder:text-custom-text-400"
|
||||
autoFocus
|
||||
/>
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Jedinečný kód",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Vložte kód zaslaný na váš e-mail",
|
||||
requesting_new_code: "Žádám o nový kód",
|
||||
sending_code: "Odesílám kód",
|
||||
@@ -1544,7 +1544,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Jedinečný kód",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Ověřovací kód byl odeslán na váš nový e-mail.",
|
||||
errors: {
|
||||
required: "Jedinečný kód je povinný",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Einmaliger Code",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Fügen Sie den an Ihre E-Mail gesendeten Code ein",
|
||||
requesting_new_code: "Neuen Code anfordern",
|
||||
sending_code: "Code wird gesendet",
|
||||
@@ -1562,7 +1562,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Einmaliger Code",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Verifizierungscode wurde an deine neue E-Mail gesendet.",
|
||||
errors: {
|
||||
required: "Einmaliger Code ist erforderlich",
|
||||
|
||||
@@ -75,7 +75,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Unique code",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Paste the code sent to your email",
|
||||
requesting_new_code: "Requesting new code",
|
||||
sending_code: "Sending code",
|
||||
|
||||
@@ -1378,7 +1378,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Unique code",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Verification code sent to your new email.",
|
||||
errors: {
|
||||
required: "Unique code is required",
|
||||
|
||||
@@ -1566,7 +1566,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Código único",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Código de verificación enviado a tu nuevo correo electrónico.",
|
||||
errors: {
|
||||
required: "El código único es obligatorio",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Code unique",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Collez le code envoyé à votre e-mail",
|
||||
requesting_new_code: "Demande d’un nouveau code",
|
||||
sending_code: "Envoi du code",
|
||||
@@ -1564,7 +1564,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Code unique",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Code de vérification envoyé à votre nouvel e-mail.",
|
||||
errors: {
|
||||
required: "Le code unique est requis",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Kode unik",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Tempelkan kode yang dikirim ke email anda",
|
||||
requesting_new_code: "Meminta kode baru",
|
||||
sending_code: "Mengirim kode",
|
||||
@@ -1552,7 +1552,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Kode unik",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Kode verifikasi dikirim ke email baru Anda.",
|
||||
errors: {
|
||||
required: "Kode unik wajib diisi",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Codice unico",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Incolla il codice inviato alla tua email",
|
||||
requesting_new_code: "Richiesta di nuovo codice",
|
||||
sending_code: "Invio codice",
|
||||
@@ -1556,7 +1556,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Codice univoco",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Codice di verifica inviato alla tua nuova email.",
|
||||
errors: {
|
||||
required: "Il codice univoco è obbligatorio",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "ユニークコード",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "メールで送信されたコードを貼り付けてください",
|
||||
requesting_new_code: "新しいコードをリクエスト中",
|
||||
sending_code: "コードを送信中",
|
||||
@@ -1543,7 +1543,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "認証コード",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "認証コードを新しいメールに送信しました。",
|
||||
errors: {
|
||||
required: "認証コードは必須です",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "고유 코드",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "이메일로 전송된 코드를 붙여넣기",
|
||||
requesting_new_code: "새 코드 요청 중",
|
||||
sending_code: "코드 전송 중",
|
||||
@@ -1536,7 +1536,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "고유 코드",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "인증 코드가 새 이메일로 전송되었습니다.",
|
||||
errors: {
|
||||
required: "고유 코드는 필수입니다",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Unikalny kod",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Wklej kod wysłany na Twój e-mail",
|
||||
requesting_new_code: "Żądanie nowego kodu",
|
||||
sending_code: "Wysyłanie kodu",
|
||||
@@ -1547,7 +1547,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Unikalny kod",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Kod weryfikacyjny wysłano na nowy e-mail.",
|
||||
errors: {
|
||||
required: "Unikalny kod jest wymagany",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Código único",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Cole o código enviado para seu email",
|
||||
requesting_new_code: "Solicitando novo código",
|
||||
sending_code: "Enviando código",
|
||||
@@ -1564,7 +1564,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Código único",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Código de verificação enviado para o novo e-mail.",
|
||||
errors: {
|
||||
required: "O código único é obrigatório",
|
||||
|
||||
@@ -1556,7 +1556,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Cod unic",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Codul de verificare a fost trimis la noul e-mail.",
|
||||
errors: {
|
||||
required: "Codul unic este obligatoriu",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Уникальный код",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Вставьте код, отправленный на ваш email",
|
||||
requesting_new_code: "Запрос нового кода",
|
||||
sending_code: "Отправка кода",
|
||||
@@ -1549,7 +1549,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Уникальный код",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Код подтверждения отправлен на ваш новый email.",
|
||||
errors: {
|
||||
required: "Уникальный код обязателен",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Jedinečný kód",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Vložte kód zaslaný na váš e-mail",
|
||||
requesting_new_code: "Žiadam o nový kód",
|
||||
sending_code: "Odosielam kód",
|
||||
@@ -1547,7 +1547,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Jedinečný kód",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Overovací kód bol odoslaný na váš nový e-mail.",
|
||||
errors: {
|
||||
required: "Jedinečný kód je povinný",
|
||||
|
||||
@@ -1551,7 +1551,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Benzersiz kod",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Doğrulama kodu yeni e-postanıza gönderildi.",
|
||||
errors: {
|
||||
required: "Benzersiz kod zorunludur",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Унікальний код",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Вставте код, надісланий на вашу електронну пошту",
|
||||
requesting_new_code: "Запитую новий код",
|
||||
sending_code: "Надсилаю код",
|
||||
@@ -1551,7 +1551,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Унікальний код",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Код підтвердження надіслано на ваш новий email.",
|
||||
errors: {
|
||||
required: "Унікальний код є обов’язковим",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "Mã duy nhất",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "Dán mã xác minh đã gửi đến email của bạn",
|
||||
requesting_new_code: "Đang yêu cầu mã mới",
|
||||
sending_code: "Đang gửi mã",
|
||||
@@ -1553,7 +1553,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "Mã duy nhất",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "Mã xác minh đã được gửi tới email mới của bạn.",
|
||||
errors: {
|
||||
required: "Mã duy nhất là bắt buộc",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "唯一码",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "粘贴发送到您邮箱的验证码",
|
||||
requesting_new_code: "正在请求新验证码",
|
||||
sending_code: "正在发送验证码",
|
||||
@@ -1527,7 +1527,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "验证码",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "验证码已发送至你的新邮箱。",
|
||||
errors: {
|
||||
required: "验证码为必填项",
|
||||
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
},
|
||||
unique_code: {
|
||||
label: "唯一代碼",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
paste_code: "貼上傳送到您電子郵件的代碼",
|
||||
requesting_new_code: "正在請求新代碼",
|
||||
sending_code: "正在發送代碼",
|
||||
@@ -1528,7 +1528,7 @@ export default {
|
||||
},
|
||||
code: {
|
||||
label: "驗證碼",
|
||||
placeholder: "gets-sets-flys",
|
||||
placeholder: "123456",
|
||||
helper_text: "驗證碼已傳送到你的新電子郵件。",
|
||||
errors: {
|
||||
required: "驗證碼為必填",
|
||||
|
||||
Reference in New Issue
Block a user