mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
request current password when changing profile data for security reasons
This commit is contained in:
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "Change password",
|
"change_password" : "Change password",
|
||||||
"confirm_password" : "Confirm password",
|
"confirm_password" : "Confirm password",
|
||||||
"minimum_6_chars" : "Minimum 6 characters",
|
"minimum_8_chars" : "Minimum 8 characters",
|
||||||
"passwords_do_not_match" : "Passwords do not match",
|
"passwords_do_not_match" : "Passwords do not match",
|
||||||
"api_key" : "API key",
|
"api_key" : "API key",
|
||||||
"api_key_not_generated" : "Not generated yet",
|
"api_key_not_generated" : "Not generated yet",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "Adreça electrònica",
|
"email" : "Adreça electrònica",
|
||||||
"change_password" : "Canvia la contrasenya ",
|
"change_password" : "Canvia la contrasenya ",
|
||||||
"confirm_password" : "Confirma la contrasenya",
|
"confirm_password" : "Confirma la contrasenya",
|
||||||
"minimum_6_chars" : "Mínim de 6 caracters",
|
"minimum_8_chars" : "Mínim de 8 caracters",
|
||||||
"passwords_do_not_match" : "Les contrasenyes no coincideixen",
|
"passwords_do_not_match" : "Les contrasenyes no coincideixen",
|
||||||
"api_key" : "Clau API ",
|
"api_key" : "Clau API ",
|
||||||
"api_key_not_generated" : "Encara no s'ha generat",
|
"api_key_not_generated" : "Encara no s'ha generat",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email " : " E-mail",
|
"email " : " E-mail",
|
||||||
"change_password " : " Změnit heslo",
|
"change_password " : " Změnit heslo",
|
||||||
"confirm_password " : " Potvrdit heslo",
|
"confirm_password " : " Potvrdit heslo",
|
||||||
"minimum_6_chars " : " Minimum je 6 znaků",
|
"minimum_8_chars " : " Minimum je 8 znaků",
|
||||||
"passwords_do_not_match " : " Hesla se neshodují",
|
"passwords_do_not_match " : " Hesla se neshodují",
|
||||||
"api_key " : " API klíč",
|
"api_key " : " API klíč",
|
||||||
"api_key_not_generated " : " Není vygenerován",
|
"api_key_not_generated " : " Není vygenerován",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-bost",
|
"email" : "E-bost",
|
||||||
"change_password" : "Newid cyfrinair",
|
"change_password" : "Newid cyfrinair",
|
||||||
"confirm_password" : "Cadarnhau cyfrinair",
|
"confirm_password" : "Cadarnhau cyfrinair",
|
||||||
"minimum_6_chars" : "Isafswm 6 nod",
|
"minimum_8_chars" : "Isafswm 8 nod",
|
||||||
"passwords_do_not_match" : "Mae'r cyfrineiriau yn wahanol",
|
"passwords_do_not_match" : "Mae'r cyfrineiriau yn wahanol",
|
||||||
"api_key" : "Allwedd API",
|
"api_key" : "Allwedd API",
|
||||||
"api_key_not_generated" : "Heb ei gynhyrchu eto",
|
"api_key_not_generated" : "Heb ei gynhyrchu eto",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "Skift adgangskode",
|
"change_password" : "Skift adgangskode",
|
||||||
"confirm_password" : "Bekræft adgangskode",
|
"confirm_password" : "Bekræft adgangskode",
|
||||||
"minimum_6_chars" : "Minimum 6 karakter",
|
"minimum_8_chars" : "Minimum 8 karakter",
|
||||||
"passwords_do_not_match" : "Adgangskoderne er ikke ens",
|
"passwords_do_not_match" : "Adgangskoderne er ikke ens",
|
||||||
"api_key" : "API nøgle",
|
"api_key" : "API nøgle",
|
||||||
"api_key_not_generated" : "Ikke genereret endnu",
|
"api_key_not_generated" : "Ikke genereret endnu",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "Passwort ändern",
|
"change_password" : "Passwort ändern",
|
||||||
"confirm_password" : "Passwort bestätigen",
|
"confirm_password" : "Passwort bestätigen",
|
||||||
"minimum_6_chars" : "Mindestens 6 Zeichen",
|
"minimum_8_chars" : "Mindestens 8 Zeichen",
|
||||||
"passwords_do_not_match" : "Passwörter stimmen nicht überein",
|
"passwords_do_not_match" : "Passwörter stimmen nicht überein",
|
||||||
"api_key" : "API Schlüssel",
|
"api_key" : "API Schlüssel",
|
||||||
"api_key_not_generated" : "Noch nicht generiert",
|
"api_key_not_generated" : "Noch nicht generiert",
|
||||||
|
|||||||
@@ -111,9 +111,10 @@
|
|||||||
"profile" : {
|
"profile" : {
|
||||||
"user_name" : "User name",
|
"user_name" : "User name",
|
||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
|
"current_password" : "Current Password",
|
||||||
"change_password" : "Change password",
|
"change_password" : "Change password",
|
||||||
"confirm_password" : "Confirm password",
|
"confirm_password" : "Confirm password",
|
||||||
"minimum_6_chars" : "Minimum 6 characters",
|
"minimum_8_chars" : "Minimum 8 characters",
|
||||||
"passwords_do_not_match" : "Passwords do not match",
|
"passwords_do_not_match" : "Passwords do not match",
|
||||||
"api_key" : "API key",
|
"api_key" : "API key",
|
||||||
"api_key_not_generated" : "Not generated yet",
|
"api_key_not_generated" : "Not generated yet",
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
"email" : "Correo electrónico",
|
"email" : "Correo electrónico",
|
||||||
"change_password" : "Cambiar contraseña",
|
"change_password" : "Cambiar contraseña",
|
||||||
"confirm_password" : "Confirmar contraseña",
|
"confirm_password" : "Confirmar contraseña",
|
||||||
"minimum_6_chars" : "Mínimo 6 caracteres",
|
"minimum_8_chars" : "Mínimo 8 caracteres",
|
||||||
"passwords_do_not_match" : "Las contraseñas no coinciden",
|
"passwords_do_not_match" : "Las contraseñas no coinciden",
|
||||||
"api_key" : "Clave API",
|
"api_key" : "Clave API",
|
||||||
"api_key_not_generated" : "No generado todavía",
|
"api_key_not_generated" : "No generado todavía",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "رایانامه",
|
"email" : "رایانامه",
|
||||||
"change_password" : "تغییر گذرواژه",
|
"change_password" : "تغییر گذرواژه",
|
||||||
"confirm_password" : "تأیید گذرواژه",
|
"confirm_password" : "تأیید گذرواژه",
|
||||||
"minimum_6_chars" : "حداقل ۶ نویسه",
|
"minimum_8_chars" : "حداقل ۸ نویسه",
|
||||||
"passwords_do_not_match" : "گذرواژهها انطباق ندارند",
|
"passwords_do_not_match" : "گذرواژهها انطباق ندارند",
|
||||||
"api_key" : "کلید API",
|
"api_key" : "کلید API",
|
||||||
"api_key_not_generated" : "هنوز ایجاد نشدهاست",
|
"api_key_not_generated" : "هنوز ایجاد نشدهاست",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "Sähköposti",
|
"email" : "Sähköposti",
|
||||||
"change_password" : "Vaihda salasana",
|
"change_password" : "Vaihda salasana",
|
||||||
"confirm_password" : "Vahvista uusi salasana",
|
"confirm_password" : "Vahvista uusi salasana",
|
||||||
"minimum_6_chars" : "Vähintään 6 merkkiä",
|
"minimum_8_chars" : "Vähintään 8 merkkiä",
|
||||||
"passwords_do_not_match" : "Salasanat eivät täsmää",
|
"passwords_do_not_match" : "Salasanat eivät täsmää",
|
||||||
"api_key" : "API-avain",
|
"api_key" : "API-avain",
|
||||||
"api_key_not_generated" : "API-avainta ei ole vielä luotu",
|
"api_key_not_generated" : "API-avainta ei ole vielä luotu",
|
||||||
|
|||||||
@@ -109,9 +109,10 @@
|
|||||||
"profile" : {
|
"profile" : {
|
||||||
"user_name" : "Nom",
|
"user_name" : "Nom",
|
||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
|
"current_password" : "Mot de passe actuel",
|
||||||
"change_password" : "Changer de mot de passe",
|
"change_password" : "Changer de mot de passe",
|
||||||
"confirm_password" : "Confirmer le mot de passe",
|
"confirm_password" : "Confirmer le mot de passe",
|
||||||
"minimum_6_chars" : "Minimum 6 caractères",
|
"minimum_8_chars" : "Minimum 8 caractères",
|
||||||
"passwords_do_not_match" : "Les mots de passe ne correspondent pas",
|
"passwords_do_not_match" : "Les mots de passe ne correspondent pas",
|
||||||
"api_key" : "Clé API",
|
"api_key" : "Clé API",
|
||||||
"api_key_not_generated" : "Pas encore générée",
|
"api_key_not_generated" : "Pas encore générée",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "Correo",
|
"email" : "Correo",
|
||||||
"change_password" : "Cambiar contrasinal",
|
"change_password" : "Cambiar contrasinal",
|
||||||
"confirm_password" : "Confirmar contrasinal",
|
"confirm_password" : "Confirmar contrasinal",
|
||||||
"minimum_6_chars" : "Mínimo 6 caracteres",
|
"minimum_8_chars" : "Mínimo 8 caracteres",
|
||||||
"passwords_do_not_match" : "Os contrasinais non coinciden no coinciden",
|
"passwords_do_not_match" : "Os contrasinais non coinciden no coinciden",
|
||||||
"api_key" : "Chave API",
|
"api_key" : "Chave API",
|
||||||
"api_key_not_generated" : "Non xerado todavía",
|
"api_key_not_generated" : "Non xerado todavía",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "ایمئل",
|
"email" : "ایمئل",
|
||||||
"change_password" : "رمزه عوضأگودن",
|
"change_password" : "رمزه عوضأگودن",
|
||||||
"confirm_password" : "رمزه تأیید گودن",
|
"confirm_password" : "رمزه تأیید گودن",
|
||||||
"minimum_6_chars" : "ناقلن 6 کارکتر",
|
"minimum_8_chars" : "ناقلن 8 کارکتر",
|
||||||
"passwords_do_not_match" : "رمزان کسبهکسه نخانید",
|
"passwords_do_not_match" : "رمزان کسبهکسه نخانید",
|
||||||
"api_key" : "کلید API",
|
"api_key" : "کلید API",
|
||||||
"api_key_not_generated" : "هلئه چاگوده نبؤ",
|
"api_key_not_generated" : "هلئه چاگوده نبؤ",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "Jelszó megváltoztatás",
|
"change_password" : "Jelszó megváltoztatás",
|
||||||
"confirm_password" : "Jelszó megerősítése",
|
"confirm_password" : "Jelszó megerősítése",
|
||||||
"minimum_6_chars" : "Legalább 8 karakter",
|
"minimum_8_chars" : "Legalább 8 karakter",
|
||||||
"passwords_do_not_match" : "A jelszavak nem egyeznek",
|
"passwords_do_not_match" : "A jelszavak nem egyeznek",
|
||||||
"api_key" : "API kulcs",
|
"api_key" : "API kulcs",
|
||||||
"api_key_not_generated" : "Még nincsen generálva",
|
"api_key_not_generated" : "Még nincsen generálva",
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
"email" : "Surel",
|
"email" : "Surel",
|
||||||
"change_password" : "Ganti kata sandi",
|
"change_password" : "Ganti kata sandi",
|
||||||
"confirm_password" : "Konfirmasi kata sandi",
|
"confirm_password" : "Konfirmasi kata sandi",
|
||||||
"minimum_6_chars" : "Minimal 6 karakter",
|
"minimum_8_chars" : "Minimal 8 karakter",
|
||||||
"passwords_do_not_match" : "Kata sandi tidak sesuai",
|
"passwords_do_not_match" : "Kata sandi tidak sesuai",
|
||||||
"api_key" : "kunci API",
|
"api_key" : "kunci API",
|
||||||
"api_key_not_generated" : "Belum menghasilkan",
|
"api_key_not_generated" : "Belum menghasilkan",
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "Cambia password",
|
"change_password" : "Cambia password",
|
||||||
"confirm_password" : "Conferma password",
|
"confirm_password" : "Conferma password",
|
||||||
"minimum_6_chars" : "Minimo 6 caratteri",
|
"minimum_8_chars" : "Minimo 8 caratteri",
|
||||||
"passwords_do_not_match" : "Le password non corrispondono",
|
"passwords_do_not_match" : "Le password non corrispondono",
|
||||||
"api_key" : "chiave API",
|
"api_key" : "chiave API",
|
||||||
"api_key_not_generated" : "Non ancora generata",
|
"api_key_not_generated" : "Non ancora generata",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "パスワードの変更",
|
"change_password" : "パスワードの変更",
|
||||||
"confirm_password" : "変更パスワードの確認",
|
"confirm_password" : "変更パスワードの確認",
|
||||||
"minimum_6_chars" : "6文字以上",
|
"minimum_8_chars" : "8文字以上",
|
||||||
"passwords_do_not_match" : "パスワードが一致しません",
|
"passwords_do_not_match" : "パスワードが一致しません",
|
||||||
"api_key" : "APIキー",
|
"api_key" : "APIキー",
|
||||||
"api_key_not_generated" : "APIキーが生成されていません",
|
"api_key_not_generated" : "APIキーが生成されていません",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "이메일",
|
"email" : "이메일",
|
||||||
"change_password" : "비밀번호 변경",
|
"change_password" : "비밀번호 변경",
|
||||||
"confirm_password" : "비밀번호 확인",
|
"confirm_password" : "비밀번호 확인",
|
||||||
"minimum_6_chars" : "최소 6개의 문자가 필요합니다.",
|
"minimum_8_chars" : "최소 8개의 문자가 필요합니다.",
|
||||||
"passwords_do_not_match" : "비밀번호가 일치하지 않습니다.",
|
"passwords_do_not_match" : "비밀번호가 일치하지 않습니다.",
|
||||||
"api_key" : "API key",
|
"api_key" : "API key",
|
||||||
"api_key_not_generated" : "아직 API Key가 생성되지 않았습니다.",
|
"api_key_not_generated" : "아직 API Key가 생성되지 않았습니다.",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-mel",
|
"email" : "E-mel",
|
||||||
"change_password" : "Tukar kata laluan",
|
"change_password" : "Tukar kata laluan",
|
||||||
"confirm_password" : "Sahkan kata laluan",
|
"confirm_password" : "Sahkan kata laluan",
|
||||||
"minimum_6_chars" : "Minimum 6 huruf",
|
"minimum_8_chars" : "Minimum 8 huruf",
|
||||||
"passwords_do_not_match" : "Kata laluan tidak sama",
|
"passwords_do_not_match" : "Kata laluan tidak sama",
|
||||||
"api_key" : "API key",
|
"api_key" : "API key",
|
||||||
"api_key_not_generated" : "Belum dijana",
|
"api_key_not_generated" : "Belum dijana",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-post",
|
"email" : "E-post",
|
||||||
"change_password" : "Endre passord",
|
"change_password" : "Endre passord",
|
||||||
"confirm_password" : "Bekreft passord",
|
"confirm_password" : "Bekreft passord",
|
||||||
"minimum_6_chars" : "Minimum 6 tegn",
|
"minimum_8_chars" : "Minimum 8 tegn",
|
||||||
"passwords_do_not_match" : "Passordene er ikke like",
|
"passwords_do_not_match" : "Passordene er ikke like",
|
||||||
"api_key" : "API-nøkkel",
|
"api_key" : "API-nøkkel",
|
||||||
"api_key_not_generated" : "Har ikke blitt generert",
|
"api_key_not_generated" : "Har ikke blitt generert",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "Verander wachtwoord",
|
"change_password" : "Verander wachtwoord",
|
||||||
"confirm_password" : "Bevestig wachtwoord",
|
"confirm_password" : "Bevestig wachtwoord",
|
||||||
"minimum_6_chars" : "Minimaal 6 tekens",
|
"minimum_8_chars" : "Minimaal 8 tekens",
|
||||||
"passwords_do_not_match" : "Wachtwoorden komen niet overeen",
|
"passwords_do_not_match" : "Wachtwoorden komen niet overeen",
|
||||||
"api_key" : "API sleutel",
|
"api_key" : "API sleutel",
|
||||||
"api_key_not_generated" : "Nog niet gegenereerd",
|
"api_key_not_generated" : "Nog niet gegenereerd",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-post",
|
"email" : "E-post",
|
||||||
"change_password" : "Endre passord",
|
"change_password" : "Endre passord",
|
||||||
"confirm_password" : "Stadfest passord",
|
"confirm_password" : "Stadfest passord",
|
||||||
"minimum_6_chars" : "Minimum 6 teikn",
|
"minimum_8_chars" : "Minimum 8 teikn",
|
||||||
"passwords_do_not_match" : "Passorda er usamde",
|
"passwords_do_not_match" : "Passorda er usamde",
|
||||||
"api_key" : "API-nykel",
|
"api_key" : "API-nykel",
|
||||||
"api_key_not_generated" : "Har ikkje vorte generert",
|
"api_key_not_generated" : "Har ikkje vorte generert",
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "Zmień hasło",
|
"change_password" : "Zmień hasło",
|
||||||
"confirm_password" : "Potwierdź hasło",
|
"confirm_password" : "Potwierdź hasło",
|
||||||
"minimum_6_chars" : "Minimum 6 znaków",
|
"minimum_8_chars" : "Minimum 8 znaków",
|
||||||
"passwords_do_not_match" : "Hasła nie pasują do siebie",
|
"passwords_do_not_match" : "Hasła nie pasują do siebie",
|
||||||
"api_key" : "Klucz API",
|
"api_key" : "Klucz API",
|
||||||
"api_key_not_generated" : "Jeszcze niewygenerowany",
|
"api_key_not_generated" : "Jeszcze niewygenerowany",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "Trocar senha",
|
"change_password" : "Trocar senha",
|
||||||
"confirm_password" : "Confirmar senha",
|
"confirm_password" : "Confirmar senha",
|
||||||
"minimum_6_chars" : "Mínimo de 6 caracteres",
|
"minimum_8_chars" : "Mínimo de 8 caracteres",
|
||||||
"passwords_do_not_match" : "Senhas não conferem",
|
"passwords_do_not_match" : "Senhas não conferem",
|
||||||
"api_key" : "Chave de API",
|
"api_key" : "Chave de API",
|
||||||
"api_key_not_generated" : "Ainda não gerada",
|
"api_key_not_generated" : "Ainda não gerada",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "Эл. почта",
|
"email" : "Эл. почта",
|
||||||
"change_password" : "Изменить пароль",
|
"change_password" : "Изменить пароль",
|
||||||
"confirm_password" : "Подтвердите пароль",
|
"confirm_password" : "Подтвердите пароль",
|
||||||
"minimum_6_chars" : "Не меньше 6 символов",
|
"minimum_8_chars" : "Не меньше 8 символов",
|
||||||
"passwords_do_not_match" : "Пароли не совпадают",
|
"passwords_do_not_match" : "Пароли не совпадают",
|
||||||
"api_key" : "API-ключ",
|
"api_key" : "API-ключ",
|
||||||
"api_key_not_generated" : "Не сгенерирован",
|
"api_key_not_generated" : "Не сгенерирован",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "Zmeniť heslo",
|
"change_password" : "Zmeniť heslo",
|
||||||
"confirm_password" : "Potvrdiť heslo",
|
"confirm_password" : "Potvrdiť heslo",
|
||||||
"minimum_6_chars" : "Minimum je 6 znakov",
|
"minimum_8_chars" : "Minimum je 8 znakov",
|
||||||
"passwords_do_not_match" : "Heslá sa nezhodujú",
|
"passwords_do_not_match" : "Heslá sa nezhodujú",
|
||||||
"api_key" : "API kľúč",
|
"api_key" : "API kľúč",
|
||||||
"api_key_not_generated" : "Nie je vygenerovaný",
|
"api_key_not_generated" : "Nie je vygenerovaný",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-mail",
|
"email" : "E-mail",
|
||||||
"change_password" : "Ändra lösenord",
|
"change_password" : "Ändra lösenord",
|
||||||
"confirm_password" : "Bekräfta lösenord",
|
"confirm_password" : "Bekräfta lösenord",
|
||||||
"minimum_6_chars" : "Minst 6 bokstäver",
|
"minimum_8_chars" : "Minst 8 bokstäver",
|
||||||
"passwords_do_not_match" : "Lösenorden matchar inte",
|
"passwords_do_not_match" : "Lösenorden matchar inte",
|
||||||
"api_key" : "API-nyckel",
|
"api_key" : "API-nyckel",
|
||||||
"api_key_not_generated" : "Inte skapad än",
|
"api_key_not_generated" : "Inte skapad än",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "E-posta",
|
"email" : "E-posta",
|
||||||
"change_password" : "Şifre değiştir",
|
"change_password" : "Şifre değiştir",
|
||||||
"confirm_password" : "Şifreyi doğrula",
|
"confirm_password" : "Şifreyi doğrula",
|
||||||
"minimum_6_chars" : "En az 6 karakter",
|
"minimum_8_chars" : "En az 8 karakter",
|
||||||
"passwords_do_not_match" : "Şifreler uyuşmuyor",
|
"passwords_do_not_match" : "Şifreler uyuşmuyor",
|
||||||
"api_key" : "API anahtarı",
|
"api_key" : "API anahtarı",
|
||||||
"api_key_not_generated" : "Henüz oluşturulmadı",
|
"api_key_not_generated" : "Henüz oluşturulmadı",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
"email" : "邮箱",
|
"email" : "邮箱",
|
||||||
"change_password" : "修改密码",
|
"change_password" : "修改密码",
|
||||||
"confirm_password" : "确认密码",
|
"confirm_password" : "确认密码",
|
||||||
"minimum_6_chars" : "最少为 6 个字母",
|
"minimum_8_chars" : "最少为 8 个字母",
|
||||||
"passwords_do_not_match" : "密码不匹配",
|
"passwords_do_not_match" : "密码不匹配",
|
||||||
"api_key" : "API 密钥",
|
"api_key" : "API 密钥",
|
||||||
"api_key_not_generated" : "API 密钥尚未生成",
|
"api_key_not_generated" : "API 密钥尚未生成",
|
||||||
|
|||||||
@@ -1546,23 +1546,39 @@ module.controller("ProfileCtrl", [
|
|||||||
AnalyticsService.track()
|
AnalyticsService.track()
|
||||||
|
|
||||||
$scope.user = ProfileService.get()
|
$scope.user = ProfileService.get()
|
||||||
|
$scope.error = ""
|
||||||
|
|
||||||
$scope.cancel = function () {
|
$scope.cancel = function () {
|
||||||
$location.path("/")
|
$location.path("/")
|
||||||
}
|
}
|
||||||
$scope.save = function () {
|
$scope.save = function () {
|
||||||
|
$scope.error = ""
|
||||||
if (!$scope.profileForm.$valid) {
|
if (!$scope.profileForm.$valid) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var o = {
|
var o = {
|
||||||
email: $scope.user.email,
|
email: $scope.user.email,
|
||||||
password: $scope.user.password,
|
currentPassword: $scope.currentPassword,
|
||||||
|
newPassword: $scope.newPassword,
|
||||||
newApiKey: $scope.newApiKey,
|
newApiKey: $scope.newApiKey,
|
||||||
}
|
}
|
||||||
|
|
||||||
ProfileService.save(o, function () {
|
ProfileService.save(
|
||||||
$location.path("/")
|
o,
|
||||||
})
|
function () {
|
||||||
|
$location.path("/")
|
||||||
|
},
|
||||||
|
function (error) {
|
||||||
|
var data = error.data
|
||||||
|
if (data.errors) {
|
||||||
|
// password validation error
|
||||||
|
$scope.error = data.errors.join(", ")
|
||||||
|
} else {
|
||||||
|
// bad request error
|
||||||
|
$scope.error = data.message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
$scope.deleteAccount = function () {
|
$scope.deleteAccount = function () {
|
||||||
ProfileService.deleteAccount({})
|
ProfileService.deleteAccount({})
|
||||||
|
|||||||
@@ -3,12 +3,27 @@
|
|||||||
<h1>{{ 'toolbar.profile' | translate }}</h1>
|
<h1>{{ 'toolbar.profile' | translate }}</h1>
|
||||||
</div>
|
</div>
|
||||||
<form name="profileForm" ng-submit="save()" class="form-horizontal">
|
<form name="profileForm" ng-submit="save()" class="form-horizontal">
|
||||||
|
<div ng-if="error" class="col-sm-offset-2 col-sm-10 alert alert-danger">{{error}}</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label" for="email">{{ 'profile.user_name' | translate }}</label>
|
<label class="col-sm-2 control-label" for="email">{{ 'profile.user_name' | translate }}</label>
|
||||||
<div class="col-sm-10 checkbox">
|
<div class="col-sm-10 checkbox">
|
||||||
<span>{{user.name}}</span>
|
<span>{{user.name}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-2 control-label" for="currentPassword">{{ 'profile.current_password' | translate }}</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input
|
||||||
|
type="password"
|
||||||
|
name="currentPassword"
|
||||||
|
id="currentPassword"
|
||||||
|
ng-model="currentPassword"
|
||||||
|
class="form-control"
|
||||||
|
autocomplete="off"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label" for="email">{{ 'profile.email' | translate }}</label>
|
<label class="col-sm-2 control-label" for="email">{{ 'profile.email' | translate }}</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
@@ -16,18 +31,20 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label" for="password">{{ 'profile.change_password' | translate }}</label>
|
<label class="col-sm-2 control-label" for="newPassword">{{ 'profile.change_password' | translate }}</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
name="password"
|
name="newPassword"
|
||||||
id="password"
|
id="newPassword"
|
||||||
ng-model="user.password"
|
ng-model="newPassword"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
ng-minlength="6"
|
ng-minlength="8"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
/>
|
/>
|
||||||
<span class="help-inline" ng-show="profileForm.password.$error.minlength">{{ 'profile.minimum_6_chars' | translate }}</span>
|
<span class="help-inline" ng-show="profileForm.newPassword.$error.minlength"
|
||||||
|
>{{ 'profile.minimum_8_chars' | translate }}</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@@ -39,8 +56,8 @@
|
|||||||
name="password_c"
|
name="password_c"
|
||||||
id="password_c"
|
id="password_c"
|
||||||
ng-model="password_c"
|
ng-model="password_c"
|
||||||
ui-validate="'$value==user.password'"
|
ui-validate="'$value==newPassword'"
|
||||||
ui-validate-watch="'user.password'"
|
ui-validate-watch="'newPassword'"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
/>
|
/>
|
||||||
<span class="help-inline" ng-show="profileForm.password_c.$error.validator"
|
<span class="help-inline" ng-show="profileForm.password_c.$error.validator"
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.util.List;
|
|||||||
import javax.validation.ConstraintValidator;
|
import javax.validation.ConstraintValidator;
|
||||||
import javax.validation.ConstraintValidatorContext;
|
import javax.validation.ConstraintValidatorContext;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.passay.CharacterRule;
|
import org.passay.CharacterRule;
|
||||||
import org.passay.EnglishCharacterData;
|
import org.passay.EnglishCharacterData;
|
||||||
import org.passay.LengthRule;
|
import org.passay.LengthRule;
|
||||||
@@ -22,6 +23,10 @@ public class PasswordConstraintValidator implements ConstraintValidator<ValidPas
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValid(String value, ConstraintValidatorContext context) {
|
public boolean isValid(String value, ConstraintValidatorContext context) {
|
||||||
|
if (StringUtils.isBlank(value)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
PasswordValidator validator = buildPasswordValidator();
|
PasswordValidator validator = buildPasswordValidator();
|
||||||
RuleResult result = validator.validate(new PasswordData(value));
|
RuleResult result = validator.validate(new PasswordData(value));
|
||||||
|
|
||||||
|
|||||||
@@ -12,13 +12,15 @@ import lombok.Data;
|
|||||||
@ApiModel(description = "Profile modification request")
|
@ApiModel(description = "Profile modification request")
|
||||||
@Data
|
@Data
|
||||||
public class ProfileModificationRequest implements Serializable {
|
public class ProfileModificationRequest implements Serializable {
|
||||||
|
@ApiModelProperty(value = "current user password, required to change profile data", required = true)
|
||||||
|
private String currentPassword;
|
||||||
|
|
||||||
@ApiModelProperty(value = "changes email of the user, if specified")
|
@ApiModelProperty(value = "changes email of the user, if specified")
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
@ApiModelProperty(value = "changes password of the user, if specified")
|
@ApiModelProperty(value = "changes password of the user, if specified")
|
||||||
@ValidPassword
|
@ValidPassword
|
||||||
private String password;
|
private String newPassword;
|
||||||
|
|
||||||
@ApiModelProperty(value = "generate a new api key")
|
@ApiModelProperty(value = "generate a new api key")
|
||||||
private boolean newApiKey;
|
private boolean newApiKey;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.util.UUID;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
import javax.ws.rs.BadRequestException;
|
||||||
import javax.ws.rs.Consumes;
|
import javax.ws.rs.Consumes;
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
import javax.ws.rs.POST;
|
import javax.ws.rs.POST;
|
||||||
@@ -193,24 +194,34 @@ public class UserREST {
|
|||||||
@Timed
|
@Timed
|
||||||
public Response saveUserProfile(@ApiParam(hidden = true) @SecurityCheck User user,
|
public Response saveUserProfile(@ApiParam(hidden = true) @SecurityCheck User user,
|
||||||
@Valid @ApiParam(required = true) ProfileModificationRequest request) {
|
@Valid @ApiParam(required = true) ProfileModificationRequest request) {
|
||||||
if (StringUtils.isNotBlank(request.getEmail())) {
|
|
||||||
User u = userDAO.findByEmail(request.getEmail());
|
|
||||||
Preconditions.checkArgument(u == null || user.getId().equals(u.getId()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CommaFeedApplication.USERNAME_DEMO.equals(user.getName())) {
|
if (CommaFeedApplication.USERNAME_DEMO.equals(user.getName())) {
|
||||||
return Response.status(Status.FORBIDDEN).build();
|
return Response.status(Status.FORBIDDEN).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
user.setEmail(StringUtils.trimToNull(request.getEmail()));
|
Optional<User> login = userService.login(user.getEmail(), request.getCurrentPassword());
|
||||||
if (StringUtils.isNotBlank(request.getPassword())) {
|
if (!login.isPresent()) {
|
||||||
byte[] password = encryptionService.getEncryptedPassword(request.getPassword(), user.getSalt());
|
throw new BadRequestException("invalid password");
|
||||||
|
}
|
||||||
|
|
||||||
|
String email = StringUtils.trimToNull(request.getEmail());
|
||||||
|
if (StringUtils.isNotBlank(email)) {
|
||||||
|
User u = userDAO.findByEmail(email);
|
||||||
|
if (u != null && !user.getId().equals(u.getId())) {
|
||||||
|
throw new BadRequestException("email already taken");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
user.setEmail(email);
|
||||||
|
|
||||||
|
if (StringUtils.isNotBlank(request.getNewPassword())) {
|
||||||
|
byte[] password = encryptionService.getEncryptedPassword(request.getNewPassword(), user.getSalt());
|
||||||
user.setPassword(password);
|
user.setPassword(password);
|
||||||
user.setApiKey(userService.generateApiKey(user));
|
user.setApiKey(userService.generateApiKey(user));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.isNewApiKey()) {
|
if (request.isNewApiKey()) {
|
||||||
user.setApiKey(userService.generateApiKey(user));
|
user.setApiKey(userService.generateApiKey(user));
|
||||||
}
|
}
|
||||||
|
|
||||||
userDAO.update(user);
|
userDAO.update(user);
|
||||||
return Response.ok().build();
|
return Response.ok().build();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user