Browse Source

Merge pull request #15956 from abpframework/liangshiwei/identity

Add `LastPasswordChangeTime` to `IdenttiyUser`
pull/15966/head
liangshiwei 4 years ago
committed by GitHub
parent
commit
05d2709b2a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/AbpSignInManager.cs
  2. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json
  3. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json
  4. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json
  5. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json
  6. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json
  7. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json
  8. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json
  9. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json
  10. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json
  11. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json
  12. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json
  13. 4
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json
  14. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json
  15. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json
  16. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json
  17. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json
  18. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json
  19. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json
  20. 4
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json
  21. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json
  22. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json
  23. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json
  24. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json
  25. 6
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json
  26. 4
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json
  27. 4
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json
  28. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Settings/IdentitySettingNames.cs
  29. 14
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentitySettingDefinitionProvider.cs
  30. 10
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs
  31. 22
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs
  32. 3
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs
  33. 7
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/AbpIdentityDomainTestModule.cs
  34. 41
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs
  35. 31
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/TestSettingValueProvider.cs
  36. 47
      modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpResourceOwnerPasswordValidator.cs
  37. 39
      modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.Password.cs
  38. 5
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230314024329_Initial.Designer.cs
  39. 1
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230314024329_Initial.cs
  40. 3
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs
  41. 5
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230314024404_Initial.Designer.cs
  42. 1
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230314024404_Initial.cs
  43. 3
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs
  44. 5
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230314024402_Initial.Designer.cs
  45. 1
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230314024402_Initial.cs
  46. 3
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs
  47. 5
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230314024433_Initial.Designer.cs
  48. 1
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230314024433_Initial.cs
  49. 3
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs
  50. 5
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230314023936_Initial.Designer.cs
  51. 1
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230314023936_Initial.cs
  52. 3
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs
  53. 5
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230314024642_Initial.Designer.cs
  54. 1
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230314024642_Initial.cs
  55. 3
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs
  56. 5
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230314024129_Initial.Designer.cs
  57. 1
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230314024129_Initial.cs
  58. 3
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs
  59. 5
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230314024104_Initial.Designer.cs
  60. 1
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230314024104_Initial.cs
  61. 3
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs

18
modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/AbpSignInManager.cs

@ -5,6 +5,9 @@ using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Volo.Abp.Identity.Settings;
using Volo.Abp.Settings;
using Volo.Abp.Timing;
namespace Volo.Abp.Identity.AspNetCore; namespace Volo.Abp.Identity.AspNetCore;
@ -12,6 +15,10 @@ public class AbpSignInManager : SignInManager<IdentityUser>
{ {
protected AbpIdentityOptions AbpOptions { get; } protected AbpIdentityOptions AbpOptions { get; }
protected ISettingProvider SettingProvider { get; }
private readonly IdentityUserManager _identityUserManager;
public AbpSignInManager( public AbpSignInManager(
IdentityUserManager userManager, IdentityUserManager userManager,
IHttpContextAccessor contextAccessor, IHttpContextAccessor contextAccessor,
@ -20,8 +27,8 @@ public class AbpSignInManager : SignInManager<IdentityUser>
ILogger<SignInManager<IdentityUser>> logger, ILogger<SignInManager<IdentityUser>> logger,
IAuthenticationSchemeProvider schemes, IAuthenticationSchemeProvider schemes,
IUserConfirmation<IdentityUser> confirmation, IUserConfirmation<IdentityUser> confirmation,
IOptions<AbpIdentityOptions> options IOptions<AbpIdentityOptions> options,
) : base( ISettingProvider settingProvider) : base(
userManager, userManager,
contextAccessor, contextAccessor,
claimsFactory, claimsFactory,
@ -30,7 +37,9 @@ public class AbpSignInManager : SignInManager<IdentityUser>
schemes, schemes,
confirmation) confirmation)
{ {
SettingProvider = settingProvider;
AbpOptions = options.Value; AbpOptions = options.Value;
_identityUserManager = userManager;
} }
public override async Task<SignInResult> PasswordSignInAsync( public override async Task<SignInResult> PasswordSignInAsync(
@ -91,6 +100,11 @@ public class AbpSignInManager : SignInManager<IdentityUser>
return SignInResult.NotAllowed; return SignInResult.NotAllowed;
} }
if (await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user))
{
return SignInResult.NotAllowed;
}
return await base.PreSignInCheck(user); return await base.PreSignInCheck(user);
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "الأحرف صغيرة المطلوبة", "DisplayName:Abp.Identity.Password.RequireLowercase": "الأحرف صغيرة المطلوبة",
"DisplayName:Abp.Identity.Password.RequireUppercase": "الأحرف الكبيرة المطلوبة", "DisplayName:Abp.Identity.Password.RequireUppercase": "الأحرف الكبيرة المطلوبة",
"DisplayName:Abp.Identity.Password.RequireDigit": "الرقم المطلوب", "DisplayName:Abp.Identity.Password.RequireDigit": "الرقم المطلوب",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "إجبار المستخدمين على تغيير كلمة المرور بشكل دوري",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "تغيير كلمة المرور بشكل دوري",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "ممكّن للمستخدمين الجدد", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "ممكّن للمستخدمين الجدد",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "مدة التأمين (بالثواني)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "مدة التأمين (بالثواني)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "محاولات الوصول الفاشلة", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "محاولات الوصول الفاشلة",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "إذا كانت كلمات المرور يجب أن تحتوي على حرف ASCII صغير.", "Description:Abp.Identity.Password.RequireLowercase": "إذا كانت كلمات المرور يجب أن تحتوي على حرف ASCII صغير.",
"Description:Abp.Identity.Password.RequireUppercase": "إذا كان يجب أن تحتوي كلمات المرور على أحرف ASCII ذات الأحرف الكبيرة.", "Description:Abp.Identity.Password.RequireUppercase": "إذا كان يجب أن تحتوي كلمات المرور على أحرف ASCII ذات الأحرف الكبيرة.",
"Description:Abp.Identity.Password.RequireDigit": "إذا كانت كلمات المرور يجب أن تحتوي على رقم.", "Description:Abp.Identity.Password.RequireDigit": "إذا كانت كلمات المرور يجب أن تحتوي على رقم.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "إذا كان يجب أن يتغير كلمة المرور بشكل دوري.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "عدد الأيام التي يجب أن تتراوح بين تغيير كلمة المرور.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "ما إذا كان يمكن قفل مستخدم جديد.", "Description:Abp.Identity.Lockout.AllowedForNewUsers": "ما إذا كان يمكن قفل مستخدم جديد.",
"Description:Abp.Identity.Lockout.LockoutDuration": "المدة التي يتم فيها حظر المستخدم عند حدوث قفل.", "Description:Abp.Identity.Lockout.LockoutDuration": "المدة التي يتم فيها حظر المستخدم عند حدوث قفل.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "عدد محاولات الوصول الفاشلة المسموح بها قبل قفل المستخدم ، بافتراض تمكين التأمين.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "عدد محاولات الوصول الفاشلة المسموح بها قبل قفل المستخدم ، بافتراض تمكين التأمين.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "ما إذا كان يمكن تحديث اسم المستخدم بواسطة المستخدم.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "ما إذا كان يمكن تحديث اسم المستخدم بواسطة المستخدم.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "ما إذا كان يمكن تحديث البريد الإلكتروني من قبل المستخدم." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "ما إذا كان يمكن تحديث البريد الإلكتروني من قبل المستخدم."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Požadováno malé písmeno", "DisplayName:Abp.Identity.Password.RequireLowercase": "Požadováno malé písmeno",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Požadováno velké písmeno", "DisplayName:Abp.Identity.Password.RequireUppercase": "Požadováno velké písmeno",
"DisplayName:Abp.Identity.Password.RequireDigit": "Požadováno číslo", "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.Lockout.AllowedForNewUsers": "Povoleno pro nové uživatele", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Povoleno pro nové uživatele",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Délka blokování (sekundy)", "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", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maximální počet neúspěšných pokusů o přístup",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Pokud hesla musí obsahovat ASCII znak malých písmen.", "Description:Abp.Identity.Password.RequireLowercase": "Pokud hesla musí obsahovat ASCII znak malých písmen.",
"Description:Abp.Identity.Password.RequireUppercase": "Pokud hesla musí obsahovat ASCII znak velkých písmen.", "Description:Abp.Identity.Password.RequireUppercase": "Pokud hesla musí obsahovat ASCII znak velkých písmen.",
"Description:Abp.Identity.Password.RequireDigit": "Pokud hesla musí obsahovat číslici.", "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 platné. Pokud je nastaveno na 0, heslo nikdy nevyprší.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Zda může být uzamčen nový uživatel.", "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.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.", "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.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Zda může uživatel změnit uživatelské jméno.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Zda může uživatel změnit uživatelské jméno.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Zda může uživatel změnit email." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Zda může uživatel změnit email."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Erforderlicher Kleinbuchstabe", "DisplayName:Abp.Identity.Password.RequireLowercase": "Erforderlicher Kleinbuchstabe",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Erforderlicher Großbuchstabe", "DisplayName:Abp.Identity.Password.RequireUppercase": "Erforderlicher Großbuchstabe",
"DisplayName:Abp.Identity.Password.RequireDigit": "Erforderliche Ziffer", "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.Lockout.AllowedForNewUsers": "Für neue Benutzer aktiviert", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Für neue Benutzer aktiviert",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Sperrdauer (Sekunden)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Sperrdauer (Sekunden)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max. Fehlgeschlagene Zugriffsversuche", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max. Fehlgeschlagene Zugriffsversuche",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Wenn Kennwörter einen ASCII-Kleinbuchstaben enthalten müssen.", "Description:Abp.Identity.Password.RequireLowercase": "Wenn Kennwörter einen ASCII-Kleinbuchstaben enthalten müssen.",
"Description:Abp.Identity.Password.RequireUppercase": "Wenn Kennwörter einen ASCII-Großbuchstaben enthalten müssen.", "Description:Abp.Identity.Password.RequireUppercase": "Wenn Kennwörter einen ASCII-Großbuchstaben enthalten müssen.",
"Description:Abp.Identity.Password.RequireDigit": "Wenn Passwörter eine Ziffer enthalten müssen.", "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.Lockout.AllowedForNewUsers": "Gibt an, ob ein neuer Benutzer gesperrt werden kann.", "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.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.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Die Anzahl der fehlgeschlagenen Zugriffsversuche, die zulässig sind, bevor ein Benutzer gesperrt wird, sofern die Sperre aktiviert ist.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Gibt an, ob der Benutzername vom Benutzer aktualisiert werden kann.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Gibt an, ob der Benutzername vom Benutzer aktualisiert werden kann.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Gibt an, ob die E-Mail-Adresse vom Benutzer aktualisiert werden kann." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Gibt an, ob die E-Mail-Adresse vom Benutzer aktualisiert werden kann."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json

@ -86,6 +86,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Απαιτούμενος πεζός χαρακτήρας", "DisplayName:Abp.Identity.Password.RequireLowercase": "Απαιτούμενος πεζός χαρακτήρας",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Απαιτούμενος κεφαλαίος χαρακτήρας", "DisplayName:Abp.Identity.Password.RequireUppercase": "Απαιτούμενος κεφαλαίος χαρακτήρας",
"DisplayName:Abp.Identity.Password.RequireDigit": "Απαιτούμενο ψηφίο", "DisplayName:Abp.Identity.Password.RequireDigit": "Απαιτούμενο ψηφίο",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Επιβάλλεται η αλλαγή του κωδικού πρόσβασης",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Διάρκεια κωδικού πρόσβασης (ημέρες)",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Ενεργοποιήθηκε για νέους χρήστες", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Ενεργοποιήθηκε για νέους χρήστες",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Διάρκεια κλειδώματος (δευτερόλεπτα)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Διάρκεια κλειδώματος (δευτερόλεπτα)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Μέγιστες αποτυχημένες προσπάθειες πρόσβασης", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Μέγιστες αποτυχημένες προσπάθειες πρόσβασης",
@ -100,6 +102,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Εάν οι κωδικοί πρόσβασης πρέπει να περιέχουν πεζό χαρακτήρα ASCII.", "Description:Abp.Identity.Password.RequireLowercase": "Εάν οι κωδικοί πρόσβασης πρέπει να περιέχουν πεζό χαρακτήρα ASCII.",
"Description:Abp.Identity.Password.RequireUppercase": "Εάν οι κωδικοί πρόσβασης πρέπει να περιέχουν κεφαλαίο χαρακτήρα ASCII.", "Description:Abp.Identity.Password.RequireUppercase": "Εάν οι κωδικοί πρόσβασης πρέπει να περιέχουν κεφαλαίο χαρακτήρα ASCII.",
"Description:Abp.Identity.Password.RequireDigit": "Εάν οι κωδικοί πρόσβασης πρέπει να περιέχουν ένα ψηφίο.", "Description:Abp.Identity.Password.RequireDigit": "Εάν οι κωδικοί πρόσβασης πρέπει να περιέχουν ένα ψηφίο.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Εάν οι χρήστες πρέπει να αλλάζουν τον κωδικό πρόσβασης τους με συχνότητα που ορίζεται από το PasswordChangePeriodDays.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Η διάρκεια της περιόδου σε ημέρες μετά την οποία οι χρήστες πρέπει να αλλάζουν τον κωδικό πρόσβασης τους.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Εάν ένας νέος χρήστης μπορεί να κλειδωθεί.", "Description:Abp.Identity.Lockout.AllowedForNewUsers": "Εάν ένας νέος χρήστης μπορεί να κλειδωθεί.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Η διάρκεια για την οποία ένας χρήστης είναι κλειδωμένος όταν εμφανίζεται ένα κλείδωμα.", "Description:Abp.Identity.Lockout.LockoutDuration": "Η διάρκεια για την οποία ένας χρήστης είναι κλειδωμένος όταν εμφανίζεται ένα κλείδωμα.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Ο αριθμός των αποτυχημένων προσπαθειών πρόσβασης που επιτρέπονται πριν από το κλείδωμα ενός χρήστη, με την προϋπόθεση ότι το κλείδωμα είναι ενεργοποιημένο.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Ο αριθμός των αποτυχημένων προσπαθειών πρόσβασης που επιτρέπονται πριν από το κλείδωμα ενός χρήστη, με την προϋπόθεση ότι το κλείδωμα είναι ενεργοποιημένο.",
@ -109,4 +113,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Εάν το όνομα χρήστη μπορεί να ενημερωθεί από τον χρήστη.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Εάν το όνομα χρήστη μπορεί να ενημερωθεί από τον χρήστη.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Εάν το email μπορεί να ενημερωθεί από τον χρήστη." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Εάν το email μπορεί να ενημερωθεί από τον χρήστη."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json

@ -91,6 +91,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Required lower case character", "DisplayName:Abp.Identity.Password.RequireLowercase": "Required lower case character",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Required upper case character", "DisplayName:Abp.Identity.Password.RequireUppercase": "Required upper case character",
"DisplayName:Abp.Identity.Password.RequireDigit": "Required digit", "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.Lockout.AllowedForNewUsers": "Enabled for new users", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Enabled for new users",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lockout duration(in seconds)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lockout duration(in seconds)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max failed access attempts", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max failed access attempts",
@ -105,6 +107,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "If passwords must contain a lower case ASCII character.", "Description:Abp.Identity.Password.RequireLowercase": "If passwords must contain a lower case ASCII character.",
"Description:Abp.Identity.Password.RequireUppercase": "If passwords must contain a upper case ASCII character.", "Description:Abp.Identity.Password.RequireUppercase": "If passwords must contain a upper case ASCII character.",
"Description:Abp.Identity.Password.RequireDigit": "If passwords must contain a digit.", "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.Lockout.AllowedForNewUsers": "Whether a new user can be locked out.", "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.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.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "The number of failed access attempts allowed before a user is locked out, assuming lock out is enabled.",
@ -118,4 +122,4 @@
"DisplayName:Abp.Identity.UsersCanChange": "Allow users to change their Two Factor.", "DisplayName:Abp.Identity.UsersCanChange": "Allow users to change their Two Factor.",
"Description:Abp.Identity.UsersCanChange": "Allow users to change their Two Factor." "Description:Abp.Identity.UsersCanChange": "Allow users to change their Two Factor."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Required lower case character", "DisplayName:Abp.Identity.Password.RequireLowercase": "Required lower case character",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Required upper case character", "DisplayName:Abp.Identity.Password.RequireUppercase": "Required upper case character",
"DisplayName:Abp.Identity.Password.RequireDigit": "Required digit", "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.Lockout.AllowedForNewUsers": "Enabled for new users", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Enabled for new users",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lockout duration(seconds)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lockout duration(seconds)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max failed access attempts", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max failed access attempts",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "If passwords must contain a lower case ASCII character.", "Description:Abp.Identity.Password.RequireLowercase": "If passwords must contain a lower case ASCII character.",
"Description:Abp.Identity.Password.RequireUppercase": "If passwords must contain a upper case ASCII character.", "Description:Abp.Identity.Password.RequireUppercase": "If passwords must contain a upper case ASCII character.",
"Description:Abp.Identity.Password.RequireDigit": "If passwords must contain a digit.", "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.Lockout.AllowedForNewUsers": "Whether a new user can be locked out.", "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.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.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "The number of failed access attempts allowed before a user is locked out, assuming lock out is enabled.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Whether the username can be updated by the user.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Whether the username can be updated by the user.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Whether the email can be updated by the user." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Whether the email can be updated by the user."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Carácter en minúsculas requerido", "DisplayName:Abp.Identity.Password.RequireLowercase": "Carácter en minúsculas requerido",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Carácter en mayúsculas requerido", "DisplayName:Abp.Identity.Password.RequireUppercase": "Carácter en mayúsculas requerido",
"DisplayName:Abp.Identity.Password.RequireDigit": "Dígito requerido", "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.Lockout.AllowedForNewUsers": "Habilitado para nuevos usuarios", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Habilitado para nuevos usuarios",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Duración del bloqueo (segundos)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Duración del bloqueo (segundos)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Número máximo de accesos fallidos", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Número máximo de accesos fallidos",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Si las contraseñas deben contener un carácter en minúscula.", "Description:Abp.Identity.Password.RequireLowercase": "Si las contraseñas deben contener un carácter en minúscula.",
"Description:Abp.Identity.Password.RequireUppercase": "Si las contreseñas deben contener un carácter en mayúscula", "Description:Abp.Identity.Password.RequireUppercase": "Si las contreseñas deben contener un carácter en mayúscula",
"Description:Abp.Identity.Password.RequireDigit": "Si las contraseñas deben contener un dígito", "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.Lockout.AllowedForNewUsers": "Si un nuevo usuario puede ser bloqueado.", "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.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.", "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.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Si el nombre de usuario puede ser actualizado por el usuario.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Si el nombre de usuario puede ser actualizado por el usuario.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Si el e-mail puede ser actualizado por el usuario." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Si el e-mail puede ser actualizado por el usuario."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json

@ -86,6 +86,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "حروف کوچک مورد نیاز است", "DisplayName:Abp.Identity.Password.RequireLowercase": "حروف کوچک مورد نیاز است",
"DisplayName:Abp.Identity.Password.RequireUppercase": "حروف بزرگ مورد نیاز است", "DisplayName:Abp.Identity.Password.RequireUppercase": "حروف بزرگ مورد نیاز است",
"DisplayName:Abp.Identity.Password.RequireDigit": "رقم مورد نیاز است", "DisplayName:Abp.Identity.Password.RequireDigit": "رقم مورد نیاز است",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "اجبار کاربران به تغییر گذرواژه",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "مدت زمان تغییر گذرواژه (روز)",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "برای کاربران جدید فعال گردیده است", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "برای کاربران جدید فعال گردیده است",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "مدت زمان قفل شدن (ثانیه)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "مدت زمان قفل شدن (ثانیه)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "حداکثر تلاشهای ناموفق برای دسترسی", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "حداکثر تلاشهای ناموفق برای دسترسی",
@ -100,6 +102,8 @@
"Description:Abp.Identity.Password.RequireLowercase": " ها باید دارای حروف کوچک ASCII باشند.", "Description:Abp.Identity.Password.RequireLowercase": " ها باید دارای حروف کوچک ASCII باشند.",
"Description:Abp.Identity.Password.RequireUppercase": "گذرواژه ها باید دارای حروف بزرگ ASCII باشند.", "Description:Abp.Identity.Password.RequireUppercase": "گذرواژه ها باید دارای حروف بزرگ ASCII باشند.",
"Description:Abp.Identity.Password.RequireDigit": "گذرواژه ها باید دارای عدد باشند.", "Description:Abp.Identity.Password.RequireDigit": "گذرواژه ها باید دارای عدد باشند.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "اجبار کاربران به تغییر گذرواژه بعد از یک مدت زمان مشخص.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "مدت زمانی که کاربر باید بعد از آن گذرواژه خود را تغییر دهد.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "آیا کاربر جدید را می توان قفل کرد.", "Description:Abp.Identity.Lockout.AllowedForNewUsers": "آیا کاربر جدید را می توان قفل کرد.",
"Description:Abp.Identity.Lockout.LockoutDuration": "مدت زمانی که کاربر هنگام قفل شدن، در حالت قفل باقی می ماند.", "Description:Abp.Identity.Lockout.LockoutDuration": "مدت زمانی که کاربر هنگام قفل شدن، در حالت قفل باقی می ماند.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "تعداد تلاشهای دسترسی ناموفق قبل از قفل شدن کاربر، با فرض فعال بودن امکان قفل کردن.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "تعداد تلاشهای دسترسی ناموفق قبل از قفل شدن کاربر، با فرض فعال بودن امکان قفل کردن.",
@ -109,4 +113,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "آیا کاربر می تواند نام کاربری را به روز کند یا خیر.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "آیا کاربر می تواند نام کاربری را به روز کند یا خیر.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "آیا کاربر می تواند آدرس ایمیل خود را به روز کند با خیر." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "آیا کاربر می تواند آدرس ایمیل خود را به روز کند با خیر."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Vaadittu pieni kirjain", "DisplayName:Abp.Identity.Password.RequireLowercase": "Vaadittu pieni kirjain",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Vaadittu iso kirjain", "DisplayName:Abp.Identity.Password.RequireUppercase": "Vaadittu iso kirjain",
"DisplayName:Abp.Identity.Password.RequireDigit": "Vaadittu numero", "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.Lockout.AllowedForNewUsers": "Käytössä uusille käyttäjille", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Käytössä uusille käyttäjille",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lukituksen kesto (sekuntia)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lukituksen kesto (sekuntia)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max epäonnistui pääsyyrityksiä", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max epäonnistui pääsyyrityksiä",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Jos salasanojen on sisällettävä pieni kirjain ASCII-merkki.", "Description:Abp.Identity.Password.RequireLowercase": "Jos salasanojen on sisällettävä pieni kirjain ASCII-merkki.",
"Description:Abp.Identity.Password.RequireUppercase": "Jos salasanojen on sisällettävä isoja ASCII-merkkejä.", "Description:Abp.Identity.Password.RequireUppercase": "Jos salasanojen on sisällettävä isoja ASCII-merkkejä.",
"Description:Abp.Identity.Password.RequireDigit": "Jos salasanojen on sisällettävä numero.", "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.Lockout.AllowedForNewUsers": "Voiko uusi käyttäjä lukita.", "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.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ä.", "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ä.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Voiko käyttäjä päivittää käyttäjänimen?", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Voiko käyttäjä päivittää käyttäjänimen?",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Voiko käyttäjä päivittää sähköpostin." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Voiko käyttäjä päivittää sähköpostin."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Caractère de minuscule requis", "DisplayName:Abp.Identity.Password.RequireLowercase": "Caractère de minuscule requis",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Caractère de majuscule requis", "DisplayName:Abp.Identity.Password.RequireUppercase": "Caractère de majuscule requis",
"DisplayName:Abp.Identity.Password.RequireDigit": "Chiffre requis", "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.Lockout.AllowedForNewUsers": "Activé pour les nouveaux utilisateurs", "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.LockoutDuration": "Durée(secondes) du lock-out",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max a échoué tentatives d’accès", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max a échoué tentatives d’accès",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Si les mots de passe doivent contenir un caractère ASCII minuscule.", "Description:Abp.Identity.Password.RequireLowercase": "Si les mots de passe doivent contenir un caractère ASCII minuscule.",
"Description:Abp.Identity.Password.RequireUppercase": "Si les mots de passe doivent contenir un caractère ASCII majuscule.", "Description:Abp.Identity.Password.RequireUppercase": "Si les mots de passe doivent contenir un caractère ASCII majuscule.",
"Description:Abp.Identity.Password.RequireDigit": "Si les mots de passe doivent contenir un chiffre.", "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.Lockout.AllowedForNewUsers": "Si un nouvel utilisateur peut être verrouillé.", "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.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é.", "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é.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Si le nom d’utilisateur peut être mis à jour par l’utilisateur.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Si le nom d’utilisateur peut être mis à jour par l’utilisateur.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Si l’e-mail peut être mis à jour par l’utilisateur." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Si l’e-mail peut être mis à jour par l’utilisateur."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "आवश्यक निचला मामला चरित्र", "DisplayName:Abp.Identity.Password.RequireLowercase": "आवश्यक निचला मामला चरित्र",
"DisplayName:Abp.Identity.Password.RequireUppercase": "आवश्यक ऊपरी मामला चरित्र", "DisplayName:Abp.Identity.Password.RequireUppercase": "आवश्यक ऊपरी मामला चरित्र",
"DisplayName:Abp.Identity.Password.RequireDigit": "आवश्यक अंक", "DisplayName:Abp.Identity.Password.RequireDigit": "आवश्यक अंक",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "उपयोगकर्ताओं को अपने पासवर्ड को अक्षम करने के लिए बाधित करने की आवश्यकता है",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "पासवर्ड बदलने की अवधि (दिन)",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "नए उपयोगकर्ताओं के लिए सक्षम है", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "नए उपयोगकर्ताओं के लिए सक्षम है",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "तालाबंदी अवधि (सेकंड)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "तालाबंदी अवधि (सेकंड)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "अधिकतम पहुँच प्रयास विफल", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "अधिकतम पहुँच प्रयास विफल",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "यदि पासवर्ड में ASCII वर्ण कम होना चाहिए।", "Description:Abp.Identity.Password.RequireLowercase": "यदि पासवर्ड में ASCII वर्ण कम होना चाहिए।",
"Description:Abp.Identity.Password.RequireUppercase": "यदि पासवर्ड में ऊपरी मामला ASCII वर्ण होना चाहिए।", "Description:Abp.Identity.Password.RequireUppercase": "यदि पासवर्ड में ऊपरी मामला ASCII वर्ण होना चाहिए।",
"Description:Abp.Identity.Password.RequireDigit": "यदि पासवर्ड में एक अंक होना चाहिए।", "Description:Abp.Identity.Password.RequireDigit": "यदि पासवर्ड में एक अंक होना चाहिए।",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "यदि उपयोगकर्ताओं को अपने पासवर्ड को अक्षम करने के लिए बाधित करने की आवश्यकता है।",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "उपयोगकर्ता के पासवर्ड को बदलने की अनुमति देने के लिए अवधि (दिन)।",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "क्या कोई नया उपयोगकर्ता लॉक किया जा सकता है।", "Description:Abp.Identity.Lockout.AllowedForNewUsers": "क्या कोई नया उपयोगकर्ता लॉक किया जा सकता है।",
"Description:Abp.Identity.Lockout.LockoutDuration": "जब लॉकआउट होता है, तो उपयोगकर्ता की अवधि लॉक हो जाती है।", "Description:Abp.Identity.Lockout.LockoutDuration": "जब लॉकआउट होता है, तो उपयोगकर्ता की अवधि लॉक हो जाती है।",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "उपयोगकर्ता द्वारा लॉक किए जाने से पहले अनुमति प्राप्त विफल प्रयासों की संख्या, यह मानकर कि लॉक आउट सक्षम है।", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "उपयोगकर्ता द्वारा लॉक किए जाने से पहले अनुमति प्राप्त विफल प्रयासों की संख्या, यह मानकर कि लॉक आउट सक्षम है।",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "उपयोगकर्ता द्वारा उपयोगकर्ता नाम अपडेट किया जा सकता है या नहीं।", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "उपयोगकर्ता द्वारा उपयोगकर्ता नाम अपडेट किया जा सकता है या नहीं।",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "क्या उपयोगकर्ता द्वारा ईमेल को अपडेट किया जा सकता है।" "Description:Abp.Identity.User.IsEmailUpdateEnabled": "क्या उपयोगकर्ता द्वारा ईमेल को अपडेट किया जा सकता है।"
} }
} }

4
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Obavezno malo slovo", "DisplayName:Abp.Identity.Password.RequireLowercase": "Obavezno malo slovo",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Obavezno veliko slovo", "DisplayName:Abp.Identity.Password.RequireUppercase": "Obavezno veliko slovo",
"DisplayName:Abp.Identity.Password.RequireDigit": "Obavezna znamenka", "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.Lockout.AllowedForNewUsers": "Omogućeno za nove korisnike", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Omogućeno za nove korisnike",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaključavanja (sekunde)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaključavanja (sekunde)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maksimalan broj neuspjelih pokušaja pristupa", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maksimalan broj neuspjelih pokušaja pristupa",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Ako lozinke moraju sadržavati mali ASCII znak.", "Description:Abp.Identity.Password.RequireLowercase": "Ako lozinke moraju sadržavati mali ASCII znak.",
"Description:Abp.Identity.Password.RequireUppercase": "Ako lozinke moraju sadržavati veliki ASCII znak.", "Description:Abp.Identity.Password.RequireUppercase": "Ako lozinke moraju sadržavati veliki ASCII znak.",
"Description:Abp.Identity.Password.RequireDigit": "Ako lozinke moraju sadržavati znamenku.", "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.Lockout.AllowedForNewUsers": "Može li se novi korisnik zaključati.", "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.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.", "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.",

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Szükséges kisbetű", "DisplayName:Abp.Identity.Password.RequireLowercase": "Szükséges kisbetű",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Szükséges nagybetű", "DisplayName:Abp.Identity.Password.RequireUppercase": "Szükséges nagybetű",
"DisplayName:Abp.Identity.Password.RequireDigit": "Szükséges számjegy", "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.Lockout.AllowedForNewUsers": "Engedélyezve az új felhasználók számára", "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.LockoutDuration": "A zárolás időtartama (másodpercben)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max sikertelen hozzáférési kísérlet", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max sikertelen hozzáférési kísérlet",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Ha a jelszavaknak kisbetűs ASCII karaktert kell tartalmazniuk.", "Description:Abp.Identity.Password.RequireLowercase": "Ha a jelszavaknak kisbetűs ASCII karaktert kell tartalmazniuk.",
"Description:Abp.Identity.Password.RequireUppercase": "Ha a jelszavaknak nagybetűs ASCII karaktert kell tartalmazniuk.", "Description:Abp.Identity.Password.RequireUppercase": "Ha a jelszavaknak nagybetűs ASCII karaktert kell tartalmazniuk.",
"Description:Abp.Identity.Password.RequireDigit": "Ha a jelszavaknak tartalmazniuk kell egy számjegyet.", "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.Lockout.AllowedForNewUsers": "Egy új felhasználó zárolható-e.", "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.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.", "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.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Meg tudja e módosítani a felhasználónevet a felhasználó?.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Meg tudja e módosítani a felhasználónevet a felhasználó?.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Meg tudja-e módosítani az e-mail címét a felhasználó." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Meg tudja-e módosítani az e-mail címét a felhasználó."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Nauðsynlegt að hafa lágstaf", "DisplayName:Abp.Identity.Password.RequireLowercase": "Nauðsynlegt að hafa lágstaf",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Nauðsynlegt að hafa hágstaf", "DisplayName:Abp.Identity.Password.RequireUppercase": "Nauðsynlegt að hafa hágstaf",
"DisplayName:Abp.Identity.Password.RequireDigit": "Nauðsynlegt að hafa tölustaf", "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.Lockout.AllowedForNewUsers": "Virkt fyrir nýja notendur", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Virkt fyrir nýja notendur",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lengd lokunar (sekúndur)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Lengd lokunar (sekúndur)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Hámarks misheppnaðra aðgangsstilrauna", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Hámarks misheppnaðra aðgangsstilrauna",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Ef lykilorð verða að innihalda lágstaf ASCII staf.", "Description:Abp.Identity.Password.RequireLowercase": "Ef lykilorð verða að innihalda lágstaf ASCII staf.",
"Description:Abp.Identity.Password.RequireUppercase": "Ef lykilorð verða að innihalda hástafi ASCII staf.", "Description:Abp.Identity.Password.RequireUppercase": "Ef lykilorð verða að innihalda hástafi ASCII staf.",
"Description:Abp.Identity.Password.RequireDigit": "Ef lykilorð verða að innihalda tölustaf.", "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.Lockout.AllowedForNewUsers": "Hvort hægt sé að læsa nýjum notanda.", "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.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.", "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.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Hvort notandi geti uppfært notanda nafnið sitt.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Hvort notandi geti uppfært notanda nafnið sitt.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Hvort notandinn getur uppfært tölvupóstfangið sitt." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Hvort notandinn getur uppfært tölvupóstfangið sitt."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Carattere minuscolo richiesto", "DisplayName:Abp.Identity.Password.RequireLowercase": "Carattere minuscolo richiesto",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Carattere maiuscolo obbligatorio", "DisplayName:Abp.Identity.Password.RequireUppercase": "Carattere maiuscolo obbligatorio",
"DisplayName:Abp.Identity.Password.RequireDigit": "Cifra richiesta", "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.Lockout.AllowedForNewUsers": "Abilitato per i nuovi utenti", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Abilitato per i nuovi utenti",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Durata blocco (secondi)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Durata blocco (secondi)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Numero massimo di tentativi di accesso non riusciti", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Numero massimo di tentativi di accesso non riusciti",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Se la password deve contenere un carattere ASCII minuscolo.", "Description:Abp.Identity.Password.RequireLowercase": "Se la password deve contenere un carattere ASCII minuscolo.",
"Description:Abp.Identity.Password.RequireUppercase": "Se la password deve contenere un carattere ASCII maiuscolo.", "Description:Abp.Identity.Password.RequireUppercase": "Se la password deve contenere un carattere ASCII maiuscolo.",
"Description:Abp.Identity.Password.RequireDigit": "Se la password devono contenere una cifra.", "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.Lockout.AllowedForNewUsers": "Se un nuovo utente può essere bloccato.", "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.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.", "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.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Se il nome utente può essere aggiornato dall'utente.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Se il nome utente può essere aggiornato dall'utente.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Se l'email può essere aggiornata dall'utente." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Se l'email può essere aggiornata dall'utente."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Vereist kleine letter", "DisplayName:Abp.Identity.Password.RequireLowercase": "Vereist kleine letter",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Vereist hoofdletter", "DisplayName:Abp.Identity.Password.RequireUppercase": "Vereist hoofdletter",
"DisplayName:Abp.Identity.Password.RequireDigit": "Vereist cijfer", "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.Lockout.AllowedForNewUsers": "Ingeschakeld voor nieuwe gebruikers", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Ingeschakeld voor nieuwe gebruikers",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Blokkeringsduur (seconden)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Blokkeringsduur (seconden)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max mislukte toegangspogingen", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max mislukte toegangspogingen",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Als wachtwoorden een ASCII-teken in kleine letters moeten bevatten.", "Description:Abp.Identity.Password.RequireLowercase": "Als wachtwoorden een ASCII-teken in kleine letters moeten bevatten.",
"Description:Abp.Identity.Password.RequireUppercase": "Als wachtwoorden een ASCII-teken in hoofdletters moeten bevatten.", "Description:Abp.Identity.Password.RequireUppercase": "Als wachtwoorden een ASCII-teken in hoofdletters moeten bevatten.",
"Description:Abp.Identity.Password.RequireDigit": "Als wachtwoorden een cijfer moeten bevatten.", "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.Lockout.AllowedForNewUsers": "Of een nieuwe gebruiker kan worden geblokkeerd.", "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.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.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Het aantal mislukte toegangspogingen dat is toegestaan voordat een gebruiker wordt geblokkeerd, ervan uitgaande dat blokkering is ingeschakeld.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Of de gebruikersnaam kan worden bijgewerkt door de gebruiker.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Of de gebruikersnaam kan worden bijgewerkt door de gebruiker.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Of de e-mail door de gebruiker kan worden veranderd." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Of de e-mail door de gebruiker kan worden veranderd."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Wymagana mała litera", "DisplayName:Abp.Identity.Password.RequireLowercase": "Wymagana mała litera",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Wymagana wielka litera", "DisplayName:Abp.Identity.Password.RequireUppercase": "Wymagana wielka litera",
"DisplayName:Abp.Identity.Password.RequireDigit": "Wymagana cyfra", "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.Lockout.AllowedForNewUsers": "Włączone dla nowych użytkowników", "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.LockoutDuration": "Czas trwania blokady (sekundy)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maksymalna liczba nieudanych prób dostępu", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maksymalna liczba nieudanych prób dostępu",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Jeśli hasła muszą zawierać małą literę ASCII.", "Description:Abp.Identity.Password.RequireLowercase": "Jeśli hasła muszą zawierać małą literę ASCII.",
"Description:Abp.Identity.Password.RequireUppercase": "Jeśli hasła muszą zawierać wielką literę ASCII.", "Description:Abp.Identity.Password.RequireUppercase": "Jeśli hasła muszą zawierać wielką literę ASCII.",
"Description:Abp.Identity.Password.RequireDigit": "Jeśli hasła muszą zawierać cyfrę.", "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.Lockout.AllowedForNewUsers": "Czy można zablokować nowego użytkownika.", "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.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.", "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.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Czy nazwa użytkownika może być aktualizowana przez użytkownika.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Czy nazwa użytkownika może być aktualizowana przez użytkownika.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Czy wiadomość e-mail może zostać zaktualizowana przez użytkownika." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Czy wiadomość e-mail może zostać zaktualizowana przez użytkownika."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Caractere minúsculo obrigatório", "DisplayName:Abp.Identity.Password.RequireLowercase": "Caractere minúsculo obrigatório",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Caractere maiúsculo obrigatório", "DisplayName:Abp.Identity.Password.RequireUppercase": "Caractere maiúsculo obrigatório",
"DisplayName:Abp.Identity.Password.RequireDigit": "Dígito requerido", "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.Lockout.AllowedForNewUsers": "Habilitado para novos usuários", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Habilitado para novos usuários",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Duração do bloqueio (segundos)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Duração do bloqueio (segundos)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Máximo de tentativas de acesso malsucedidas", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Máximo de tentativas de acesso malsucedidas",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Se as senhas devem conter um caractere ASCII minúsculo.", "Description:Abp.Identity.Password.RequireLowercase": "Se as senhas devem conter um caractere ASCII minúsculo.",
"Description:Abp.Identity.Password.RequireUppercase": "Se as senhas devem conter um caractere ASCII maiúsculo.", "Description:Abp.Identity.Password.RequireUppercase": "Se as senhas devem conter um caractere ASCII maiúsculo.",
"Description:Abp.Identity.Password.RequireDigit": "Se as senhas devem conter um dígito.", "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.Lockout.AllowedForNewUsers": "Se um novo usuário pode ser bloqueado.", "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.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.", "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.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Se o nome de usuário pode ser atualizado pelo usuário.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Se o nome de usuário pode ser atualizado pelo usuário.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Se o e-mail pode ser atualizado pelo usuário." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Se o e-mail pode ser atualizado pelo usuário."
} }
} }

4
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Numărul de caractere", "DisplayName:Abp.Identity.Password.RequireLowercase": "Numărul de caractere",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Numărul de caractere cu majusculă", "DisplayName:Abp.Identity.Password.RequireUppercase": "Numărul de caractere cu majusculă",
"DisplayName:Abp.Identity.Password.RequireDigit": "Numărul de cifre", "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.Lockout.AllowedForNewUsers": "Activat pentru noi utilizatori", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Activat pentru noi utilizatori",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Durata blocării (secunde)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Durata blocării (secunde)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Numărul maxim de încercări de acces eşuate", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Numărul maxim de încercări de acces eşuate",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Dacă parolele trebuie să conţină un caracter ASCII.", "Description:Abp.Identity.Password.RequireLowercase": "Dacă parolele trebuie să conţină un caracter ASCII.",
"Description:Abp.Identity.Password.RequireUppercase": "Dacă parolele trebuie să conţină un caracter ASCII cu majusculă.", "Description:Abp.Identity.Password.RequireUppercase": "Dacă parolele trebuie să conţină un caracter ASCII cu majusculă.",
"Description:Abp.Identity.Password.RequireDigit": "Dacă parolele trebuie să conţină o cifră.", "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.Lockout.AllowedForNewUsers": "Dacă un utilizator nou poate fi blocat.", "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.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ă.", "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ă.",

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Обязательный символ нижнего регистра", "DisplayName:Abp.Identity.Password.RequireLowercase": "Обязательный символ нижнего регистра",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Обязательный символ верхнего регистра", "DisplayName:Abp.Identity.Password.RequireUppercase": "Обязательный символ верхнего регистра",
"DisplayName:Abp.Identity.Password.RequireDigit": "Требуемая цифра", "DisplayName:Abp.Identity.Password.RequireDigit": "Требуемая цифра",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Требовать периодическое изменение пароля",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "Периодичность изменения пароля (дни)",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Включено для новых пользователей", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Включено для новых пользователей",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Длительность блокировки (секунды)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Длительность блокировки (секунды)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Максимальное количество неудачных попыток доступа", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Максимальное количество неудачных попыток доступа",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Если пароли должны содержать строчные символы ASCII.", "Description:Abp.Identity.Password.RequireLowercase": "Если пароли должны содержать строчные символы ASCII.",
"Description:Abp.Identity.Password.RequireUppercase": "Если пароли должны содержать символ ASCII в верхнем регистре.", "Description:Abp.Identity.Password.RequireUppercase": "Если пароли должны содержать символ ASCII в верхнем регистре.",
"Description:Abp.Identity.Password.RequireDigit": "Если пароли должны содержать цифру.", "Description:Abp.Identity.Password.RequireDigit": "Если пароли должны содержать цифру.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "Если пользователи должны периодически изменять пароль.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "Периодичность изменения пароля (дни).",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Может ли новый пользователь быть заблокирован.", "Description:Abp.Identity.Lockout.AllowedForNewUsers": "Может ли новый пользователь быть заблокирован.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Длительность блокировки пользователя.", "Description:Abp.Identity.Lockout.LockoutDuration": "Длительность блокировки пользователя.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Число неудачных попыток доступа, после которых пользователь будет заблокирован.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Число неудачных попыток доступа, после которых пользователь будет заблокирован.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Может ли пользователь обновить имя пользователя.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Может ли пользователь обновить имя пользователя.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Может ли электронная почта быть обновлена пользователем." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Может ли электронная почта быть обновлена пользователем."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Požadované malé písmeno", "DisplayName:Abp.Identity.Password.RequireLowercase": "Požadované malé písmeno",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Požadované veľké písmeno", "DisplayName:Abp.Identity.Password.RequireUppercase": "Požadované veľké písmeno",
"DisplayName:Abp.Identity.Password.RequireDigit": "Požadovaná číslica", "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.Lockout.AllowedForNewUsers": "Povolené pre nových používateľov", "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.LockoutDuration": "Trvanie uzamknutia (v sekundách)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maximálny počet neúspešných pokusov o prístup", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maximálny počet neúspešných pokusov o prístup",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Či heslá musia obsahovať malé ASCII písmená.", "Description:Abp.Identity.Password.RequireLowercase": "Či heslá musia obsahovať malé ASCII písmená.",
"Description:Abp.Identity.Password.RequireUppercase": "Či heslá musia obsahovať veľké ASCII písmená.", "Description:Abp.Identity.Password.RequireUppercase": "Či heslá musia obsahovať veľké ASCII písmená.",
"Description:Abp.Identity.Password.RequireDigit": "Či heslá musia obsahovať číslicu.", "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.Lockout.AllowedForNewUsers": "Či môže byť nový používateľ uzamknutý.", "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.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é.", "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é.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Či môže používateľ aktualizovať používateľské meno.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Či môže používateľ aktualizovať používateľské meno.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Či môže používateľ aktualizovať email." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Či môže používateľ aktualizovať email."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Zahtevana mala črka", "DisplayName:Abp.Identity.Password.RequireLowercase": "Zahtevana mala črka",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Zahtevana velika črka", "DisplayName:Abp.Identity.Password.RequireUppercase": "Zahtevana velika črka",
"DisplayName:Abp.Identity.Password.RequireDigit": "Zahtevana številka", "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.Lockout.AllowedForNewUsers": "Omogočeno za nove uporabnike", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Omogočeno za nove uporabnike",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaklepa(sekund)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaklepa(sekund)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Največje število neuspešnih poskusov dostopa", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Največje število neuspešnih poskusov dostopa",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Ali morajo gesla vsebovati mali ASCII znak.", "Description:Abp.Identity.Password.RequireLowercase": "Ali morajo gesla vsebovati mali ASCII znak.",
"Description:Abp.Identity.Password.RequireUppercase": "Ali morajo gesla vsebovati veliki ASCII znak.", "Description:Abp.Identity.Password.RequireUppercase": "Ali morajo gesla vsebovati veliki ASCII znak.",
"Description:Abp.Identity.Password.RequireDigit": "Ali morajo gesla vsebovati številko.", "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.Lockout.AllowedForNewUsers": "Ali se nov uporabnik lahko zaklene.", "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.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.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Število neuspelih poskusov dostopa ki so dovoljeni, preden se uporabnik zaklene, ob predpostavki, da je zaklepanje omogočeno.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Ali lahko uporabnik posodobi uporabniško ime.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Ali lahko uporabnik posodobi uporabniško ime.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Ali lahko uporabnik posodobi e-poštni naslov." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Ali lahko uporabnik posodobi e-poštni naslov."
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Küçük harf gerekli", "DisplayName:Abp.Identity.Password.RequireLowercase": "Küçük harf gerekli",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Büyük harf gerekli", "DisplayName:Abp.Identity.Password.RequireUppercase": "Büyük harf gerekli",
"DisplayName:Abp.Identity.Password.RequireDigit": "Rakam gerekli", "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.Lockout.AllowedForNewUsers": "Yeni kullanıcılar için aktif", "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.LockoutDuration": "Kilitli kalma süresi (saniye)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maksimum başarısız giriş denemesi", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maksimum başarısız giriş denemesi",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Parolaların küçük harfli bir ASCII karakteri içermesi gerekiyorsa.", "Description:Abp.Identity.Password.RequireLowercase": "Parolaların küçük harfli bir ASCII karakteri içermesi gerekiyorsa.",
"Description:Abp.Identity.Password.RequireUppercase": "Parolaların büyük harfli bir ASCII karakteri içermesi gerekiyorsa.", "Description:Abp.Identity.Password.RequireUppercase": "Parolaların büyük harfli bir ASCII karakteri içermesi gerekiyorsa.",
"Description:Abp.Identity.Password.RequireDigit": "Parolaların bir rakam içermesi gerekiyorsa.", "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.Lockout.AllowedForNewUsers": "Yeni kullanıcılar kilitlenebilir.", "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.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ı.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Kilitleme etkin olduğunda, kullanıcıya kilitlenmeden önce izin verilen başarısız giriş sayısı.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Kullanıcı adının, kullanıcının kendisi tarafından güncellenebilirliği.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Kullanıcı adının, kullanıcının kendisi tarafından güncellenebilirliği.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "E-posta alanının, kullanıcının kendisi tarafından güncellenebilirliği" "Description:Abp.Identity.User.IsEmailUpdateEnabled": "E-posta alanının, kullanıcının kendisi tarafından güncellenebilirliği"
} }
} }

6
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "Ký tự viết thường bắt buộc", "DisplayName:Abp.Identity.Password.RequireLowercase": "Ký tự viết thường bắt buộc",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Ký tự viết hoa bắt buộc", "DisplayName:Abp.Identity.Password.RequireUppercase": "Ký tự viết hoa bắt buộc",
"DisplayName:Abp.Identity.Password.RequireDigit": "Chữ số bắt buộc", "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.Lockout.AllowedForNewUsers": "Đã bật cho người dùng mới", "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.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", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Số lần truy cập không thành công tối đa",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "Nếu mật khẩu phải chứa ký tự ASCII viết thường.", "Description:Abp.Identity.Password.RequireLowercase": "Nếu mật khẩu phải chứa ký tự ASCII viết thường.",
"Description:Abp.Identity.Password.RequireUppercase": "Nếu mật khẩu phải chứa ký tự ASCII viết hoa.", "Description:Abp.Identity.Password.RequireUppercase": "Nếu mật khẩu phải chứa ký tự ASCII viết hoa.",
"Description:Abp.Identity.Password.RequireDigit": "Nếu mật khẩu phải chứa một chữ số.", "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.Lockout.AllowedForNewUsers": "Người dùng mới có thể bị khóa hay khô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.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.", "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.",
@ -110,4 +114,4 @@
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Người dùng có thể cập nhật tên người dùng hay không.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Người dùng có thể cập nhật tên người dùng hay không.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Người dùng có thể cập nhật email hay không." "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Người dùng có thể cập nhật email hay không."
} }
} }

4
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "要求小写字母", "DisplayName:Abp.Identity.Password.RequireLowercase": "要求小写字母",
"DisplayName:Abp.Identity.Password.RequireUppercase": "要求大写字母", "DisplayName:Abp.Identity.Password.RequireUppercase": "要求大写字母",
"DisplayName:Abp.Identity.Password.RequireDigit": "要求数字", "DisplayName:Abp.Identity.Password.RequireDigit": "要求数字",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "强制用户定期更改密码",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "密码更改周期(天)",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "锁定时间(秒)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "锁定时间(秒)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大失败访问尝试次数", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大失败访问尝试次数",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "密码是否必须包含小写字母.", "Description:Abp.Identity.Password.RequireLowercase": "密码是否必须包含小写字母.",
"Description:Abp.Identity.Password.RequireUppercase": "密码是否必须包含大写字母.", "Description:Abp.Identity.Password.RequireUppercase": "密码是否必须包含大写字母.",
"Description:Abp.Identity.Password.RequireDigit": "密码是否必须包含数字.", "Description:Abp.Identity.Password.RequireDigit": "密码是否必须包含数字.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "是否强制用户定期更改密码.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "用户必须更改密码的周期(天).",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户被锁定.", "Description:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户被锁定.",
"Description:Abp.Identity.Lockout.LockoutDuration": "当锁定发生时用户被的锁定的时间(秒).", "Description:Abp.Identity.Lockout.LockoutDuration": "当锁定发生时用户被的锁定的时间(秒).",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "如果启用锁定, 当用户被锁定前失败的访问尝试次数.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "如果启用锁定, 当用户被锁定前失败的访问尝试次数.",

4
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json

@ -87,6 +87,8 @@
"DisplayName:Abp.Identity.Password.RequireLowercase": "需小寫字元", "DisplayName:Abp.Identity.Password.RequireLowercase": "需小寫字元",
"DisplayName:Abp.Identity.Password.RequireUppercase": "需大寫字元", "DisplayName:Abp.Identity.Password.RequireUppercase": "需大寫字元",
"DisplayName:Abp.Identity.Password.RequireDigit": "需要數字", "DisplayName:Abp.Identity.Password.RequireDigit": "需要數字",
"DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "強制使用者定期更改密碼",
"DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "密碼更改週期(天)",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "允許新的使用者", "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "允許新的使用者",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "被鎖定期間(秒)", "DisplayName:Abp.Identity.Lockout.LockoutDuration": "被鎖定期間(秒)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大登入次數嘗試", "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大登入次數嘗試",
@ -101,6 +103,8 @@
"Description:Abp.Identity.Password.RequireLowercase": "須包含小寫字母.", "Description:Abp.Identity.Password.RequireLowercase": "須包含小寫字母.",
"Description:Abp.Identity.Password.RequireUppercase": "須包含大寫字母.", "Description:Abp.Identity.Password.RequireUppercase": "須包含大寫字母.",
"Description:Abp.Identity.Password.RequireDigit": "密碼必須包含數字.", "Description:Abp.Identity.Password.RequireDigit": "密碼必須包含數字.",
"Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "強制使用者定期更改密碼.",
"Description:Abp.Identity.Password.PasswordChangePeriodDays": "密碼更改週期(天).",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "使用者是否會被鎖定.", "Description:Abp.Identity.Lockout.AllowedForNewUsers": "使用者是否會被鎖定.",
"Description:Abp.Identity.Lockout.LockoutDuration": "使用者被鎖定後的時間.", "Description:Abp.Identity.Lockout.LockoutDuration": "使用者被鎖定後的時間.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "當啟用鎖定功能,設定最大嘗試輸入次數,超過後就被鎖定.", "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "當啟用鎖定功能,設定最大嘗試輸入次數,超過後就被鎖定.",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Settings/IdentitySettingNames.cs

@ -14,6 +14,8 @@ public static class IdentitySettingNames
public const string RequireLowercase = PasswordPrefix + ".RequireLowercase"; public const string RequireLowercase = PasswordPrefix + ".RequireLowercase";
public const string RequireUppercase = PasswordPrefix + ".RequireUppercase"; public const string RequireUppercase = PasswordPrefix + ".RequireUppercase";
public const string RequireDigit = PasswordPrefix + ".RequireDigit"; public const string RequireDigit = PasswordPrefix + ".RequireDigit";
public const string ForceUsersToPeriodicallyChangePassword = PasswordPrefix + ".ForceUsersToPeriodicallyChangePassword";
public const string PasswordChangePeriodDays = PasswordPrefix + ".PasswordChangePeriodDays";
} }
public static class Lockout public static class Lockout

14
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentitySettingDefinitionProvider.cs

@ -52,6 +52,20 @@ public class AbpIdentitySettingDefinitionProvider : SettingDefinitionProvider
L("Description:Abp.Identity.Password.RequireDigit"), L("Description:Abp.Identity.Password.RequireDigit"),
true), true),
new SettingDefinition(
IdentitySettingNames.Password.ForceUsersToPeriodicallyChangePassword,
false.ToString(),
L("DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword"),
L("Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword"),
true),
new SettingDefinition(
IdentitySettingNames.Password.PasswordChangePeriodDays,
0.ToString(),
L("DisplayName:Abp.Identity.Password.PasswordChangePeriodDays"),
L("Description:Abp.Identity.Password.PasswordChangePeriodDays"),
true),
new SettingDefinition( new SettingDefinition(
IdentitySettingNames.Lockout.AllowedForNewUsers, IdentitySettingNames.Lockout.AllowedForNewUsers,
true.ToString(), true.ToString(),

10
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs

@ -122,6 +122,11 @@ public class IdentityUser : FullAuditedAggregateRoot<Guid>, IUser, IHasEntityVer
/// </summary> /// </summary>
public virtual int EntityVersion { get; protected set; } public virtual int EntityVersion { get; protected set; }
/// <summary>
/// Gets or sets the last password change time for the user.
/// </summary>
public virtual DateTimeOffset? LastPasswordChangeTime { get; protected set; }
//TODO: Can we make collections readonly collection, which will provide encapsulation. But... can work for all ORMs? //TODO: Can we make collections readonly collection, which will provide encapsulation. But... can work for all ORMs?
/// <summary> /// <summary>
@ -378,6 +383,11 @@ public class IdentityUser : FullAuditedAggregateRoot<Guid>, IUser, IHasEntityVer
ShouldChangePasswordOnNextLogin = shouldChangePasswordOnNextLogin; ShouldChangePasswordOnNextLogin = shouldChangePasswordOnNextLogin;
} }
public virtual void SetLastPasswordChangeTime(DateTimeOffset? lastPasswordChangeTime)
{
LastPasswordChangeTime = lastPasswordChangeTime;
}
public override string ToString() public override string ToString()
{ {
return $"{base.ToString()}, UserName = {UserName}"; return $"{base.ToString()}, UserName = {UserName}";

22
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs

@ -13,6 +13,7 @@ using Volo.Abp.Domain.Services;
using Volo.Abp.Identity.Settings; using Volo.Abp.Identity.Settings;
using Volo.Abp.Settings; using Volo.Abp.Settings;
using Volo.Abp.Threading; using Volo.Abp.Threading;
using Volo.Abp.Timing;
using Volo.Abp.Uow; using Volo.Abp.Uow;
namespace Volo.Abp.Identity; namespace Volo.Abp.Identity;
@ -253,4 +254,25 @@ public class IdentityUserManager : UserManager<IdentityUser>, IDomainService
return await UpdateUserAsync(user); return await UpdateUserAsync(user);
} }
public virtual async Task<bool> ShouldPeriodicallyChangePasswordAsync(IdentityUser user)
{
Check.NotNull(user, nameof(user));
if (user.PasswordHash.IsNullOrWhiteSpace())
{
return false;
}
var forceUsersToPeriodicallyChangePassword = await SettingProvider.GetAsync<bool>(IdentitySettingNames.Password.ForceUsersToPeriodicallyChangePassword);
if (!forceUsersToPeriodicallyChangePassword)
{
return false;
}
var lastPasswordChangeTime = user.LastPasswordChangeTime ?? DateTime.SpecifyKind(user.CreationTime, DateTimeKind.Utc);
var passwordChangePeriodDays = await SettingProvider.GetAsync<int>(IdentitySettingNames.Password.PasswordChangePeriodDays);
return passwordChangePeriodDays > 0 && lastPasswordChangeTime.AddDays(passwordChangePeriodDays) < DateTime.UtcNow;
}
} }

3
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs

@ -12,6 +12,7 @@ using Volo.Abp.Data;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.Abp.Guids; using Volo.Abp.Guids;
using Volo.Abp.Timing;
namespace Volo.Abp.Identity; namespace Volo.Abp.Identity;
@ -268,6 +269,8 @@ public class IdentityUserStore :
user.PasswordHash = passwordHash; user.PasswordHash = passwordHash;
user.SetLastPasswordChangeTime(DateTime.UtcNow);
return Task.CompletedTask; return Task.CompletedTask;
} }

7
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/AbpIdentityDomainTestModule.cs

@ -3,10 +3,12 @@ using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore;
using Volo.Abp.Identity.Localization; using Volo.Abp.Identity.Localization;
using Volo.Abp.Identity.Settings;
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement;
using Volo.Abp.PermissionManagement.Identity; using Volo.Abp.PermissionManagement.Identity;
using Volo.Abp.Settings;
using Volo.Abp.Threading; using Volo.Abp.Threading;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
using Volo.Abp.Uow; using Volo.Abp.Uow;
@ -49,6 +51,11 @@ public class AbpIdentityDomainTestModule : AbpModule
{ {
options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
}); });
Configure<AbpSettingOptions>(options =>
{
options.ValueProviders.Add<TestSettingValueProvider>();
});
} }
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)

41
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs

@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Shouldly; using Shouldly;
using Volo.Abp.Identity.Settings;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Xunit; using Xunit;
@ -214,6 +215,40 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase
} }
} }
[Fact]
public async Task ShouldPeriodicallyChangePasswordAsync_Return_False()
{
var user = CreateRandomUser();
AddPeriodicallyChangePasswordSettings();
(await _identityUserManager.CreateAsync(user)).CheckErrors();
(await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user)).ShouldBeFalse();
await _identityUserManager.AddPasswordAsync(user, IdentityDataSeedContributor.AdminPasswordDefaultValue);
(await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user)).ShouldBeFalse();
user.CreationTime = DateTime.Now;
user.SetLastPasswordChangeTime(null);
(await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user)).ShouldBeFalse();
}
[Fact]
public async Task ShouldPeriodicallyChangePasswordAsync_Return_True()
{
var user = CreateRandomUser();
AddPeriodicallyChangePasswordSettings();
(await _identityUserManager.CreateAsync(user)).CheckErrors();
await _identityUserManager.AddPasswordAsync(user, IdentityDataSeedContributor.AdminPasswordDefaultValue);
user.SetLastPasswordChangeTime(DateTime.UtcNow.AddDays(-3));
(await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user)).ShouldBeTrue();
user.CreationTime = DateTime.Now.AddDays(-3);
user.SetLastPasswordChangeTime(null);
(await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user)).ShouldBeTrue();
}
private async Task CreateRandomDefaultRoleAsync() private async Task CreateRandomDefaultRoleAsync()
{ {
await _identityRoleRepository.InsertAsync( await _identityRoleRepository.InsertAsync(
@ -235,4 +270,10 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase
Guid.NewGuid().ToString() + "@abp.io" Guid.NewGuid().ToString() + "@abp.io"
); );
} }
private static void AddPeriodicallyChangePasswordSettings()
{
TestSettingValueProvider.AddSetting(IdentitySettingNames.Password.PasswordChangePeriodDays, 2.ToString());
TestSettingValueProvider.AddSetting(IdentitySettingNames.Password.ForceUsersToPeriodicallyChangePassword, true.ToString());
}
} }

31
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/TestSettingValueProvider.cs

@ -0,0 +1,31 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Settings;
namespace Volo.Abp.Identity;
public class TestSettingValueProvider : ISettingValueProvider, ITransientDependency
{
public const string ProviderName = "Test";
private readonly static Dictionary<string, string> Values = new ();
public string Name => ProviderName;
public static void AddSetting(string name, string value)
{
Values[name] = value;
}
public Task<string> GetOrNullAsync(SettingDefinition setting)
{
return Task.FromResult(Values.GetOrDefault(setting.Name));
}
public Task<List<SettingValue>> GetAllAsync(SettingDefinition[] settings)
{
return Task.FromResult(settings.Select(x => new SettingValue(x.Name, Values.GetOrDefault(x.Name))).ToList());
}
}

47
modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpResourceOwnerPasswordValidator.cs

@ -17,8 +17,11 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Identity; using Volo.Abp.Identity;
using Volo.Abp.Identity.Settings;
using Volo.Abp.IdentityServer.Localization; using Volo.Abp.IdentityServer.Localization;
using Volo.Abp.Security.Claims; using Volo.Abp.Security.Claims;
using Volo.Abp.Settings;
using Volo.Abp.Timing;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Volo.Abp.Validation; using Volo.Abp.Validation;
using IdentityUser = Volo.Abp.Identity.IdentityUser; using IdentityUser = Volo.Abp.Identity.IdentityUser;
@ -28,7 +31,7 @@ namespace Volo.Abp.IdentityServer.AspNetIdentity;
public class AbpResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator public class AbpResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
{ {
protected SignInManager<IdentityUser> SignInManager { get; } protected SignInManager<IdentityUser> SignInManager { get; }
protected UserManager<IdentityUser> UserManager { get; } protected IdentityUserManager UserManager { get; }
protected IdentitySecurityLogManager IdentitySecurityLogManager { get; } protected IdentitySecurityLogManager IdentitySecurityLogManager { get; }
protected ILogger<ResourceOwnerPasswordValidator<IdentityUser>> Logger { get; } protected ILogger<ResourceOwnerPasswordValidator<IdentityUser>> Logger { get; }
protected IStringLocalizer<AbpIdentityServerResource> Localizer { get; } protected IStringLocalizer<AbpIdentityServerResource> Localizer { get; }
@ -36,15 +39,18 @@ public class AbpResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
protected AbpIdentityOptions AbpIdentityOptions { get; } protected AbpIdentityOptions AbpIdentityOptions { get; }
protected IOptions<IdentityOptions> IdentityOptions { get; } protected IOptions<IdentityOptions> IdentityOptions { get; }
protected ISettingProvider SettingProvider { get; }
public AbpResourceOwnerPasswordValidator( public AbpResourceOwnerPasswordValidator(
UserManager<IdentityUser> userManager, IdentityUserManager userManager,
SignInManager<IdentityUser> signInManager, SignInManager<IdentityUser> signInManager,
IdentitySecurityLogManager identitySecurityLogManager, IdentitySecurityLogManager identitySecurityLogManager,
ILogger<ResourceOwnerPasswordValidator<IdentityUser>> logger, ILogger<ResourceOwnerPasswordValidator<IdentityUser>> logger,
IStringLocalizer<AbpIdentityServerResource> localizer, IStringLocalizer<AbpIdentityServerResource> localizer,
IOptions<AbpIdentityOptions> abpIdentityOptions, IOptions<AbpIdentityOptions> abpIdentityOptions,
IServiceScopeFactory serviceScopeFactory, IServiceScopeFactory serviceScopeFactory,
IOptions<IdentityOptions> identityOptions) IOptions<IdentityOptions> identityOptions,
ISettingProvider settingProvider)
{ {
UserManager = userManager; UserManager = userManager;
SignInManager = signInManager; SignInManager = signInManager;
@ -54,6 +60,7 @@ public class AbpResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
ServiceScopeFactory = serviceScopeFactory; ServiceScopeFactory = serviceScopeFactory;
AbpIdentityOptions = abpIdentityOptions.Value; AbpIdentityOptions = abpIdentityOptions.Value;
IdentityOptions = identityOptions; IdentityOptions = identityOptions;
SettingProvider = settingProvider;
} }
/// <summary> /// <summary>
@ -129,6 +136,12 @@ public class AbpResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
return; return;
} }
if (await UserManager.ShouldPeriodicallyChangePasswordAsync(user))
{
await HandlePeriodicallyChangePasswordAsync(context, user, context.Password);
return;
}
errorDescription = Localizer["LoginIsNotAllowed"]; errorDescription = Localizer["LoginIsNotAllowed"];
} }
else else
@ -201,12 +214,22 @@ public class AbpResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
} }
protected virtual async Task HandleShouldChangePasswordOnNextLoginAsync(ResourceOwnerPasswordValidationContext context, IdentityUser user, string currentPassword) protected virtual async Task HandleShouldChangePasswordOnNextLoginAsync(ResourceOwnerPasswordValidationContext context, IdentityUser user, string currentPassword)
{
await HandlerChangePasswordAsync(context, user, currentPassword, ChangePasswordType.ShouldChangePasswordOnNextLogin);
}
protected virtual async Task HandlePeriodicallyChangePasswordAsync(ResourceOwnerPasswordValidationContext context, IdentityUser user, string currentPassword)
{
await HandlerChangePasswordAsync(context, user, currentPassword, ChangePasswordType.PeriodicallyChangePassword);
}
protected virtual async Task HandlerChangePasswordAsync(ResourceOwnerPasswordValidationContext context, IdentityUser user, string currentPassword, ChangePasswordType changePasswordType)
{ {
var changePasswordToken = context.Request?.Raw?["ChangePasswordToken"]; var changePasswordToken = context.Request?.Raw?["ChangePasswordToken"];
var newPassword = context.Request?.Raw?["NewPassword"]; var newPassword = context.Request?.Raw?["NewPassword"];
if (!changePasswordToken.IsNullOrWhiteSpace() && !currentPassword.IsNullOrWhiteSpace() && !newPassword.IsNullOrWhiteSpace()) if (!changePasswordToken.IsNullOrWhiteSpace() && !currentPassword.IsNullOrWhiteSpace() && !newPassword.IsNullOrWhiteSpace())
{ {
if (await UserManager.VerifyUserTokenAsync(user, TokenOptions.DefaultProvider, nameof(IdentityUser.ShouldChangePasswordOnNextLogin), changePasswordToken)) if (await UserManager.VerifyUserTokenAsync(user, TokenOptions.DefaultProvider, changePasswordType.ToString(), changePasswordToken))
{ {
var changePasswordResult = await UserManager.ChangePasswordAsync(user, currentPassword, newPassword); var changePasswordResult = await UserManager.ChangePasswordAsync(user, currentPassword, newPassword);
if (changePasswordResult.Succeeded) if (changePasswordResult.Succeeded)
@ -219,7 +242,11 @@ public class AbpResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
ClientId = await FindClientIdAsync(context) ClientId = await FindClientIdAsync(context)
}); });
user.SetShouldChangePasswordOnNextLogin(false); if (changePasswordType == ChangePasswordType.ShouldChangePasswordOnNextLogin)
{
user.SetShouldChangePasswordOnNextLogin(false);
}
await UserManager.UpdateAsync(user); await UserManager.UpdateAsync(user);
await SetSuccessResultAsync(context, user); await SetSuccessResultAsync(context, user);
} }
@ -237,12 +264,12 @@ public class AbpResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
} }
else else
{ {
Logger.LogInformation("Authentication failed for username: {username}, reason: {ShouldChangePasswordOnNextLogin}", context.UserName, nameof(user.ShouldChangePasswordOnNextLogin)); Logger.LogInformation($"Authentication failed for username: {{{context.UserName}}}, reason: {{{changePasswordType.ToString()}}}");
context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, nameof(user.ShouldChangePasswordOnNextLogin), context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, nameof(user.ShouldChangePasswordOnNextLogin),
new Dictionary<string, object>() new Dictionary<string, object>()
{ {
{"userId", user.Id}, {"userId", user.Id},
{"changePasswordToken", await UserManager.GenerateUserTokenAsync(user, TokenOptions.DefaultProvider, nameof(IdentityUser.ShouldChangePasswordOnNextLogin))} {"changePasswordToken", await UserManager.GenerateUserTokenAsync(user, TokenOptions.DefaultProvider, changePasswordType.ToString())}
}); });
await IdentitySecurityLogManager.SaveAsync(new IdentitySecurityLogContext await IdentitySecurityLogManager.SaveAsync(new IdentitySecurityLogContext
@ -328,4 +355,10 @@ public class AbpResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
return Task.CompletedTask; return Task.CompletedTask;
} }
public enum ChangePasswordType
{
ShouldChangePasswordOnNextLogin,
PeriodicallyChangePassword
}
} }

39
modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.Password.cs

@ -12,7 +12,9 @@ using OpenIddict.Abstractions;
using OpenIddict.Server.AspNetCore; using OpenIddict.Server.AspNetCore;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Identity; using Volo.Abp.Identity;
using Volo.Abp.Identity.Settings;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using Volo.Abp.Settings;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Volo.Abp.Validation; using Volo.Abp.Validation;
using IdentityUser = Volo.Abp.Identity.IdentityUser; using IdentityUser = Volo.Abp.Identity.IdentityUser;
@ -28,6 +30,8 @@ public partial class TokenController
protected IOptions<IdentityOptions> IdentityOptions => LazyServiceProvider.LazyGetRequiredService<IOptions<IdentityOptions>>(); protected IOptions<IdentityOptions> IdentityOptions => LazyServiceProvider.LazyGetRequiredService<IOptions<IdentityOptions>>();
protected IdentitySecurityLogManager IdentitySecurityLogManager => LazyServiceProvider.LazyGetRequiredService<IdentitySecurityLogManager>(); protected IdentitySecurityLogManager IdentitySecurityLogManager => LazyServiceProvider.LazyGetRequiredService<IdentitySecurityLogManager>();
protected ISettingProvider SettingProvider => LazyServiceProvider.LazyGetRequiredService<ISettingProvider>();
[UnitOfWork] [UnitOfWork]
protected virtual async Task<IActionResult> HandlePasswordAsync(OpenIddictRequest request) protected virtual async Task<IActionResult> HandlePasswordAsync(OpenIddictRequest request)
{ {
@ -107,6 +111,11 @@ public partial class TokenController
return await HandleShouldChangePasswordOnNextLoginAsync(request, user, request.Password); return await HandleShouldChangePasswordOnNextLoginAsync(request, user, request.Password);
} }
if (await UserManager.ShouldPeriodicallyChangePasswordAsync(user))
{
return await HandlePeriodicallyChangePasswordAsync(request, user, request.Password);
}
errorDescription = "You are not allowed to login! Your account is inactive or needs to confirm your email/phone number."; errorDescription = "You are not allowed to login! Your account is inactive or needs to confirm your email/phone number.";
} }
else else
@ -216,12 +225,22 @@ public partial class TokenController
} }
protected virtual async Task<IActionResult> HandleShouldChangePasswordOnNextLoginAsync(OpenIddictRequest request, IdentityUser user, string currentPassword) protected virtual async Task<IActionResult> HandleShouldChangePasswordOnNextLoginAsync(OpenIddictRequest request, IdentityUser user, string currentPassword)
{
return await HandleChangePasswordAsync(request, user, currentPassword, ChangePasswordType.ShouldChangePasswordOnNextLogin);
}
protected virtual async Task<IActionResult> HandlePeriodicallyChangePasswordAsync(OpenIddictRequest request, IdentityUser user, string currentPassword)
{
return await HandleChangePasswordAsync(request, user, currentPassword, ChangePasswordType.PeriodicallyChangePassword);
}
protected virtual async Task<IActionResult> HandleChangePasswordAsync(OpenIddictRequest request, IdentityUser user, string currentPassword, ChangePasswordType changePasswordType)
{ {
var changePasswordToken = request.GetParameter("ChangePasswordToken")?.ToString(); var changePasswordToken = request.GetParameter("ChangePasswordToken")?.ToString();
var newPassword = request.GetParameter("NewPassword")?.ToString(); var newPassword = request.GetParameter("NewPassword")?.ToString();
if (!changePasswordToken.IsNullOrWhiteSpace() && !currentPassword.IsNullOrWhiteSpace() && !newPassword.IsNullOrWhiteSpace()) if (!changePasswordToken.IsNullOrWhiteSpace() && !currentPassword.IsNullOrWhiteSpace() && !newPassword.IsNullOrWhiteSpace())
{ {
if (await UserManager.VerifyUserTokenAsync(user, TokenOptions.DefaultProvider, nameof(IdentityUser.ShouldChangePasswordOnNextLogin), changePasswordToken)) if (await UserManager.VerifyUserTokenAsync(user, TokenOptions.DefaultProvider, changePasswordType.ToString(), changePasswordToken))
{ {
var changePasswordResult = await UserManager.ChangePasswordAsync(user, currentPassword, newPassword); var changePasswordResult = await UserManager.ChangePasswordAsync(user, currentPassword, newPassword);
if (changePasswordResult.Succeeded) if (changePasswordResult.Succeeded)
@ -234,7 +253,11 @@ public partial class TokenController
ClientId = request.ClientId ClientId = request.ClientId
}); });
user.SetShouldChangePasswordOnNextLogin(false); if (changePasswordType == ChangePasswordType.ShouldChangePasswordOnNextLogin)
{
user.SetShouldChangePasswordOnNextLogin(false);
}
await UserManager.UpdateAsync(user); await UserManager.UpdateAsync(user);
return await SetSuccessResultAsync(request, user); return await SetSuccessResultAsync(request, user);
} }
@ -265,7 +288,7 @@ public partial class TokenController
} }
else else
{ {
Logger.LogInformation("Authentication failed for username: {username}, reason: {ShouldChangePasswordOnNextLogin}", request.Username, nameof(user.ShouldChangePasswordOnNextLogin)); Logger.LogInformation($"Authentication failed for username: {{{request.Username}}}, reason: {{{changePasswordType.ToString()}}}");
await IdentitySecurityLogManager.SaveAsync(new IdentitySecurityLogContext await IdentitySecurityLogManager.SaveAsync(new IdentitySecurityLogContext
{ {
@ -279,12 +302,12 @@ public partial class TokenController
items: new Dictionary<string, string> items: new Dictionary<string, string>
{ {
[OpenIddictServerAspNetCoreConstants.Properties.Error] = OpenIddictConstants.Errors.InvalidGrant, [OpenIddictServerAspNetCoreConstants.Properties.Error] = OpenIddictConstants.Errors.InvalidGrant,
[OpenIddictServerAspNetCoreConstants.Properties.ErrorDescription] = nameof(IdentityUser.ShouldChangePasswordOnNextLogin) [OpenIddictServerAspNetCoreConstants.Properties.ErrorDescription] = changePasswordType.ToString()
}, },
parameters: new Dictionary<string, object> parameters: new Dictionary<string, object>
{ {
["userId"] = user.Id.ToString("N"), ["userId"] = user.Id.ToString("N"),
["changePasswordToken"] = await UserManager.GenerateUserTokenAsync(user, TokenOptions.DefaultProvider, nameof(IdentityUser.ShouldChangePasswordOnNextLogin)) ["changePasswordToken"] = await UserManager.GenerateUserTokenAsync(user, TokenOptions.DefaultProvider, changePasswordType.ToString())
}); });
return Forbid(properties, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); return Forbid(properties, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme);
@ -321,4 +344,10 @@ public partial class TokenController
await UserManager.GetTwoFactorEnabledAsync(user) && await UserManager.GetTwoFactorEnabledAsync(user) &&
(await UserManager.GetValidTwoFactorProvidersAsync(user)).Count > 0; (await UserManager.GetValidTwoFactorProvidersAsync(user)).Count > 0;
} }
public enum ChangePasswordType
{
ShouldChangePasswordOnNextLogin,
PeriodicallyChangePassword
}
} }

5
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230216095309_Initial.Designer.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230314024329_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations
{ {
[DbContext(typeof(MyProjectNameDbContext))] [DbContext(typeof(MyProjectNameDbContext))]
[Migration("20230216095309_Initial")] [Migration("20230314024329_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -717,6 +717,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

1
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230216095309_Initial.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230314024329_Initial.cs

@ -317,6 +317,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations
AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0), AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false), ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false),
EntityVersion = table.Column<int>(type: "int", nullable: false), EntityVersion = table.Column<int>(type: "int", nullable: false),
LastPasswordChangeTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),

3
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -714,6 +714,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

5
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230216094727_Initial.Designer.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230314024404_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations namespace MyCompanyName.MyProjectName.Migrations
{ {
[DbContext(typeof(MyProjectNameDbContext))] [DbContext(typeof(MyProjectNameDbContext))]
[Migration("20230216094727_Initial")] [Migration("20230314024404_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -717,6 +717,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

1
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230216095438_Initial.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230314024404_Initial.cs

@ -317,6 +317,7 @@ namespace MyCompanyName.MyProjectName.Migrations
AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0), AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false), ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false),
EntityVersion = table.Column<int>(type: "int", nullable: false), EntityVersion = table.Column<int>(type: "int", nullable: false),
LastPasswordChangeTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),

3
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -714,6 +714,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

5
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230216095619_Initial.Designer.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230314024402_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Host.Migrations namespace MyCompanyName.MyProjectName.Host.Migrations
{ {
[DbContext(typeof(MyProjectNameDbContext))] [DbContext(typeof(MyProjectNameDbContext))]
[Migration("20230216095619_Initial")] [Migration("20230314024402_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -717,6 +717,9 @@ namespace MyCompanyName.MyProjectName.Host.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

1
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230216095619_Initial.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230314024402_Initial.cs

@ -317,6 +317,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations
AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0), AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false), ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false),
EntityVersion = table.Column<int>(type: "int", nullable: false), EntityVersion = table.Column<int>(type: "int", nullable: false),
LastPasswordChangeTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),

3
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -714,6 +714,9 @@ namespace MyCompanyName.MyProjectName.Host.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

5
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230216095356_Initial.Designer.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230314024433_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Mvc.Migrations namespace MyCompanyName.MyProjectName.Mvc.Migrations
{ {
[DbContext(typeof(MyProjectNameDbContext))] [DbContext(typeof(MyProjectNameDbContext))]
[Migration("20230216095356_Initial")] [Migration("20230314024433_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -717,6 +717,9 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

1
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230216095356_Initial.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230314024433_Initial.cs

@ -317,6 +317,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations
AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0), AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false), ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false),
EntityVersion = table.Column<int>(type: "int", nullable: false), EntityVersion = table.Column<int>(type: "int", nullable: false),
LastPasswordChangeTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),

3
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -714,6 +714,9 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

5
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230216094625_Initial.Designer.cs → templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230314023936_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations namespace MyCompanyName.MyProjectName.Migrations
{ {
[DbContext(typeof(MyProjectNameDbContext))] [DbContext(typeof(MyProjectNameDbContext))]
[Migration("20230216094625_Initial")] [Migration("20230314023936_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -770,6 +770,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

1
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230216094625_Initial.cs → templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230314023936_Initial.cs

@ -338,6 +338,7 @@ namespace MyCompanyName.MyProjectName.Migrations
AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0), AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false), ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false),
EntityVersion = table.Column<int>(type: "int", nullable: false), EntityVersion = table.Column<int>(type: "int", nullable: false),
LastPasswordChangeTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),

3
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -767,6 +767,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

5
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230216095438_Initial.Designer.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230314024642_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations namespace MyCompanyName.MyProjectName.Migrations
{ {
[DbContext(typeof(AuthServerDbContext))] [DbContext(typeof(AuthServerDbContext))]
[Migration("20230216095438_Initial")] [Migration("20230314024642_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -717,6 +717,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

1
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230216094727_Initial.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230314024642_Initial.cs

@ -317,6 +317,7 @@ namespace MyCompanyName.MyProjectName.Migrations
AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0), AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false), ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false),
EntityVersion = table.Column<int>(type: "int", nullable: false), EntityVersion = table.Column<int>(type: "int", nullable: false),
LastPasswordChangeTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),

3
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs

@ -714,6 +714,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

5
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230216095510_Initial.Designer.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230314024129_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
{ {
[DbContext(typeof(UnifiedDbContext))] [DbContext(typeof(UnifiedDbContext))]
[Migration("20230216095510_Initial")] [Migration("20230314024129_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -717,6 +717,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

1
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230216095510_Initial.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230314024129_Initial.cs

@ -317,6 +317,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0), AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false), ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false),
EntityVersion = table.Column<int>(type: "int", nullable: false), EntityVersion = table.Column<int>(type: "int", nullable: false),
LastPasswordChangeTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),

3
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs

@ -714,6 +714,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

5
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230216095454_Initial.Designer.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230314024104_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations namespace MyCompanyName.MyProjectName.Migrations
{ {
[DbContext(typeof(UnifiedDbContext))] [DbContext(typeof(UnifiedDbContext))]
[Migration("20230216095454_Initial")] [Migration("20230314024104_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -717,6 +717,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

1
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230216095454_Initial.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230314024104_Initial.cs

@ -317,6 +317,7 @@ namespace MyCompanyName.MyProjectName.Migrations
AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0), AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false), ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false),
EntityVersion = table.Column<int>(type: "int", nullable: false), EntityVersion = table.Column<int>(type: "int", nullable: false),
LastPasswordChangeTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),

3
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs

@ -714,6 +714,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("bit") .HasColumnType("bit")

Loading…
Cancel
Save