diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserPasswordHistoriesConsts.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserPasswordHistoriesConsts.cs
new file mode 100644
index 00000000000..7d9dede55d4
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserPasswordHistoriesConsts.cs
@@ -0,0 +1,9 @@
+namespace Volo.Abp.Identity;
+
+public class IdentityUserPasswordHistoriesConsts
+{
+ ///
+ /// Default value: 256
+ ///
+ public static int MaxPasswordLength { get; set; } = 256;
+}
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json
index 834c3d007b4..49b22071cd1 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "يجب أن تحتوي كلمات المرور على حرف كبير واحد على الأقل ('A' - 'Z').",
"Volo.Abp.Identity:PasswordTooShort": "يجب أن تتكون كلمات المرور من {0} حرف على الأقل.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "يجب أن تحتوي كلمات المرور على {0} حرف فريد على الأقل.",
+ "Volo.Abp.Identity:PasswordInHistory": "يجب ألا تتطابق كلمات المرور مع آخر {0} كلمات مرور.",
"Volo.Abp.Identity:RoleNotFound": "الدور {0} غير موجود.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "لدى المستخدم بالفعل مجموعة كلمات مرور.",
"Volo.Abp.Identity:UserAlreadyInRole": "المستخدم بالفعل في الدور '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "الرقم المطلوب",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "إجبار المستخدمين على تغيير كلمة المرور بشكل دوري",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "تغيير كلمة المرور بشكل دوري",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "تمكين منع إعادة استخدام كلمة المرور",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "عدد مرات منع إعادة استخدام كلمة المرور",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "ممكّن للمستخدمين الجدد",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "مدة التأمين (بالثواني)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "محاولات الوصول الفاشلة",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "إذا كانت كلمات المرور يجب أن تحتوي على رقم.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "إذا كان يجب أن يتغير كلمة المرور بشكل دوري.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "عدد الأيام التي يجب أن تتراوح بين تغيير كلمة المرور.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "ما إذا كان يجب منع المستخدمين من إعادة استخدام كلمات المرور السابقة.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "عدد كلمات المرور السابقة التي لا يمكن إعادة استخدامها.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "ما إذا كان يمكن قفل مستخدم جديد.",
"Description:Abp.Identity.Lockout.LockoutDuration": "المدة التي يتم فيها حظر المستخدم عند حدوث قفل.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "عدد محاولات الوصول الفاشلة المسموح بها قبل قفل المستخدم ، بافتراض تمكين التأمين.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json
index deea27dd172..8f0456c601d 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Hesla musí obsahovat alespoň jedno velké písmeno ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Hesla musí být dlouhá alespoň {0} znaků.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Hesla nesmí obsahovat více než {0} opakujících se znaků.",
+ "Volo.Abp.Identity:PasswordInHistory": "Hesla se nesmí shodovat s posledními {0} hesly.",
"Volo.Abp.Identity:RoleNotFound": "Role {0} neexistuje.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Uživatel již má nastavené heslo.",
"Volo.Abp.Identity:UserAlreadyInRole": "Uživatel již je v roli '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Požadováno číslo",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Vynutit uživatelům pravidelnou změnu hesla",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Délka platnosti hesla (dny)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Povolit zabránění opětovnému použití hesla",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Počet zabránění opětovnému použití hesla",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Povoleno pro nové uživatele",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Délka blokování (sekundy)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maximální počet neúspěšných pokusů o přístup",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Pokud hesla musí obsahovat číslici.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Zda musí uživatelé pravidelně měnit heslo.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Počet dní, po které je heslo uživatele platné.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Zda zabránit uživatelům v opětovném použití jejich předchozích hesel.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Počet předchozích hesel, která nelze znovu použít.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Zda může být uzamčen nový uživatel.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Doba, po kterou je uživatel zablokován, když dojde k zablokování.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Počet neúspěšných pokusů o přístup než je uživatel uzamčen, za předpokladu, že je uzamčení povoleno.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json
index 5987f215d7e..19daf4d4402 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Passwörter müssen mindestens einen Großbuchstaben ('A' - 'Z') enthalten.",
"Volo.Abp.Identity:PasswordTooShort": "Passwörter müssen mindestens {0} Zeichen lang sein.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Passwörter dürfen nicht mehr als {0} aufeinanderfolgende identische Zeichen enthalten.",
+ "Volo.Abp.Identity:PasswordInHistory": "Passwörter dürfen nicht mit Ihren letzten {0} Passwörtern übereinstimmen.",
"Volo.Abp.Identity:RoleNotFound": "Rolle {0} existiert nicht.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Der Benutzer hat bereits ein Passwort festgelegt.",
"Volo.Abp.Identity:UserAlreadyInRole": "Benutzer bereits in Rolle '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Erforderliche Ziffer",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Benutzer müssen das Passwort regelmäßig ändern",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Passwortänderungszeitraum (Tage)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Wiederverwendung von Passwörtern verhindern aktivieren",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Anzahl der zu verhindernden Passwortwiederverwendungen",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Für neue Benutzer aktiviert",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Sperrdauer (Sekunden)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max. Fehlgeschlagene Zugriffsversuche",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Wenn Passwörter eine Ziffer enthalten müssen.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Gibt an, ob Benutzer das Passwort regelmäßig ändern müssen.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Die Anzahl der Tage, nach denen ein Benutzer das Passwort ändern muss.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Ob verhindert werden soll, dass Benutzer ihre vorherigen Passwörter wiederverwenden.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Die Anzahl der vorherigen Passwörter, die nicht wiederverwendet werden können.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Gibt an, ob ein neuer Benutzer gesperrt werden kann.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Die Dauer, für die ein Benutzer gesperrt ist, wenn eine Sperre auftritt.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Die Anzahl der fehlgeschlagenen Zugriffsversuche, die zulässig sind, bevor ein Benutzer gesperrt wird, sofern die Sperre aktiviert ist.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json
index b3b040cb910..1e2c8a23ce2 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json
@@ -41,7 +41,7 @@
"Volo.Abp.Identity:ConcurrencyFailure": "Ο έλεγχος συγχρονισμού απέτυχε. Η οντότητα στην οποία εργάζεστε έχει τροποποιηθεί από άλλο χρήστη. Απορρίψτε τις αλλαγές σας και δοκιμάστε ξανά.",
"Volo.Abp.Identity:DuplicateEmail": "Το email '{0}' υπάρχει ήδη.",
"Volo.Abp.Identity:DuplicateRoleName": "Το όνομα ρόλου '{0}' υπάρχει ήδη.",
- "Volo.Abp.Identity:DuplicateUserName":"Το Όνομα χρήστη'{0}'υπάρχει ήδη.",
+ "Volo.Abp.Identity:DuplicateUserName": "Το Όνομα χρήστη'{0}'υπάρχει ήδη.",
"Volo.Abp.Identity:InvalidEmail": "Το email '{0}' δεν είναι έγκυρο.",
"Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "Η παρεχόμενη λειτουργία PasswordHasherCompatibilityMode δεν είναι έγκυρη.",
"Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "Το πλήθος των επαναλήψεων πρέπει να είναι θετικός ακέραιος.",
@@ -56,6 +56,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Οι κωδικοί πρόσβασης πρέπει να έχουν τουλάχιστον ένα κεφαλαίο ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Οι κωδικοί πρόσβασης πρέπει να είναι τουλάχιστον {0} χαρακτήρες.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Οι κωδικοί πρόσβασης πρέπει να έχουν τουλάχιστον {0} μοναδικούς χαρακτήρες.",
+ "Volo.Abp.Identity:PasswordInHistory": "Οι κωδικοί πρόσβασης δεν πρέπει να ταιριάζουν με τους τελευταίους {0} κωδικούς πρόσβασής σας.",
"Volo.Abp.Identity:RoleNotFound": "Ο ρόλος {0} δεν υπάρχει",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Ο χρήστης έχει ήδη ορίσει κωδικό πρόσβασης.",
"Volo.Abp.Identity:UserAlreadyInRole": "Χρήστης ήδη στο ρόλο '{0}'.",
@@ -97,6 +98,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Απαιτούμενο ψηφίο",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Επιβάλλεται η αλλαγή του κωδικού πρόσβασης",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Διάρκεια κωδικού πρόσβασης (ημέρες)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Ενεργοποίηση αποτροπής επαναχρησιμοποίησης κωδικού πρόσβασης",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Αριθμός αποτροπής επαναχρησιμοποίησης κωδικού πρόσβασης",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Ενεργοποιήθηκε για νέους χρήστες",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Διάρκεια κλειδώματος (δευτερόλεπτα)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Μέγιστες αποτυχημένες προσπάθειες πρόσβασης",
@@ -113,6 +116,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Εάν οι κωδικοί πρόσβασης πρέπει να περιέχουν ένα ψηφίο.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Εάν οι χρήστες πρέπει να αλλάζουν τον κωδικό πρόσβασης τους με συχνότητα που ορίζεται από το PasswordChangePeriodDays.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Η διάρκεια της περιόδου σε ημέρες μετά την οποία οι χρήστες πρέπει να αλλάζουν τον κωδικό πρόσβασης τους.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Εάν πρέπει να αποτραπεί η επαναχρησιμοποίηση προηγούμενων κωδικών πρόσβασης από τους χρήστες.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Ο αριθμός των προηγούμενων κωδικών πρόσβασης που δεν μπορούν να επαναχρησιμοποιηθούν.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Εάν ένας νέος χρήστης μπορεί να κλειδωθεί.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Η διάρκεια για την οποία ένας χρήστης είναι κλειδωμένος όταν εμφανίζεται ένα κλείδωμα.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Ο αριθμός των αποτυχημένων προσπαθειών πρόσβασης που επιτρέπονται πριν από το κλείδωμα ενός χρήστη, με την προϋπόθεση ότι το κλείδωμα είναι ενεργοποιημένο.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json
index b7d30bb30a5..45f25bc8645 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json
@@ -56,6 +56,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Passwords must have at least one uppercase ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Passwords must be at least {0} characters.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Passwords must use at least {0} different characters.",
+ "Volo.Abp.Identity:PasswordInHistory": "Passwords must not match your last {0} passwords.",
"Volo.Abp.Identity:RoleNotFound": "Role {0} does not exist.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "User already has a password set.",
"Volo.Abp.Identity:UserAlreadyInRole": "User is already in role '{0}'.",
@@ -102,6 +103,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Required digit",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Force users to periodically change password",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Password change period(days)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Enable prevent password reuse",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Prevent password reuse count",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Enabled for new users",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lockout duration(in seconds)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max failed access attempts",
@@ -118,6 +121,8 @@
"Description:Abp.Identity.Password.RequireDigit": "If passwords must contain a digit.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Whether users are required to periodically change their password.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "The number of days a user's password is valid for.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Whether to prevent users from reusing their previous passwords.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "The number of previous passwords that cannot be reused.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Whether a new user can be locked out.",
"Description:Abp.Identity.Lockout.LockoutDuration": "The duration a user is locked out for when a lockout occurs.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "The number of failed access attempts allowed before a user is locked out, assuming lock out is enabled.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json
index 266ce50b5a4..f2cc74cef05 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Passwords must have at least one uppercase ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Passwords must be at least {0} characters.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Passwords must use at least {0} different characters.",
+ "Volo.Abp.Identity:PasswordInHistory": "Passwords must not match your last {0} passwords.",
"Volo.Abp.Identity:RoleNotFound": "Role {0} does not exist.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "User already has a password set.",
"Volo.Abp.Identity:UserAlreadyInRole": "User already in role '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Required digit",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Force users to periodically change password",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Password change period(days)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Enable prevent password reuse",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Prevent password reuse count",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Enabled for new users",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lockout duration(seconds)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max failed access attempts",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "If passwords must contain a digit.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Whether users are forced to periodically change their password.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "The number of days a user's password is valid for.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Whether to prevent users from reusing their previous passwords.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "The number of previous passwords that cannot be reused.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Whether a new user can be locked out.",
"Description:Abp.Identity.Lockout.LockoutDuration": "The duration a user is locked out for when a lockout occurs.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "The number of failed access attempts allowed before a user is locked out, assuming lock out is enabled.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json
index 861ffe10b08..ff4d4302f85 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Contraseñas deben tener al menos un carácter en mayúsculas ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Contraseñas deben tener al menos {0} caracteres",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Contraseñas deben usar al menos {0} caracteres diferentes.",
+ "Volo.Abp.Identity:PasswordInHistory": "Las contraseñas no deben coincidir con sus últimas {0} contraseñas.",
"Volo.Abp.Identity:RoleNotFound": "El rol {0} no existe.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "El usuario tiene la contraseña establecida",
"Volo.Abp.Identity:UserAlreadyInRole": "El usuario ya tiene asignado el rol '{0}'´.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Dígito requerido",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Forzar a los usuarios a cambiar su contraseña periódicamente",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Período de cambio de contraseña (días)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Habilitar prevención de reutilización de contraseña",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Número de reutilizaciones de contraseña a prevenir",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Habilitado para nuevos usuarios",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Duración del bloqueo (segundos)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Número máximo de accesos fallidos",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Si las contraseñas deben contener un dígito",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Si los usuarios deben cambiar su contraseña periódicamente.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "El número de días que un usuario debe esperar antes de cambiar su contraseña.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Si se debe evitar que los usuarios reutilicen sus contraseñas anteriores.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "El número de contraseñas anteriores que no se pueden reutilizar.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Si un nuevo usuario puede ser bloqueado.",
"Description:Abp.Identity.Lockout.LockoutDuration": "La duración del bloqueo de un usuario cuando el bloqueo ocurre.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "El número de accessos fallidos permitidos antes de que un usuario sea bloqueado, el bloqueo de usuario debe estar habilitado.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json
index b733dbd4ebc..024b443fecd 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json
@@ -5,7 +5,7 @@
"Users": "کاربران",
"NewUser": "کاربر جدید",
"UserName": "نام کاربر",
- "Surname":"نام خانوادگی",
+ "Surname": "نام خانوادگی",
"EmailAddress": "آدرس ایمیل",
"PhoneNumber": "شماره تلفن",
"UserInformations": "اطلاعات کاربر",
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "رمزهای عبور باید حداقل دارای یک حروف بزرگ ('A'-'Z') باشند.",
"Volo.Abp.Identity:PasswordTooShort": "گذرواژه ها باید حداقل {0} نویسه داشته باشند.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "گذرواژه ها نباید بیش از {0} کاراکتر تکراری داشته باشند.",
+ "Volo.Abp.Identity:PasswordInHistory": "گذرواژه ها نباید با {0} گذرواژه آخر شما مطابقت داشته باشند.",
"Volo.Abp.Identity:RoleNotFound": "نقش/وظیفه {0} یافت نشد.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "کاربر قبلاً گذرواژه تنظیم کرده است.",
"Volo.Abp.Identity:UserAlreadyInRole": "کاربر قبلاً در این نقش/وظیفه {0} عضو میباشد.",
@@ -98,11 +99,13 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "رقم مورد نیاز است",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "اجبار کاربران به تغییر گذرواژه",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "مدت زمان تغییر گذرواژه (روز)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "فعال کردن جلوگیری از استفاده مجدد از گذرواژه",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "تعداد جلوگیری از استفاده مجدد از گذرواژه",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "برای کاربران جدید فعال گردیده است",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "مدت زمان قفل شدن (ثانیه)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "حداکثر تلاشهای ناموفق برای دسترسی",
"DisplayName:Abp.Identity.SignIn.RequireConfittedEmail": "ایمیل معتبر مورد نیاز می باشد",
- "DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "فعال کردن تایید حساب با شماره تلفن",
+ "DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "به کاربران اجازه تایید شماره تلفن خود را بدهید",
"DisplayName:Abp.Identity.SignIn.RequireConfippedPhoneNumber": "شماره تلفن معتبر مورد نیاز میباشد",
"DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "آیا امکان بروزرسانی نام کاربری فعال میباشد",
"DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "آیا امکان بروزرسانی آدرس ایمیل فعال میباشد",
@@ -114,11 +117,13 @@
"Description:Abp.Identity.Password.RequireDigit": "گذرواژه ها باید دارای عدد باشند.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "اجبار کاربران به تغییر گذرواژه بعد از یک مدت زمان مشخص.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "مدت زمانی که کاربر باید بعد از آن گذرواژه خود را تغییر دهد.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "آیا از استفاده مجدد گذرواژههای قبلی توسط کاربران جلوگیری شود.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "تعداد گذرواژههای قبلی که نمیتوان دوباره استفاده کرد.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "آیا کاربر جدید را می توان قفل کرد.",
"Description:Abp.Identity.Lockout.LockoutDuration": "مدت زمانی که کاربر هنگام قفل شدن، در حالت قفل باقی می ماند.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "تعداد تلاشهای دسترسی ناموفق قبل از قفل شدن کاربر، با فرض فعال بودن امکان قفل کردن.",
"Description:Abp.Identity.SignIn.RequireConfirmEmail": "آیا برای ورود به سیستم آدرس ایمیل تأیید شده لازم است یا خیر.",
- "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "آیا شماره تلفن توسط کاربر قابل تایید باشد یا خیر.",
+ "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "کاربران میتوانند شماره تلفن خود را تایید کنند. نیاز به یکپارچهسازی پیامک دارد.",
"Description:Abp.Identity.SignIn.RequireConfippedPhoneNumber": "آیا برای ورود به سیستم شماره تلفن تأیید شده لازم است یا خیر",
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "آیا کاربر می تواند نام کاربری را به روز کند یا خیر.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "آیا کاربر می تواند آدرس ایمیل خود را به روز کند با خیر.",
@@ -130,10 +135,8 @@
"LockoutEndTime": "زمان اتمام قفل",
"FailedAccessCount": "تعداد دسترسی ناموفق",
"DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "اجباری کردن تایید ایمیل برای ورود",
- "DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "به کاربران اجازه تایید شماره تلفن خود را بدهید",
"DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "اجباری کردن تایید شماره تلفن برای ورود",
"Description:Abp.Identity.SignIn.RequireConfirmedEmail": "کاربران میتوانند حساب ایجاد کنند اما تا زمانی که آدرس ایمیل خود را تایید نکنند نمیتوانند وارد شوند.",
- "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "کاربران میتوانند شماره تلفن خود را تایید کنند. نیاز به یکپارچهسازی پیامک دارد.",
"Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "کاربران میتوانند حساب ایجاد کنند اما تا زمانی که شماره تلفن خود را تایید نکنند نمیتوانند وارد شوند.",
"DisplayName:Abp.Identity.SignIn.RequireEmailVerificationToRegister": "اجباری کردن تایید ایمیل برای ثبتنام",
"Description:Abp.Identity.SignIn.RequireEmailVerificationToRegister": "حسابهای کاربری ایجاد نخواهند شد مگر اینکه آدرس ایمیل خود را تایید کنند."
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json
index 1ad2950b8e3..71cfe15712b 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Salasanoissa on oltava vähintään yksi isot kirjaimet ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Salasanojen on oltava vähintään {0} merkkiä.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Salasanojen on käytettävä vähintään {0} erilaista merkkiä.",
+ "Volo.Abp.Identity:PasswordInHistory": "Salasanojen ei saa täsmätä viimeisten {0} salasanasi kanssa.",
"Volo.Abp.Identity:RoleNotFound": "Roolia {0} ei ole olemassa.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Käyttäjällä on jo asetettu salasana.",
"Volo.Abp.Identity:UserAlreadyInRole": "Käyttäjä on jo roolissa {0}.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Vaadittu numero",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Pakota käyttäjät vaihtamaan salasanaa säännöllisesti",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Salasanan vaihtamisen aikaväli (päivää)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Ota käyttöön salasanan uudelleenkäytön esto",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Salasanan uudelleenkäytön eston määrä",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Käytössä uusille käyttäjille",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lukituksen kesto (sekuntia)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max epäonnistui pääsyyrityksiä",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Jos salasanojen on sisällettävä numero.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Pakottaa käyttäjät vaihtamaan salasanaa säännöllisesti.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Salasanan vaihtamisen aikaväli (päivää).",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Estetäänkö käyttäjiä käyttämästä aiempia salasanojaan uudelleen.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Aiempien salasanojen määrä, joita ei voi käyttää uudelleen.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Voiko uusi käyttäjä lukita.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Kesto, jonka käyttäjä lukitaan, kun lukitus tapahtuu.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Ennen käyttäjän lukitsemista sallittujen epäonnistuneiden pääsyyritysten lukumäärä, olettaen, että lukitus on käytössä.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json
index 39c5a3a71d4..61bc1dea984 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Les mots de passe doivent avoir au moins une majuscule ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Les mots de passe doivent être au moins {0} caractères.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Les mots de passe doivent utiliser au moins {0} caractères différents.",
+ "Volo.Abp.Identity:PasswordInHistory": "Les mots de passe ne doivent pas correspondre à vos {0} derniers mots de passe.",
"Volo.Abp.Identity:RoleNotFound": "La {0} de rôle n’existe pas.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "L’utilisateur dispose déjà d’un jeu de mots de passe.",
"Volo.Abp.Identity:UserAlreadyInRole": "Utilisateur déjà dans le rôle '{0}'.",
@@ -76,7 +77,7 @@
"Volo.Abp.Identity:010007": "Vous ne pouvez pas modifier votre paramètre à deux facteurs.",
"Volo.Abp.Identity:010008": "Il n’est pas permis de changer deux facteurs de réglage.",
"Volo.Abp.Identity:010009": "Vous ne pouvez pas vous déléguer vous-même.",
- "Volo.Abp.Identity:010021" : "Le nom '{0}' existe déjà.",
+ "Volo.Abp.Identity:010021": "Le nom '{0}' existe déjà.",
"Volo.Abp.Identity:010022": "Vous ne pouvez pas modifier un type de revendication statique.",
"Volo.Abp.Identity:010023": "Vous ne pouvez pas supprimer un type de revendication statique.",
"Identity.OrganizationUnit.MaxUserMembershipCount": "Nombre maximal d’adhésions autorisées à l’unité d’organisation pour un utilisateur",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Chiffre requis",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Forcer les utilisateurs à changer leur mot de passe périodiquement",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Période de changement de mot de passe (jours)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Activer la prévention de la réutilisation du mot de passe",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Nombre de réutilisations de mot de passe à empêcher",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Activé pour les nouveaux utilisateurs",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Durée(secondes) du lock-out",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max a échoué tentatives d’accès",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Si les mots de passe doivent contenir un chiffre.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Si les utilisateurs doivent changer leur mot de passe périodiquement.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Période de changement de mot de passe (jours).",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "S'il faut empêcher les utilisateurs de réutiliser leurs mots de passe précédents.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Le nombre de mots de passe précédents qui ne peuvent pas être réutilisés.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Si un nouvel utilisateur peut être verrouillé.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Durée pendant laquelle un utilisateur est verrouillé lorsqu’un lock-out se produit.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Nombre de tentatives d’accès échouées avant qu’un utilisateur ne soit verrouillé, en supposant que le verrouillage est activé.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json
index 760ae275de8..464426cf345 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "पासवर्ड में कम से कम एक अपरकेस ('ए' - 'जेड') होना चाहिए।",
"Volo.Abp.Identity:PasswordTooShort": "पासवर्ड कम से कम {0} वर्ण का होना चाहिए।",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "पासवर्ड में कम से कम {0} अद्वितीय वर्ण होना चाहिए।",
+ "Volo.Abp.Identity:PasswordInHistory": "पासवर्ड आपके अंतिम {0} पासवर्ड से मेल नहीं खाना चाहिए।",
"Volo.Abp.Identity:RoleNotFound": "भूमिका {0} मौजूद नहीं है।",
"Volo.Abp.Identity:UserAlreadyHasPassword": "उपयोगकर्ता के पास पहले से ही एक पासवर्ड सेट है।",
"Volo.Abp.Identity:UserAlreadyInRole": "उपयोगकर्ता पहले से ही '{0}' की भूमिका में है।",
@@ -76,7 +77,7 @@
"Volo.Abp.Identity:010007": "आप अपनी दो कारक सेटिंग नहीं बदल सकते।",
"Volo.Abp.Identity:010008": "इसे दो कारक सेटिंग बदलने की अनुमति नहीं है।",
"Volo.Abp.Identity:010009": "आप अपने आप को अधिकृत नहीं कर सकते हैं!",
- "Volo.Abp.Identity:010021" : "नाम '{0}' पहले से ही लिया गया है।",
+ "Volo.Abp.Identity:010021": "नाम '{0}' पहले से ही लिया गया है।",
"Volo.Abp.Identity:010022": "स्थैतिक भूमिकाओं का नाम नहीं बदला जा सकता है।",
"Volo.Abp.Identity:010023": "स्थैतिक भूमिकाओं को हटाया नहीं जा सकता।",
"Identity.OrganizationUnit.MaxUserMembershipCount": "उपयोगकर्ता के लिए अधिकतम अनुमत संगठन इकाई सदस्यता गणना",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "आवश्यक अंक",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "उपयोगकर्ताओं को अपने पासवर्ड को अक्षम करने के लिए बाधित करने की आवश्यकता है",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "पासवर्ड बदलने की अवधि (दिन)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "पासवर्ड पुनः उपयोग रोकथाम सक्षम करें",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "पासवर्ड पुनः उपयोग रोकथाम गणना",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "नए उपयोगकर्ताओं के लिए सक्षम है",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "तालाबंदी अवधि (सेकंड)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "अधिकतम पहुँच प्रयास विफल",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "यदि पासवर्ड में एक अंक होना चाहिए।",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "यदि उपयोगकर्ताओं को अपने पासवर्ड को अक्षम करने के लिए बाधित करने की आवश्यकता है।",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "उपयोगकर्ता के पासवर्ड को बदलने की अनुमति देने के लिए अवधि (दिन)।",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "क्या उपयोगकर्ताओं को उनके पिछले पासवर्ड का पुनः उपयोग करने से रोकना है।",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "पिछले पासवर्ड की संख्या जिन्हें पुनः उपयोग नहीं किया जा सकता।",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "क्या कोई नया उपयोगकर्ता लॉक किया जा सकता है।",
"Description:Abp.Identity.Lockout.LockoutDuration": "जब लॉकआउट होता है, तो उपयोगकर्ता की अवधि लॉक हो जाती है।",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "उपयोगकर्ता द्वारा लॉक किए जाने से पहले अनुमति प्राप्त विफल प्रयासों की संख्या, यह मानकर कि लॉक आउट सक्षम है।",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json
index 5af46488f3e..e8af4216290 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Lozinke moraju imati barem jedno veliko slovo ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Zaporke moraju imati najmanje {0} znakova.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Lozinke ne smiju sadržavati više od {0} uzastopnih jednakih znakova.",
+ "Volo.Abp.Identity:PasswordInHistory": "Lozinke se ne smiju podudarati s vašim zadnjih {0} lozinki.",
"Volo.Abp.Identity:RoleNotFound": "Uloga {0} ne postoji.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Korisnik već ima postavljenu lozinku.",
"Volo.Abp.Identity:UserAlreadyInRole": "Korisnik je već u ulozi '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Obavezna znamenka",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Prisilite korisnike da periodično mijenjaju lozinku",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Period promjene lozinke (dana)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Omogući sprječavanje ponovne uporabe lozinke",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Broj sprječavanja ponovne uporabe lozinke",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Omogućeno za nove korisnike",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaključavanja (sekunde)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maksimalan broj neuspjelih pokušaja pristupa",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Ako lozinke moraju sadržavati znamenku.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Ako se korisnici moraju periodično mijenjati lozinku.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Period u danima nakon kojeg se korisnici moraju promijeniti lozinku.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Treba li spriječiti korisnike da ponovno koriste svoje prethodne lozinke.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Broj prethodnih lozinki koje se ne mogu ponovno koristiti.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Može li se novi korisnik zaključati.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Trajanje koliko je korisnik zaključan kada dođe do zaključavanja.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Broj dopuštenih neuspjelih pokušaja pristupa prije nego što se korisnik zaključa, pod pretpostavkom da je zaključavanje omogućeno.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json
index 4c9ee448eb0..935a59e2f54 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "A jelszavaknak legalább egy nagybetűvel kell rendelkezniük ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "A jelszónak minimum {0} karaktert kell tartalmaznia.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "A jelszavaknak legalább {0} egyedi karakterrel kell rendelkezniük.",
+ "Volo.Abp.Identity:PasswordInHistory": "A jelszavak nem egyezhetnek az utolsó {0} jelszavával.",
"Volo.Abp.Identity:RoleNotFound": "{0} szerepkür nem létezik.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "A felhasználónak már van jelszava.",
"Volo.Abp.Identity:UserAlreadyInRole": "A felhasználó már rendelkezik a '{0}' szerepkörrel.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Szükséges számjegy",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "A felhasználók szükségesnek tartják a jelszavukat rendszeresen megváltoztatni",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Jelszóváltoztatási időszak napokban",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Jelszó újrafelhasználás megakadályozásának engedélyezése",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Jelszó újrafelhasználás megakadályozásának száma",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Engedélyezve az új felhasználók számára",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "A zárolás időtartama (másodpercben)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max sikertelen hozzáférési kísérlet",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Ha a jelszavaknak tartalmazniuk kell egy számjegyet.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Ha a felhasználók szükségesnek tartják a jelszavukat rendszeresen megváltoztatni.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "A jelszóváltoztatási időszak napokban.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Megakadályozzuk-e a felhasználókat abban, hogy újra felhasználják korábbi jelszavaikat.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "A korábbi jelszavak száma, amelyek nem használhatók fel újra.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Egy új felhasználó zárolható-e.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Az az időtartam, amelyre a felhasználó zárolva van, amikor zárolás történik.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "A felhasználó zárolása előtt megengedett sikertelen hozzáférési kísérletek száma, feltéve, hogy a zárolás engedélyezve van.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json
index 013bce103e8..ebf43ceab32 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Lykilorð verða að hafa að minnsta kosti eina hástafi ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Lykilorð verða að vera að minnsta kosti {0} stafir.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Lykilorð verða að innihalda að minnsta kosti {0} einstaka stafi.",
+ "Volo.Abp.Identity:PasswordInHistory": "Lykilorð mega ekki passa við síðustu {0} lykilorðin þín.",
"Volo.Abp.Identity:RoleNotFound": "Hlutverk {0} er ekki til.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Notandi hefur þegar stillt lykilorð.",
"Volo.Abp.Identity:UserAlreadyInRole": "Notandi þegar í hlutverkinu '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Nauðsynlegt að hafa tölustaf",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Þvinga notendur til að breyta lykilorði á ákveðnum tímabilum",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Tímabil á milli lykilorðabreytinga (dagar)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Virkja að koma í veg fyrir endurnotkun lykilorðs",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Fjöldi sem kemur í veg fyrir endurnotkun lykilorðs",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Virkt fyrir nýja notendur",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lengd lokunar (sekúndur)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Hámarks misheppnaðra aðgangsstilrauna",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Ef lykilorð verða að innihalda tölustaf.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Hvort notendur verði að breyta lykilorði á ákveðnum tímabilum.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Tímabil á milli lykilorðabreytinga (dagar).",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Hvort á að koma í veg fyrir að notendur endurnoti fyrri lykilorð sín.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Fjöldi fyrri lykilorða sem ekki er hægt að endurnota.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Hvort hægt sé að læsa nýjum notanda.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Tímalengd þess að notandi er læstur úti þegar lokun á sér stað.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Fjöldi misheppnaðra aðgangstilrauna sem leyfður er áður en notandi er læstur út, að því gefnu að útilokun sé virk.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json
index 00d5c139b99..1d1d9771fd1 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "La password deve contenere almeno una lettera maiuscola ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "La password deve essere composta da almeno {0} caratteri.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "La password deve contenere almeno {0} caratteri univoci.",
+ "Volo.Abp.Identity:PasswordInHistory": "Le password non devono corrispondere alle ultime {0} password.",
"Volo.Abp.Identity:RoleNotFound": "Il ruolo {0} non esiste.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "L'utente ha già una password impostata.",
"Volo.Abp.Identity:UserAlreadyInRole": "Utente già nel ruolo '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Cifra richiesta",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Forza gli utenti a cambiare la password periodicamente",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Periodo di cambio password (giorni)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Abilita prevenzione riutilizzo password",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Numero di riutilizzi password da prevenire",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Abilitato per i nuovi utenti",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Durata blocco (secondi)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Numero massimo di tentativi di accesso non riusciti",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Se la password devono contenere una cifra.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Se gli utenti devono cambiare la password periodicamente.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Il numero di giorni dopo i quali gli utenti devono cambiare la password.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Se impedire agli utenti di riutilizzare le password precedenti.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Il numero di password precedenti che non possono essere riutilizzate.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Se un nuovo utente può essere bloccato.",
"Description:Abp.Identity.Lockout.LockoutDuration": "La durata per cui un utente viene bloccato quando si verifica un blocco.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Il numero di tentativi di accesso non riusciti consentiti prima che un utente venga bloccato, a condizione che il blocco sia abilitato.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json
index f7fab359338..2b405697ae1 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Wachtwoorden moeten ten minste één hoofdletter bevatten ('A' - 'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Wachtwoorden moeten uit minimaal {0} tekens bestaan.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Wachtwoorden moeten minimaal {0} unieke tekens bevatten.",
+ "Volo.Abp.Identity:PasswordInHistory": "Wachtwoorden mogen niet overeenkomen met uw laatste {0} wachtwoorden.",
"Volo.Abp.Identity:RoleNotFound": "Rol {0} bestaat niet.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Gebruiker heeft al een wachtwoord ingesteld.",
"Volo.Abp.Identity:UserAlreadyInRole": "Gebruiker al in rol '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Vereist cijfer",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Forceer gebruikers om periodiek hun wachtwoord te wijzigen",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Wachtwoord wijzigen periode (dagen)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Voorkoming van wachtwoordhergebruik inschakelen",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Aantal te voorkomen wachtwoordhergebruiken",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Ingeschakeld voor nieuwe gebruikers",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Blokkeringsduur (seconden)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max mislukte toegangspogingen",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Als wachtwoorden een cijfer moeten bevatten.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Of gebruikers verplicht zijn om hun wachtwoord periodiek te wijzigen.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Het aantal dagen dat een gebruiker zijn wachtwoord moet wijzigen nadat het is ingesteld.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Of gebruikers moeten worden verhinderd om hun eerdere wachtwoorden opnieuw te gebruiken.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Het aantal eerdere wachtwoorden dat niet opnieuw kan worden gebruikt.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Of een nieuwe gebruiker kan worden geblokkeerd.",
"Description:Abp.Identity.Lockout.LockoutDuration": "De duur dat een gebruiker wordt geblokkeerd wanneer een blokkering optreedt.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Het aantal mislukte toegangspogingen dat is toegestaan voordat een gebruiker wordt geblokkeerd, ervan uitgaande dat blokkering is ingeschakeld.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json
index 8d794777ee7..c3c80535569 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Hasło musi zawierać przynajmniej jedną wielką literę ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Hasło musi zawierać przynajmnie {0} znaków.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Hasło musi zawierać przynajmniej {0} unikalnych znaków.",
+ "Volo.Abp.Identity:PasswordInHistory": "Hasło nie może być takie samo jak ostatnie {0} haseł.",
"Volo.Abp.Identity:RoleNotFound": "Rola {0} nie istnieje.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Użytkownik ma już ustawione hasło.",
"Volo.Abp.Identity:UserAlreadyInRole": "Użytkownik jest już przypisany do roli '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Wymagana cyfra",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Wymuś użytkownikom okresowe zmiany hasła",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Okres zmiany hasła (dni)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Włącz zapobieganie ponownemu użyciu hasła",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Liczba zapobiegania ponownemu użyciu hasła",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Włączone dla nowych użytkowników",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Czas trwania blokady (sekundy)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maksymalna liczba nieudanych prób dostępu",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Jeśli hasła muszą zawierać cyfrę.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Czy użytkownicy muszą okresowo zmieniać hasło.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Okres zmiany hasła (dni).",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Czy zapobiegać użytkownikom ponownego użycia ich poprzednich haseł.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Liczba poprzednich haseł, których nie można użyć ponownie.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Czy można zablokować nowego użytkownika.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Czas, na jaki użytkownik jest zablokowany, gdy nastąpi blokada.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Liczba nieudanych prób dostępu dopuszczonych przed zablokowaniem użytkownika, przy założeniu, że blokada jest włączona.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json
index b8c4a0fdb73..40ef80556f7 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Senhas devem possuir pelo menos uma letra maiúscula ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Senhas devem possuir pelo menos {0} caracteres.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Senhas devem possuir pelo menos {0} caracteres únicos.",
+ "Volo.Abp.Identity:PasswordInHistory": "As senhas não devem coincidir com suas últimas {0} senhas.",
"Volo.Abp.Identity:RoleNotFound": "Perfil {0} não existe.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "O usuário já possui uma senha.",
"Volo.Abp.Identity:UserAlreadyInRole": "Usuário já possui o perfil '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Dígito requerido",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Forçar usuários a alterar a senha periodicamente",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Período de alteração de senha (dias)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Habilitar prevenção de reutilização de senha",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Número de reutilizações de senha a prevenir",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Habilitado para novos usuários",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Duração do bloqueio (segundos)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Máximo de tentativas de acesso malsucedidas",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Se as senhas devem conter um dígito.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Se os usuários devem alterar sua senha periodicamente.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "O período de dias que um usuário deve esperar antes de alterar sua senha novamente.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Se deve impedir que os usuários reutilizem suas senhas anteriores.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "O número de senhas anteriores que não podem ser reutilizadas.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Se um novo usuário pode ser bloqueado.",
"Description:Abp.Identity.Lockout.LockoutDuration": "A duração que um usuário fica bloqueado quando ocorre um bloqueio.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "O número de tentativas de acesso malsucedidas permitidas antes que um usuário seja bloqueado, assumindo que o bloqueio esteja habilitado.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json
index 2cde7af5708..efe0c53541d 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Parolele trebuie să conţină cel puţin o majusculă ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Parolele trebuie să aibă cel puţin {0} caractere.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Parolele trebuie să conţină cel puţin {0} caractere diferite.",
+ "Volo.Abp.Identity:PasswordInHistory": "Parolele nu trebuie să se potrivească cu ultimele {0} parole ale dvs.",
"Volo.Abp.Identity:RoleNotFound": "Rolul {0} nu există does not exist.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Utilizatorul şi-a setat deja o parolă.",
"Volo.Abp.Identity:UserAlreadyInRole": "Utilizatorul are deja rolul '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Numărul de cifre",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Forţează utilizatorii să schimbe parola periodic",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Perioada de schimbare a parolei (zile)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Activează prevenirea reutilizării parolei",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Număr de prevenire a reutilizării parolei",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Activat pentru noi utilizatori",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Durata blocării (secunde)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Numărul maxim de încercări de acces eşuate",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Dacă parolele trebuie să conţină o cifră.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Dacă utilizatorii trebuie să schimbe parola periodic.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Perioada de schimbare a parolei (zile).",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Dacă să împiedice utilizatorii să își reutilizeze parolele anterioare.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Numărul de parole anterioare care nu pot fi reutilizate.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Dacă un utilizator nou poate fi blocat.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Durata blocării unui utilizator când intervine blocarea.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Numărul de accesări eşuate permise înainte de a bloca un utilizator, presupunând că blocarea este activată.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json
index 8345df27b8d..6afaf14b1a8 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Пароль должен иметь хотя бы одну букву верхнего регистра.",
"Volo.Abp.Identity:PasswordTooShort": "Пароль должен содержать не менее {0} символов.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Пароль должен содержать по крайней мере {0} уникальных символов.",
+ "Volo.Abp.Identity:PasswordInHistory": "Пароль не должен совпадать с вашими последними {0} паролями.",
"Volo.Abp.Identity:RoleNotFound": "Роль {0} не существует.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "У пользователя уже установлен пароль.",
"Volo.Abp.Identity:UserAlreadyInRole": "Пользователь уже имеет роль '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Требуемая цифра",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Требовать периодическое изменение пароля",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Периодичность изменения пароля (дни)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Включить предотвращение повторного использования пароля",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Количество предотвращений повторного использования пароля",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Включено для новых пользователей",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Длительность блокировки (секунды)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Максимальное количество неудачных попыток доступа",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Если пароли должны содержать цифру.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Если пользователи должны периодически изменять пароль.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Периодичность изменения пароля (дни).",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Следует ли запретить пользователям повторно использовать свои предыдущие пароли.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Количество предыдущих паролей, которые не могут быть использованы повторно.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Может ли новый пользователь быть заблокирован.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Длительность блокировки пользователя.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Число неудачных попыток доступа, после которых пользователь будет заблокирован.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json
index d9fa8dbf61d..e529910a5ee 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Heslá musia obsahovať aspoň jedno veľké písmeno ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Heslá musia mať aspoň {0} znakov.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Heslá nesmú obsahovať viac ako {0} opakujúcich sa znakov.",
+ "Volo.Abp.Identity:PasswordInHistory": "Heslá sa nesmú zhodovať s vašimi poslednými {0} heslami.",
"Volo.Abp.Identity:RoleNotFound": "Rola {0} neexistuje.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Používateľ už má nastavené heslo.",
"Volo.Abp.Identity:UserAlreadyInRole": "Používateľ už má rolu '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Požadovaná číslica",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Vynútiť používateľom pravidelne meniť heslo",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Doba platnosti hesla (v dňoch)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Povoliť zabránenie opätovnému použitiu hesla",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Počet zabránenia opätovnému použitiu hesla",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Povolené pre nových používateľov",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Trvanie uzamknutia (v sekundách)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maximálny počet neúspešných pokusov o prístup",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Či heslá musia obsahovať číslicu.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Či sa používateľom musí pravidelne meniť heslo.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Doba platnosti hesla (v dňoch).",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Či zabrániť používateľom v opätovnom použití ich predchádzajúcich hesiel.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Počet predchádzajúcich hesiel, ktoré nemožno znova použiť.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Či môže byť nový používateľ uzamknutý.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Doba, počas ktorej je používateľ uzamknutý, keď dôjde k uzamknutiu.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Počet neúspešných pokusov o prístup pred tým, ako bol používateľ uzamknutý za predpokladu, že je uzamknutie povolené.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json
index b6d505c1c35..c02577c385c 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Gesla morajo imeti vsaj eno veliko črko ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Gesla morajo biti dolga vsaj {0} znakov.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Gesla ne smejo vsebovati več kot {0} zaporednih enakih znakov.",
+ "Volo.Abp.Identity:PasswordInHistory": "Gesla se ne smejo ujemati z vašimi zadnjimi {0} gesli.",
"Volo.Abp.Identity:RoleNotFound": "Vloga {0} ne obstaja.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Uporabnik že ima nastavljeno geslo.",
"Volo.Abp.Identity:UserAlreadyInRole": "Uporabnik že ima dodeljeno vlogo '{0}'.",
@@ -76,7 +77,7 @@
"Volo.Abp.Identity:010007": "Nastavitve dveh faktorjev ne morete spremeniti.",
"Volo.Abp.Identity:010008": "Ni dovoljeno spreminjati nastavitve dveh faktorjev.",
"Volo.Abp.Identity:010009": "Ne morete delegirati svojih pravic.",
- "Volo.Abp.Identity:010021" : "Naziv '{0}' že obstaja.",
+ "Volo.Abp.Identity:010021": "Naziv '{0}' že obstaja.",
"Volo.Abp.Identity:010022": "Ne morete spremeniti tipa statične deklaracije.",
"Volo.Abp.Identity:010023": "Ne morete izbrisati tipa statične deklaracije.",
"Identity.OrganizationUnit.MaxUserMembershipCount": "Največje dovoljeno število članov v organizacijski enoti za uporabnika",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Zahtevana številka",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Vsakih X dni zahtevaj spremembo gesla",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Število dni, ki jih uporabnik lahko uporablja isto geslo",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Omogoči preprečevanje ponovne uporabe gesla",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Število preprečevanja ponovne uporabe gesla",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Omogočeno za nove uporabnike",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaklepa(sekund)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Največje število neuspešnih poskusov dostopa",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Ali morajo gesla vsebovati številko.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Ali morajo uporabniki spremeniti geslo vsakih X dni.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Število dni, ki jih uporabnik lahko uporablja isto geslo.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Ali preprečiti uporabnikom ponovno uporabo svojih prejšnjih gesel.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Število prejšnjih gesel, ki jih ni mogoče ponovno uporabiti.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Ali se nov uporabnik lahko zaklene.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaklepa uporabnika, ko pride do zaklepa.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Število neuspelih poskusov dostopa ki so dovoljeni, preden se uporabnik zaklene, ob predpostavki, da je zaklepanje omogočeno.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sv.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sv.json
index e664adbbfed..166f32a10a1 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sv.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sv.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Lösenord måste innehålla minst en versal ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Lösenord måste innehålla minst {0} tecken.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Lösenord måste innehålla minst {0} olika tecken.",
+ "Volo.Abp.Identity:PasswordInHistory": "Lösenord får inte matcha dina senaste {0} lösenord.",
"Volo.Abp.Identity:RoleNotFound": "Roll {0} finns inte.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Användaren har redan ett lösenord inställt.",
"Volo.Abp.Identity:UserAlreadyInRole": "Användaren har redan rollen '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Nödvändig siffra",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Tvinga användare att regelbundet byta lösenord",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Period för byte av lösenord (dagar)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Aktivera förhindring av återanvändning av lösenord",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Antal förhindring av återanvändning av lösenord",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Aktiverad för nya användare",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Varaktighet för låsning (sekunder)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max misslyckade åtkomstförsök",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Om lösenorden måste innehålla en siffra.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Om användare tvingas byta lösenord med jämna mellanrum.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Antal dagar som en användares lösenord är giltigt.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Om användare ska förhindras från att återanvända sina tidigare lösenord.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Antalet tidigare lösenord som inte kan återanvändas.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Om en ny användare kan låsas ute.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Den tid som en användare är utelåst när en utelåsning inträffar.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Det antal misslyckade åtkomstförsök som tillåts innan en användare låses ut, förutsatt att låsning är aktiverad.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json
index 72b232de4ed..2da62b0355c 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Şifre en az bir büyük harf içermeli ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Şifre en az {0} karakter uzunluğunda olmalı.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Şifre en az {0} farklı karakter içermeli.",
+ "Volo.Abp.Identity:PasswordInHistory": "Şifre son {0} şifrenizle eşleşmemelidir.",
"Volo.Abp.Identity:RoleNotFound": "{0} rolü bulunamadı.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Kullanıcının zaten bir şifresi var.",
"Volo.Abp.Identity:UserAlreadyInRole": "Kullanıcı zaten '{0}' rolünde.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Rakam gerekli",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Kullanıcıların periyodik olarak şifrelerini değiştirmelerini zorla",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Şifre değiştirme periyodu (gün)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Şifre yeniden kullanımını engellemeyi etkinleştir",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Şifre yeniden kullanımını engelleme sayısı",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Yeni kullanıcılar için aktif",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Kilitli kalma süresi (saniye)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maksimum başarısız giriş denemesi",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Parolaların bir rakam içermesi gerekiyorsa.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Kullanıcıların periyodik olarak şifrelerini değiştirmelerini zorla.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Kullanıcıların şifrelerini değiştirmeleri gereken gün sayısı.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Kullanıcıların önceki şifrelerini yeniden kullanmalarını engelleyip engellemeyeceği.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Yeniden kullanılamayacak önceki şifrelerin sayısı.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Yeni kullanıcılar kilitlenebilir.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Kilitlenme olduğunda, ne kadar kilitli kalacağı.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Kilitleme etkin olduğunda, kullanıcıya kilitlenmeden önce izin verilen başarısız giriş sayısı.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json
index 39f9940090f..a98baf65664 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "Mật khẩu phải có ít nhất một chữ hoa ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Mật khẩu phải ít nhất {0} kí tự.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "Mật khẩu không được chứa {0} ký tự trùng lặp.",
+ "Volo.Abp.Identity:PasswordInHistory": "Mật khẩu không được trùng với {0} mật khẩu gần đây của bạn.",
"Volo.Abp.Identity:RoleNotFound": "Vai trò {0} không tồn tại.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Người dùng đã có một mật khẩu.",
"Volo.Abp.Identity:UserAlreadyInRole": "Người dùng đã có vai trò '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "Chữ số bắt buộc",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Buộc người dùng thay đổi mật khẩu định kỳ",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Thời gian thay đổi mật khẩu (ngày)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "Bật chức năng ngăn chặn tái sử dụng mật khẩu",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "Số lượng ngăn chặn tái sử dụng mật khẩu",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Đã bật cho người dùng mới",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Thời gian khóa (giây)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Số lần truy cập không thành công tối đa",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "Nếu mật khẩu phải chứa một chữ số.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Nếu người dùng phải thay đổi mật khẩu của họ định kỳ.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Số ngày mà người dùng phải thay đổi mật khẩu của họ.",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "Có ngăn người dùng tái sử dụng mật khẩu trước đó của họ hay không.",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "Số lượng mật khẩu trước đó không thể tái sử dụng.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Người dùng mới có thể bị khóa hay không.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Khoảng thời gian người dùng bị khóa khi xảy ra quá trình khóa.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Số lần truy cập không thành công được phép trước khi người dùng bị khóa, giả sử tính năng khóa được bật.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json
index cfbe6bd2793..0cfc117cf6c 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "密码至少包含一位大写字母 ('A'-'Z')。",
"Volo.Abp.Identity:PasswordTooShort": "密码至少为{0}个字符。",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "密码至少包含{0}个唯一字符。",
+ "Volo.Abp.Identity:PasswordInHistory": "密码不能与最近{0}次使用的密码相同。",
"Volo.Abp.Identity:RoleNotFound": "角色 {0} 不存在。",
"Volo.Abp.Identity:UserAlreadyHasPassword": "用户已设置密码。",
"Volo.Abp.Identity:UserAlreadyInRole": "用户已具有角色 '{0}'。",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "要求数字",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "强制用户定期更改密码",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "密码更改周期(天)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "启用防止密码重用",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "防止密码重用数量",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "锁定时间(秒)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大失败访问尝试次数",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "密码是否必须包含数字。",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "是否强制用户定期更改密码。",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "用户必须更改密码的周期(天)。",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "是否防止用户重用以前的密码。",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "不能重用的以前密码的数量。",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户被锁定。",
"Description:Abp.Identity.Lockout.LockoutDuration": "当锁定发生时用户被的锁定的时间(秒)。",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "如果启用锁定, 当用户被锁定前失败的访问尝试次数。",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json
index b3899de2480..39f6fe52678 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json
@@ -57,6 +57,7 @@
"Volo.Abp.Identity:PasswordRequiresUpper": "密碼至少包含一位大寫字母 ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "密碼至少為{0}個字元.",
"Volo.Abp.Identity:PasswordRequiresUniqueChars": "密碼至少包含{0}個不同的字元.",
+ "Volo.Abp.Identity:PasswordInHistory": "密碼不能與最近{0}次使用的密碼相同.",
"Volo.Abp.Identity:RoleNotFound": "角色 {0} 不存在.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "使用者已設置密碼.",
"Volo.Abp.Identity:UserAlreadyInRole": "使用者已具有角色 '{0}'.",
@@ -98,6 +99,8 @@
"DisplayName:Abp.Identity.Password.RequireDigit": "需要數字",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "強制使用者定期更改密碼",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "密碼更改週期(天)",
+ "DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse": "啟用防止密碼重用",
+ "DisplayName:Abp.Identity.Password.PreventPasswordReuseCount": "防止密碼重用數量",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "允許新的使用者",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "被鎖定期間(秒)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大登入次數嘗試",
@@ -114,6 +117,8 @@
"Description:Abp.Identity.Password.RequireDigit": "密碼必須包含數字.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "強制使用者定期更改密碼.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "密碼更改週期(天).",
+ "Description:Abp.Identity.Password.EnablePreventPasswordReuse": "是否防止使用者重用以前的密碼。",
+ "Description:Abp.Identity.Password.PreventPasswordReuseCount": "不能重用的以前密碼的數量。",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "使用者是否會被鎖定.",
"Description:Abp.Identity.Lockout.LockoutDuration": "使用者被鎖定後的時間.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "當啟用鎖定功能,設定最大嘗試輸入次數,超過後就被鎖定.",
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Settings/IdentitySettingNames.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Settings/IdentitySettingNames.cs
index b36995aa3bc..88ccae37611 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Settings/IdentitySettingNames.cs
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Settings/IdentitySettingNames.cs
@@ -16,6 +16,8 @@ public static class Password
public const string RequireDigit = PasswordPrefix + ".RequireDigit";
public const string ForceUsersToPeriodicallyChangePassword = PasswordPrefix + ".ForceUsersToPeriodicallyChangePassword";
public const string PasswordChangePeriodDays = PasswordPrefix + ".PasswordChangePeriodDays";
+ public const string EnablePreventPasswordReuse = PasswordPrefix + ".EnablePreventPasswordReuse";
+ public const string PreventPasswordReuseCount = PasswordPrefix + ".PreventPasswordReuseCount";
}
public static class Lockout
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Microsoft/AspNetCore/Identity/AbpIdentityResultExtensions.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Microsoft/AspNetCore/Identity/AbpIdentityResultExtensions.cs
index eda4f950e54..e851cbc6cc0 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain/Microsoft/AspNetCore/Identity/AbpIdentityResultExtensions.cs
+++ b/modules/identity/src/Volo.Abp.Identity.Domain/Microsoft/AspNetCore/Identity/AbpIdentityResultExtensions.cs
@@ -45,6 +45,8 @@ static AbpIdentityResultExtensions()
IdentityStrings["InvalidUserName"] = "Username '{0}' is invalid.";
}
+ IdentityStrings["PasswordInHistory"] = "Passwords must not match your last {0} passwords.";
+
if (!IdentityStrings.Any())
{
throw new AbpException("ResourceSet values of Identity is empty.");
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentitySettingDefinitionProvider.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentitySettingDefinitionProvider.cs
index 7448593c77a..fb1a674fb9f 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentitySettingDefinitionProvider.cs
+++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentitySettingDefinitionProvider.cs
@@ -66,6 +66,20 @@ public override void Define(ISettingDefinitionContext context)
L("Description:Abp.Identity.Password.PasswordChangePeriodDays"),
true),
+ new SettingDefinition(
+ IdentitySettingNames.Password.EnablePreventPasswordReuse,
+ false.ToString(),
+ L("DisplayName:Abp.Identity.Password.EnablePreventPasswordReuse"),
+ L("Description:Abp.Identity.Password.EnablePreventPasswordReuse"),
+ true),
+
+ new SettingDefinition(
+ IdentitySettingNames.Password.PreventPasswordReuseCount,
+ 6.ToString(),
+ L("DisplayName:Abp.Identity.Password.PreventPasswordReuseCount"),
+ L("Description:Abp.Identity.Password.PreventPasswordReuseCount"),
+ true),
+
new SettingDefinition(
IdentitySettingNames.Lockout.AllowedForNewUsers,
true.ToString(),
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs
index ec5db2fe909..be9ccfe8bb1 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs
+++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs
@@ -154,6 +154,11 @@ public class IdentityUser : FullAuditedAggregateRoot, IUser, IHasEntityVer
///
public virtual ICollection OrganizationUnits { get; protected set; }
+ ///
+ /// Navigation property for this users password history.
+ ///
+ public virtual ICollection PasswordHistories { get; protected set; }
+
protected IdentityUser()
{
}
@@ -182,6 +187,7 @@ public IdentityUser(
Logins = new Collection();
Tokens = new Collection();
OrganizationUnits = new Collection();
+ PasswordHistories = new Collection();
}
public virtual void AddRole(Guid roleId)
@@ -345,6 +351,15 @@ public virtual bool IsInOrganizationUnit(Guid organizationUnitId)
);
}
+ public virtual void AddPasswordHistory(string password)
+ {
+ PasswordHistories.Add(new IdentityUserPasswordHistory(
+ Id,
+ password,
+ TenantId)
+ );
+ }
+
///
/// Use for regular email confirmation.
/// Using this skips the confirmation process and directly sets the .
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserPasswordHistory.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserPasswordHistory.cs
new file mode 100644
index 00000000000..cdfd94b35d4
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserPasswordHistory.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Diagnostics.CodeAnalysis;
+using Volo.Abp.Domain.Entities;
+using Volo.Abp.MultiTenancy;
+
+namespace Volo.Abp.Identity;
+
+///
+/// Represents a password history entry for a user.
+///
+public class IdentityUserPasswordHistory : Entity, IMultiTenant
+{
+ public virtual Guid? TenantId { get; protected set; }
+
+ ///
+ /// Gets or sets the primary key of the user associated with this password history entry.
+ ///
+ public virtual Guid UserId { get; protected set; }
+
+ ///
+ /// Gets or sets the password.
+ ///
+ public virtual string Password { get; protected set; }
+
+ public virtual DateTimeOffset CreatedAt { get; protected set; }
+
+ protected IdentityUserPasswordHistory()
+ {
+
+ }
+
+ protected internal IdentityUserPasswordHistory(
+ Guid userId,
+ [NotNull] string password,
+ Guid? tenantId)
+ {
+ Check.NotNull(password, nameof(password));
+
+ UserId = userId;
+ Password = password;
+ CreatedAt = DateTimeOffset.UtcNow;
+ TenantId = tenantId;
+ }
+
+ public override object[] GetKeys()
+ {
+ return new object[] { UserId, Password };
+ }
+}
diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs
index f94f4690cca..1b396754a85 100644
--- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs
+++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs
@@ -46,6 +46,7 @@ public static void ConfigureIdentity([NotNull] this ModelBuilder builder)
b.HasMany(u => u.Roles).WithOne().HasForeignKey(ur => ur.UserId).IsRequired();
b.HasMany(u => u.Tokens).WithOne().HasForeignKey(ur => ur.UserId).IsRequired();
b.HasMany(u => u.OrganizationUnits).WithOne().HasForeignKey(ur => ur.UserId).IsRequired();
+ b.HasMany(u => u.PasswordHistories).WithOne().HasForeignKey(ur => ur.UserId).IsRequired();
b.HasIndex(u => u.NormalizedUserName);
b.HasIndex(u => u.NormalizedEmail);
@@ -224,6 +225,19 @@ public static void ConfigureIdentity([NotNull] this ModelBuilder builder)
b.ApplyObjectExtensionMappings();
});
+ builder.Entity(b =>
+ {
+ b.ToTable(AbpIdentityDbProperties.DbTablePrefix + "UserPasswordHistories", AbpIdentityDbProperties.DbSchema);
+
+ b.ConfigureByConvention();
+
+ b.HasKey(x => new { x.UserId, x.Password });
+
+ b.Property(x => x.Password).HasMaxLength(IdentityUserPasswordHistoriesConsts.MaxPasswordLength).IsRequired();
+
+ b.ApplyObjectExtensionMappings();
+ });
+
builder.Entity(b =>
{
b.ToTable(AbpIdentityDbProperties.DbTablePrefix + "SecurityLogs", AbpIdentityDbProperties.DbSchema);
diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityEfCoreQueryableExtensions.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityEfCoreQueryableExtensions.cs
index 2f04fbbe624..0d51910e977 100644
--- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityEfCoreQueryableExtensions.cs
+++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityEfCoreQueryableExtensions.cs
@@ -17,7 +17,8 @@ public static IQueryable IncludeDetails(this IQueryable x.Logins)
.Include(x => x.Claims)
.Include(x => x.Tokens)
- .Include(x => x.OrganizationUnits);
+ .Include(x => x.OrganizationUnits)
+ .Include(x => x.PasswordHistories);
}
public static IQueryable IncludeDetails(this IQueryable queryable, bool include = true)