Merge branch 'dev' into maliming/MongoDbDateTime

pull/10149/head
maliming 4 years ago
commit f1b383f22e

@ -136,8 +136,8 @@ namespace Volo.Abp.Auditing
UserName = CurrentUser.UserName,
ClientId = CurrentClient.Id,
CorrelationId = CorrelationIdProvider.Get(),
//ImpersonatorUserId = AbpSession.ImpersonatorUserId, //TODO: Impersonation system is not available yet!
//ImpersonatorTenantId = AbpSession.ImpersonatorTenantId,
ImpersonatorUserId = CurrentUser.FindImpersonatorUserId(),
ImpersonatorTenantId = CurrentUser.FindImpersonatorTenantId(),
ExecutionTime = Clock.Now
};

@ -1,5 +1,7 @@
using System.IO;
using System.Text.RegularExpressions;
using System.Xml;
using NuGet.Versioning;
using Volo.Abp.Cli.Utils;
using Volo.Abp.DependencyInjection;
@ -9,28 +11,139 @@ namespace Volo.Abp.Cli.ProjectModification
{
public string Find(string solutionFile)
{
var projectFilesUnderSrc = Directory.GetFiles(Path.GetDirectoryName(solutionFile),
"*.csproj",
SearchOption.AllDirectories);
var projectFilesUnderSrc = GetProjectFilesOfSolution(solutionFile);
foreach (var projectFile in projectFilesUnderSrc)
{
var content = File.ReadAllText(projectFile);
var doc = new XmlDocument() { PreserveWhitespace = true };
if (TryParseVersionFromCsprojViaXmlDocument(content, out var s))
{
return s;
}
}
doc.Load(StreamHelper.GenerateStreamFromString(content));
return null;
}
private static bool TryParseVersionFromCsprojViaXmlDocument(string content, out string version)
{
var doc = new XmlDocument() { PreserveWhitespace = true };
using (var stream = StreamHelper.GenerateStreamFromString(content))
{
doc.Load(stream);
var nodes = doc.SelectNodes("/Project/ItemGroup/PackageReference[starts-with(@Include, 'Volo.Abp')]");
var value = nodes?[0]?.Attributes?["Version"]?.Value;
if (value == null)
{
version = null;
return false;
}
version = value;
return true;
}
}
if (value != null)
public static bool TryParseVersionFromCsprojFile(string csprojContent, out string version)
{
try
{
var matches = Regex.Matches(csprojContent,
@"PackageReference\s*Include\s*=\s*\""Volo.Abp(.*?)\""\s*Version\s*=\s*\""(.*?)\""",
RegexOptions.IgnoreCase |
RegexOptions.IgnorePatternWhitespace |
RegexOptions.Singleline | RegexOptions.Multiline);
foreach (Match match in matches)
{
return value;
if (match.Groups.Count > 2)
{
version = match.Groups[2].Value;
return true;
}
}
}
catch
{
//ignored
}
return null;
version = null;
return false;
}
public static bool TryParseSemanticVersionFromCsprojFile(string csprojContent, out SemanticVersion version)
{
try
{
if (TryParseVersionFromCsprojFile(csprojContent, out var versionText))
{
return SemanticVersion.TryParse(versionText, out version);
}
}
catch
{
//ignored
}
version = null;
return false;
}
public static bool TryFind(string solutionFile, out string version)
{
var projectFiles = GetProjectFilesOfSolution(solutionFile);
foreach (var projectFile in projectFiles)
{
var csprojContent = File.ReadAllText(projectFile);
if (TryParseVersionFromCsprojFile(csprojContent, out var parsedVersion))
{
version = parsedVersion;
return true;
}
}
version = null;
return false;
}
public static bool TryFindSemanticVersion(string solutionFile, out SemanticVersion version)
{
var projectFiles = GetProjectFilesOfSolution(solutionFile);
foreach (var projectFile in projectFiles)
{
var csprojContent = File.ReadAllText(projectFile);
if (TryParseSemanticVersionFromCsprojFile(csprojContent, out var parsedVersion))
{
version = parsedVersion;
return true;
}
}
version = null;
return false;
}
//public static bool TryFindSemanticVersion(string solutionFile, out SemanticVersion version)
//{
// if (TryFind(solutionFile, out var versionText))
// {
// return SemanticVersion.TryParse(versionText, out version);
// }
// version = null;
// return false;
//}
private static string[] GetProjectFilesOfSolution(string solutionFile)
{
var solutionDirectory = Path.GetDirectoryName(solutionFile);
if (solutionDirectory == null)
{
return new string[] { };
}
return Directory.GetFiles(solutionDirectory, "*.csproj", SearchOption.AllDirectories);
}
}
}

@ -0,0 +1,70 @@
using Shouldly;
using Volo.Abp.Cli.ProjectModification;
using Xunit;
namespace Volo.Abp.Cli
{
public class ProjectVersionParse_Tests
{
[Fact]
public void Find_Abp_Version()
{
const string csprojContent = "<Project Sdk=\"Microsoft.NET.Sdk\">" +
"<Import Project=\"..\\..\\common.props\" />" +
"<PropertyGroup>" +
"<TargetFramework>net5.0</TargetFramework>" +
"<RootNamespace>Blazoor.EfCore07062034</RootNamespace>" +
"</PropertyGroup>" +
"<ItemGroup>" +
"<ProjectReference Include=\"..\\Blazoor.EfCore07062034.Domain.Shared\\Blazoor.EfCore07062034.Domain.Shared.csproj\" />" +
"</ItemGroup>" +
"<ItemGroup>" +
"< PackageReference Include = \"Volo.Abp.Emailing\" Version = \"4.4.0-rc.1\" />" +
"<PackageReference Include= \"Volo.Abp.PermissionManagement.Domain.Identity\" Version= \"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.IdentityServer.Domain\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.PermissionManagement.Domain.IdentityServer\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.BackgroundJobs.Domain\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.AuditLogging.Domain\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.FeatureManagement.Domain\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.SettingManagement.Domain\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.BlobStoring.Database.Domain\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.Identity.Pro.Domain\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.LanguageManagement.Domain\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.LeptonTheme.Management.Domain\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Saas.Domain\" Version=\"4.4.0-rc.1\" />" +
"<PackageReference Include=\"Volo.Abp.TextTemplateManagement.Domain\" Version=\"4.4.0-rc.1\" />" +
"</ItemGroup>" +
"</Project>";
var success = SolutionAbpVersionFinder.TryParseVersionFromCsprojFile(csprojContent, out var version);
success.ShouldBe(true);
version.ShouldBe("4.4.0-rc.1");
}
[Fact]
public void Find_Abp_Semantic_Version()
{
const string csprojContent = "<Project Sdk=\"Microsoft.NET.Sdk\">" +
"<Import Project=\"..\\..\\common.props\" />" +
"<PropertyGroup>" +
"<TargetFramework>net5.0</TargetFramework>" +
"<RootNamespace>Blazoor.EfCore07062034</RootNamespace>" +
"</PropertyGroup>" +
"<ItemGroup>" +
"<ProjectReference Include=\"..\\Blazoor.EfCore07062034.Domain.Shared\\Blazoor.EfCore07062034.Domain.Shared.csproj\" />" +
"</ItemGroup>" +
"<ItemGroup>" +
"< PackageReference Include = \"Volo.Abp.Emailing\" Version= \"12.8.3-beta.1\" />" +
"</ItemGroup>" +
"</Project>";
var success = SolutionAbpVersionFinder.TryParseSemanticVersionFromCsprojFile(csprojContent, out var version);
success.ShouldBe(true);
version.Major.ShouldBe(12);
version.Minor.ShouldBe(8);
version.Patch.ShouldBe(3);
version.Release.ShouldBe("beta.1");
}
}
}

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "استخدم خدمة أخرى لتسجيل الدخول",
"UserLockedOutMessage": "تم قفل حساب المستخدم بسبب محاولات تسجيل الدخول غير الصالحة. يرجى الانتظار بعض الوقت والمحاولة مرة أخرى.",
"InvalidUserNameOrPassword": "اسم مستخدم أو كلمة مرور غير صالحة!",
"LoginIsNotAllowed": "غير مسموح لك بتسجيل الدخول! أنت بحاجة إلى تأكيد بريدك الإلكتروني / رقم هاتفك.",
"LoginIsNotAllowed": "لا يسمح لك بتسجيل الدخول! حسابك غير نشط أو يحتاج إلى تأكيد بريدك الإلكتروني / رقم هاتفك.",
"SelfRegistrationDisabledMessage": "تم تعطيل التسجيل الذاتي لهذا التطبيق. يرجى الاتصال بمسؤول التطبيق لتسجيل مستخدم جديد.",
"LocalLoginDisabledMessage": "تسجيل الدخول المحلي معطّل لهذا التطبيق.",
"Login": "دخول",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Použít jinou službu k přihlášení",
"UserLockedOutMessage": "Tento účet byl uzamčen z důvodu neúspěšných přihlášení. Přihlaste se prosím později.",
"InvalidUserNameOrPassword": "Neplatné uživatelské jméno nebo heslo!",
"LoginIsNotAllowed": "Není vám dovoleno se přihlásit! Musíte první potvrdit email/telefonní číslo.",
"LoginIsNotAllowed": "Nemáte oprávnění se přihlásit! Váš účet je neaktivní nebo potřebuje potvrdit váš e -mail/telefonní číslo.",
"SelfRegistrationDisabledMessage": "Vlastní registrace uživatele není povolena. K vytvoření účtu kontaktujte správce.",
"LocalLoginDisabledMessage": "Místní přihlášení je pro tuto aplikaci zakázáno.",
"Login": "Přihlásit",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Verwenden Sie einen anderen Dienst, um sich anzumelden",
"UserLockedOutMessage": "Das Benutzerkonto wurde aufgrund ungültiger Anmeldeversuche gesperrt. Bitte warten Sie eine Weile und versuchen Sie es erneut.",
"InvalidUserNameOrPassword": "Ungültiger Benutzername oder Passwort!",
"LoginIsNotAllowed": "Sie dürfen sich nicht anmelden! Sie müssen Ihre E-Mail-Adresse / Telefonnummer bestätigen.",
"LoginIsNotAllowed": "Sie dürfen sich nicht anmelden! Ihr Konto ist inaktiv oder muss Ihre E-Mail-/Telefonnummer bestätigen.",
"SelfRegistrationDisabledMessage": "Die Selbstregistrierung ist für diese Anwendung deaktiviert. Bitte wenden Sie sich an den Anwendungsadministrator, um einen neuen Benutzer zu registrieren.",
"LocalLoginDisabledMessage": "Die lokale Anmeldung ist für diese Anwendung deaktiviert.",
"Login": "Anmelden",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Einen anderen Dienst zum Anmelden verwenden",
"UserLockedOutMessage": "Das Benutzerkonto wurde aufgrund fehlgeschlagener Anmeldeversuche gesperrt. Bitte warten Sie eine Weile und versuchen Sie es erneut.",
"InvalidUserNameOrPassword": "Ungültiger Benutzername oder Passwort!",
"LoginIsNotAllowed": "Sie dürfen sich nicht anmelden! Sie müssen Ihre E-Mail/Telefonnummer bestätigen.",
"LoginIsNotAllowed": "Sie dürfen sich nicht anmelden! Ihr Konto ist inaktiv oder muss Ihre E-Mail-/Telefonnummer bestätigen.",
"SelfRegistrationDisabledMessage": "Die Selbstregistrierung ist für diese Anwendung deaktiviert. Bitte wenden Sie sich an den Anwendungsadministrator, um einen neuen Benutzer zu registrieren.",
"LocalLoginDisabledMessage": "Die lokale Anmeldung ist für diese Anwendung deaktiviert.",
"Login": "Anmelden",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Use another service to log in",
"UserLockedOutMessage": "The user account has been locked out due to invalid login attempts. Please wait a while and try again.",
"InvalidUserNameOrPassword": "Invalid username or password!",
"LoginIsNotAllowed": "You are not allowed to login! You need to confirm your email/phone number.",
"LoginIsNotAllowed": "You are not allowed to login! Your account is inactive or needs to confirm your email/phone number.",
"SelfRegistrationDisabledMessage": "Self-registration is disabled for this application. Please contact the application administrator to register a new user.",
"LocalLoginDisabledMessage": "Local login is disabled for this application.",
"Login": "Login",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Use another service to log in",
"UserLockedOutMessage": "The user account has been locked out due to invalid login attempts. Please wait a while and try again.",
"InvalidUserNameOrPassword": "Invalid username or password!",
"LoginIsNotAllowed": "You are not allowed to login! You need to confirm your email/phone number.",
"LoginIsNotAllowed": "You are not allowed to login! Your account is inactive or needs to confirm your email/phone number.",
"SelfRegistrationDisabledMessage": "Self-registration is disabled for this application. Please contact the application administrator to register a new user.",
"LocalLoginDisabledMessage": "Local login is disabled for this application.",
"Login": "Login",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Usar otro servicio para iniciar sesión",
"UserLockedOutMessage": "La cuenta de usuario ha sido bloqueada debido a los intentos de inicio de sesión no válido. Por favor, espere un rato y vuelve a intentarlo.",
"InvalidUserNameOrPassword": "No válido nombre de usuario o la contraseña!",
"LoginIsNotAllowed": "No está permitido el inicio de sesión! Usted tendrá que confirmar su correo electrónico\/número de teléfono.",
"LoginIsNotAllowed": "¡No está permitido iniciar sesión! Su cuenta está inactiva o necesita confirmar su correo electrónico / número de teléfono.",
"SelfRegistrationDisabledMessage": "El autoregistro de usuario está deshabilitado para esta aplicación. Póngase en contacto con el administrador de la aplicación para registrar un nuevo usuario.",
"Login": "Iniciar sesión",
"Cancel": "Cancelar",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Usar otro servicio para iniciar sesión",
"UserLockedOutMessage": "La cuenta de usuario ha sido bloqueada debido a los intentos de inicio de sesión no válidos. Por favor, espere unos minutos y vuelve a intentarlo.",
"InvalidUserNameOrPassword": "El nombre de usuario o la contraseña no son válidos",
"LoginIsNotAllowed": "No está permitido el inicio de sesión! Usted tendrá que confirmar su correo electrónico o número de teléfono.",
"LoginIsNotAllowed": "¡No está permitido iniciar sesión! Su cuenta está inactiva o necesita confirmar su correo electrónico / número de teléfono.",
"SelfRegistrationDisabledMessage": "El autoregistro de usuario está deshabilitado para esta aplicación. Póngase en contacto con el administrador de la aplicación para registrar un nuevo usuario.",
"LocalLoginDisabledMessage": "Inicio de sesión local ha sido deshabilitado para esta aplicación",
"Login": "Iniciar sesión",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Käytä toista palvelua kirjautumiseen",
"UserLockedOutMessage": "Käyttäjätili on lukittu virheellisten kirjautumisyritysten vuoksi. Odota hetki ja yritä uudelleen.",
"InvalidUserNameOrPassword": "Väärä käyttäjänimi tai salasana!",
"LoginIsNotAllowed": "Et saa kirjautua sisään! Sinun on vahvistettava sähköpostiosoitteesi / puhelinnumerosi.",
"LoginIsNotAllowed": "Et saa kirjautua sisään! Tilisi on passiivinen tai sinun on vahvistettava sähköpostiosoitteesi/puhelinnumerosi.",
"SelfRegistrationDisabledMessage": "Itserekisteröinti on poistettu käytöstä tälle sovellukselle. Rekisteröi uusi käyttäjä ottamalla yhteyttä sovelluksen järjestelmänvalvojaan.",
"LocalLoginDisabledMessage": "Paikallinen sisäänkirjautuminen on poistettu käytöstä tälle sovellukselle.",
"Login": "Kirjaudu sisään",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Utilisez un autre service pour vous connecter",
"UserLockedOutMessage": "Le compte utilisateur a été verrouillé en raison de tentatives de connexion non valides. Veuillez patienter un instant et réessayer.",
"InvalidUserNameOrPassword": "Nom d'utilisateur ou mot de passe invalide!",
"LoginIsNotAllowed": "Vous n'êtes pas autorisé à vous connecter! Vous devez confirmer votre e-mail / numéro de téléphone.",
"LoginIsNotAllowed": "Vous n'êtes pas autorisé à vous connecter ! Votre compte est inactif ou doit confirmer votre e-mail/numéro de téléphone.",
"SelfRegistrationDisabledMessage": "L'auto-inscription est désactivée pour cette application. Veuillez contacter l'administrateur de l'application pour enregistrer un nouvel utilisateur.",
"LocalLoginDisabledMessage": "La connexion locale est désactivée pour cette application.",
"Login": "Connectez-vous",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "लॉग इन करने के लिए किसी अन्य सेवा का उपयोग करें",
"UserLockedOutMessage": "अमान्य लॉगिन प्रयासों के कारण उपयोगकर्ता खाता बंद कर दिया गया है। कृपया थोड़ी देर प्रतीक्षा करें और पुन: प्रयास करें।",
"InvalidUserNameOrPassword": "अमान्य उपयोगकर्ता नाम या पासवर्ड!",
"LoginIsNotAllowed": "आपको लॉगिन करने की अनुमति नहीं है! आपको अपने ईमेल / फोन नंबर की पुष्टि करनी होगी।",
"LoginIsNotAllowed": "आपको लॉगिन करने की अनुमति नहीं है! आपका खाता निष्क्रिय है या आपके ईमेल/फ़ोन नंबर की पुष्टि करने की आवश्यकता है।",
"SelfRegistrationDisabledMessage": "इस आवेदन के लिए स्व-पंजीकरण अक्षम है। नया उपयोगकर्ता पंजीकृत करने के लिए कृपया एप्लिकेशन व्यवस्थापक से संपर्क करें।",
"LocalLoginDisabledMessage": "इस एप्लिकेशन के लिए स्थानीय लॉगिन अक्षम है।",
"Login": "लॉग इन करें",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Használjon másik szolgáltatást a bejelentkezéshez",
"UserLockedOutMessage": "A felhasználói fiókot érvénytelen bejelentkezési kísérletek miatt zároltuk. Kérjük, várjon egy kicsit, és próbálja újra.",
"InvalidUserNameOrPassword": "Érvénytelen felhasználónév vagy jelszó!",
"LoginIsNotAllowed": "Ön nem léphet be! Meg kell erősítenie e-mail címét / telefonszámát.",
"LoginIsNotAllowed": "A bejelentkezés nem engedélyezett! Fiókja inaktív, vagy meg kell erősítenie e -mail címét/telefonszámát.",
"SelfRegistrationDisabledMessage": "Ennél az alkalmazásnál az önregisztráció le van tiltva. Új felhasználó regisztrálásához vegye fel a kapcsolatot az alkalmazás rendszergazdájával.",
"LocalLoginDisabledMessage": "A helyi bejelentkezés le van tiltva ennél az alkalmazásnál.",
"Login": "Bejelntkezés",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Usa un altro servizio per accedere",
"UserLockedOutMessage": "L'account utente è stato bloccato a causa di tentativi di accesso non validi. Attendi qualche istante e riprova.",
"InvalidUserNameOrPassword": "Username o password non validi!",
"LoginIsNotAllowed": "Non sei autorizzato ad accedere! Devi confermare la tua email / numero di telefono.",
"LoginIsNotAllowed": "Non sei autorizzato ad accedere! Il tuo account non è attivo o deve confermare la tua email/numero di telefono.",
"SelfRegistrationDisabledMessage": "L'auto-registrazione è disabilitata per questa applicazione. Contatta l'amministratore dell'applicazione per registrare un nuovo utente.",
"LocalLoginDisabledMessage": "L'accesso locale è disabilitato per questa applicazione.",
"Login": "Login",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Gebruik een andere dienst om in te loggen",
"UserLockedOutMessage": "Het gebruikersaccount is geblokkeerd vanwege ongeldige inlogpogingen. Wacht even en probeer het opnieuw.",
"InvalidUserNameOrPassword": "Ongeldige gebruikersnaam of wachtwoord!",
"LoginIsNotAllowed": "U mag niet inloggen! U moet uw e-mailadres / telefoonnummer bevestigen.",
"LoginIsNotAllowed": "U mag niet inloggen! Uw account is inactief of moet uw e-mailadres/telefoonnummer bevestigen.",
"SelfRegistrationDisabledMessage": "Zelfregistratie is uitgeschakeld voor deze applicatie. Neem contact op met de applicatiebeheerder om een nieuwe gebruiker te registreren.",
"LocalLoginDisabledMessage": "Lokale aanmelding is uitgeschakeld voor deze applicatie.",
"Login": "Log in",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Użyj innej usługi do zalogowania się",
"UserLockedOutMessage": "Konto użytkownika zostało zablokowane po nieudanych próbach zalogowania. Odczekaj chwilę i spróbuj ponownie.",
"InvalidUserNameOrPassword": "Niepoprawna nazwa użytkownika lub hasło!",
"LoginIsNotAllowed": "Nie jesteś uprawniony do logowania! Musisz potwierdzić swój email/numer telefonu.",
"LoginIsNotAllowed": "Nie możesz się zalogować! Twoje konto jest nieaktywne lub wymaga potwierdzenia adresu e-mail/numeru telefonu.",
"SelfRegistrationDisabledMessage": "Rejestracja użytkowników jest wyłączona dla tej aplikacji. Skontaktuj się z administratorem aplikacji w celu rejestracji nowego użytkownika.",
"Login": "Zaloguj",
"Cancel": "Anuluj",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Usar outro serviço para entrar",
"UserLockedOutMessage": "Esta conta de usuário está bloqueada devido a muitas tentativas de acesso. Por favor, espero alguns instantes e tente novamente.",
"InvalidUserNameOrPassword": "Usuário ou senha estão incorretos!",
"LoginIsNotAllowed": "Você não possui permissão para entrar! Você deve confirmar seu e-mail ou número de telefone.",
"LoginIsNotAllowed": "Você não tem permissão para fazer o login! Sua conta está inativa ou precisa confirmar seu e-mail / número de telefone.",
"SelfRegistrationDisabledMessage": "Não é permitido que você crie uma nova conta neste site. Contate um administrador para que ele crie uma conta para você.",
"Login": "Entrar",
"Cancel": "Cancelar",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Folisiţi alt serviciu pentru a vă autentifica",
"UserLockedOutMessage": "Contul a fost blocat din cauza incercărilor eşuate de autentificare. Vă rugăm să aşteptaţi şi să încercaţi din nou.",
"InvalidUserNameOrPassword": "Nume de utilizator sau parolă invalide!",
"LoginIsNotAllowed": "Nu vă este permis să vă autentificaţi! Trebuie să vă confirmaţi email-ul/numărul de telefon.",
"LoginIsNotAllowed": "Nu ai voie să te autentifici! Contul dvs. este inactiv sau trebuie să vă confirme numărul de e-mail / telefon.",
"SelfRegistrationDisabledMessage": "Înregistrarea personală este dezactivată pentru această aplicaţie. Vă rugăm să contactaţi administratorul aplicaţiei pentru a înregistra un nou utilizator.",
"LocalLoginDisabledMessage": "Autentificarea locală este dezactivată pentru această aplicaţie.",
"Login": "Autentificare",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Использовать сторонний сервис для входа",
"UserLockedOutMessage": "Пользователь заблокирован из-за большого количества попыток входа. Пожалуйста, попробуйте позднее.",
"InvalidUserNameOrPassword": "Неправильные имя пользователя и/или пароль!",
"LoginIsNotAllowed": "Вы не можете войти. Вам необходимо подтвердить электронную почту или телефон.",
"LoginIsNotAllowed": "Вам не разрешено входить в систему! Ваша учетная запись неактивна или вам необходимо подтвердить адрес электронной почты / номер телефона.",
"SelfRegistrationDisabledMessage": "Самостоятельная регистрация не предусмотрена. Пожалуйста, свяжитесь с администраром для получения доступа.",
"LocalLoginDisabledMessage": "Локальный вход отключен.",
"Login": "Войти",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Použitie inej služby na prihlásenie",
"UserLockedOutMessage": "Používateľské konto bolo uzamknuté z dôvodu neplatných pokusov o prihlásenie. Chvíľu počkajte a skúste to znova.",
"InvalidUserNameOrPassword": "Neplatné používateľské meno alebo heslo!",
"LoginIsNotAllowed": "Nemáte povolené prihlásiť sa! Musíte potvrdiť svoj email/telefónne číslo.",
"LoginIsNotAllowed": "Nemáte povolenie sa prihlásiť! Váš účet je neaktívny alebo potrebuje potvrdiť váš e -mail/telefónne číslo.",
"SelfRegistrationDisabledMessage": "Samostatná registrácia je pre túto aplikáciu vypnutá. Ak chcete zaregistrovať nového používateľa, obráťte sa na správcu aplikácie.",
"LocalLoginDisabledMessage": "Lokálne prihlásenie je pre túto aplikáciu zakázané.",
"Login": "Prihlásiť",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Uporabi drugo storitev za prijavo",
"UserLockedOutMessage": "Uporabniški račun je bil zaklenjen zaradi neveljavnih poskusov prijave. Počakajte nekaj časa in poskusite znova.",
"InvalidUserNameOrPassword": "Napačno uporabniško ime ali geslo!",
"LoginIsNotAllowed": "Nimate dovoljenja za prijavo! Potrditi morate e-poštni naslov/telefonsko številko.",
"LoginIsNotAllowed": "Ne smete se prijaviti! Vaš račun je neaktiven ali mora potrditi vaš e -poštni naslov/telefonsko številko.",
"SelfRegistrationDisabledMessage": "Možnost lastne registracije uporabnika je onemogočena za to aplikacijo. Kontaktirajte skrbnika aplikacije, da registrirate novega uporabnika.",
"LocalLoginDisabledMessage": "Lokalna prijava za to aplikacijo je onemogočena.",
"Login": "Prijava",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Başka bir servisle giriş yap",
"UserLockedOutMessage": "Kullanıcı hesabı hatalı giriş denemeleri nedeniyle kilitlenmiştir. Lütfen bir süre bekleyip tekrar deneyin.",
"InvalidUserNameOrPassword": "Kullanıcı adı ya da şifre geçersiz!",
"LoginIsNotAllowed": "Giriş yapamazsınız! E-posta adresinizi ya da telefon numaranızı doğrulamanız gerekiyor.",
"LoginIsNotAllowed": "Giriş yapmanıza izin verilmiyor! Hesabınız etkin değil veya e-postanızı/telefon numaranızı onaylamanız gerekiyor.",
"SelfRegistrationDisabledMessage": "Bu uygulama için kullanıcıların kendi kendilerine kaydolmaları engellenmiştir. Yeni bir kullanıcı kaydetmek için lütfen uygulama yöneticisi ile iletişime geçin.",
"LocalLoginDisabledMessage": "Bu uygulama için local login devre dışı bırakılmıştır.",
"Login": "Giriş yap",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "Sử dụng dịch vụ khác để đăng nhập",
"UserLockedOutMessage": "Tài khoản người dùng đã bị khóa do các nỗ lực đăng nhập không hợp lệ. Xin vui lòng chờ một lúc và thử lại.",
"InvalidUserNameOrPassword": "Sai tên tài khoản hoặc mật khẩu!",
"LoginIsNotAllowed": "Bạn không được phép đăng nhập! Bạn cần xác nhận email/số điện thoại của bạn.",
"LoginIsNotAllowed": "Bạn không được phép đăng nhập! Tài khoản của bạn không hoạt động hoặc cần xác nhận email / số điện thoại của bạn.",
"SelfRegistrationDisabledMessage": "Tự đăng ký người dùng bị vô hiệu hóa cho ứng dụng này. Liên hệ với quản trị viên ứng dụng để đăng ký người dùng mới.",
"Login": "Đăng nhập",
"Cancel": "Hủy bỏ",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "使用另一个服务登录",
"UserLockedOutMessage": "登录失败,用户账户已被锁定.请稍后再试.",
"InvalidUserNameOrPassword": "用户名或密码错误!",
"LoginIsNotAllowed": "无法登录!你需要验证邮箱地址/手机号.",
"LoginIsNotAllowed": "无法登录!你的账号未激活或者需要验证邮箱地址/手机号.",
"SelfRegistrationDisabledMessage": "应用程序未开放注册,请联系管理员添加新用户.",
"LocalLoginDisabledMessage": "应用程序未开放本地账户登录.",
"Login": "登录",

@ -9,7 +9,7 @@
"UseAnotherServiceToLogin": "使用另一個服務登入",
"UserLockedOutMessage": "登入失敗,使用者帳號已被鎖定.請稍後再試.",
"InvalidUserNameOrPassword": "使用者名稱或密碼錯誤!",
"LoginIsNotAllowed": "無法登入!你需要驗證電子信箱地址/手機號碼.",
"LoginIsNotAllowed": "無法登入!你的賬號未激活或者需要驗證郵箱地址/手機號碼.",
"SelfRegistrationDisabledMessage": "應用程式未開放註冊,請聯絡管理員以加入新使用者.",
"LocalLoginDisabledMessage": "應用程序未開放本地賬戶登錄.",
"Login": "登入",

@ -32,22 +32,22 @@ namespace Volo.CmsKit
public Claim FindClaim(string claimType)
{
throw new NotImplementedException();
return null;
}
public Claim[] FindClaims(string claimType)
{
throw new NotImplementedException();
return null;
}
public Claim[] GetAllClaims()
{
throw new NotImplementedException();
return null;
}
public bool IsInRole(string roleName)
{
throw new NotImplementedException();
return false;
}
}
}

@ -26,6 +26,8 @@ namespace Volo.Abp.Identity
[DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPhoneNumberLength))]
public string PhoneNumber { get; set; }
public bool IsActive { get; set; }
public bool LockoutEnabled { get; set; }
[CanBeNull]

@ -23,6 +23,8 @@ namespace Volo.Abp.Identity
public bool PhoneNumberConfirmed { get; set; }
public bool IsActive { get; set; }
public bool LockoutEnabled { get; set; }
public DateTimeOffset? LockoutEnd { get; set; }

@ -178,7 +178,7 @@ namespace Volo.Abp.Identity
user.Name = input.Name;
user.Surname = input.Surname;
(await UserManager.UpdateAsync(user)).CheckErrors();
user.SetIsActive(input.IsActive);
if (input.RoleNames != null)
{
(await UserManager.SetRolesAsync(user, input.RoleNames)).CheckErrors();

@ -33,7 +33,7 @@ namespace Volo.Abp.Identity.AspNetCore
AbpOptions = options.Value;
}
public async override Task<SignInResult> PasswordSignInAsync(
public override async Task<SignInResult> PasswordSignInAsync(
string userName,
string password,
bool isPersistent,
@ -62,5 +62,16 @@ namespace Volo.Abp.Identity.AspNetCore
return await base.PasswordSignInAsync(userName, password, isPersistent, lockoutOnFailure);
}
protected override async Task<SignInResult> PreSignInCheck(IdentityUser user)
{
if (!user.IsActive)
{
Logger.LogWarning("User is currently inactive.");
return SignInResult.NotAllowed;
}
return await base.PreSignInCheck(user);
}
}
}

@ -110,6 +110,9 @@
</TextEdit>
</Field>
</Validation>
<Field>
<Check TValue="bool" @bind-Checked="@NewEntity.IsActive">@L["DisplayName:IsActive"]</Check>
</Field>
<Field>
<Check TValue="bool" @bind-Checked="@NewEntity.LockoutEnabled">@L["DisplayName:LockoutEnabled"]</Check>
</Field>
@ -221,6 +224,9 @@
</TextEdit>
</Field>
</Validation>
<Field>
<Check TValue="bool" @bind-Checked="EditingEntity.IsActive">@L["DisplayName:IsActive"]</Check>
</Field>
<Field>
<Check TValue="bool" @bind-Checked="EditingEntity.LockoutEnabled">@L["DisplayName:LockoutEnabled"]</Check>
</Field>
@ -254,4 +260,4 @@
@if ( HasManagePermissionsPermission )
{
<PermissionManagementModal @ref="PermissionManagementModal"/>
}
}

@ -25,6 +25,7 @@
"DisplayName:Email": "Email address",
"DisplayName:PhoneNumber": "Phone number",
"DisplayName:TwoFactorEnabled": "Two factor verification",
"DisplayName:IsActive": "Active",
"DisplayName:LockoutEnabled": "Lock account after failed login attempts",
"NewRole": "New role",
"RoleName": "Role name",

@ -25,6 +25,7 @@
"DisplayName:Email": "E-posta adresi",
"DisplayName:PhoneNumber": "Telefon numarası",
"DisplayName:TwoFactorEnabled": "İki aşamalı doğrulama",
"DisplayName:IsActive": "Aktif",
"DisplayName:LockoutEnabled": "Başarısız giriş denemeleri sonrası hesabı kilitleme",
"NewRole": "Yeni rol",
"RoleName": "Rol adı",

@ -25,6 +25,7 @@
"DisplayName:Email": "邮箱地址",
"DisplayName:PhoneNumber": "手机号码",
"DisplayName:TwoFactorEnabled": "二次认证",
"DisplayName:IsActive": "启用",
"DisplayName:LockoutEnabled": "登录失败,账户被锁定",
"NewRole": "新角色",
"RoleName": "角色名称",

@ -25,6 +25,7 @@
"DisplayName:Email": "電子信箱地址",
"DisplayName:PhoneNumber": "手機號碼",
"DisplayName:TwoFactorEnabled": "二次認證",
"DisplayName:IsActive": "啟用",
"DisplayName:LockoutEnabled": "登入失敗,帳號被鎖定",
"NewRole": "新角色",
"RoleName": "角色名稱",

@ -82,6 +82,11 @@ namespace Volo.Abp.Identity
/// <value>True if the telephone number has been confirmed, otherwise false.</value>
public virtual bool PhoneNumberConfirmed { get; protected internal set; }
/// <summary>
/// Gets or sets a flag indicating if the user is active.
/// </summary>
public virtual bool IsActive { get; protected internal set; }
/// <summary>
/// Gets or sets a flag indicating if two factor authentication is enabled for this user.
/// </summary>
@ -155,6 +160,7 @@ namespace Volo.Abp.Identity
NormalizedEmail = email.ToUpperInvariant();
ConcurrencyStamp = Guid.NewGuid().ToString();
SecurityStamp = Guid.NewGuid().ToString();
IsActive = true;
Roles = new Collection<IdentityUserRole>();
Claims = new Collection<IdentityUserClaim>();
@ -338,11 +344,6 @@ namespace Volo.Abp.Identity
PhoneNumberConfirmed = confirmed;
}
public override string ToString()
{
return $"{base.ToString()}, UserName = {UserName}";
}
/// <summary>
/// Normally use <see cref="IdentityUserManager.ChangePhoneNumberAsync"/> to change the phone number
/// in the application code.
@ -356,5 +357,15 @@ namespace Volo.Abp.Identity
PhoneNumber = phoneNumber;
PhoneNumberConfirmed = !phoneNumber.IsNullOrWhiteSpace() && confirmed;
}
public virtual void SetIsActive(bool isActive)
{
IsActive = isActive;
}
public override string ToString()
{
return $"{base.ToString()}, UserName = {UserName}";
}
}
}

@ -27,6 +27,7 @@
<abp-input asp-for="UserInfo.Password" />
<abp-input asp-for="UserInfo.Email" />
<abp-input asp-for="UserInfo.PhoneNumber" />
<abp-input asp-for="UserInfo.IsActive" />
<abp-input asp-for="UserInfo.LockoutEnabled" />
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<CreateModalModel.UserInfoViewModel>())

@ -79,6 +79,8 @@ namespace Volo.Abp.Identity.Web.Pages.Identity.Users
[DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPhoneNumberLength))]
public string PhoneNumber { get; set; }
public bool IsActive { get; set; } = true;
public bool LockoutEnabled { get; set; } = true;
}

@ -27,6 +27,7 @@
<abp-input asp-for="UserInfo.Password" />
<abp-input asp-for="UserInfo.Email" />
<abp-input asp-for="UserInfo.PhoneNumber" />
<abp-input asp-for="UserInfo.IsActive" />
<abp-input asp-for="UserInfo.LockoutEnabled" />
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<EditModalModel.UserInfoViewModel>())

@ -87,6 +87,8 @@ namespace Volo.Abp.Identity.Web.Pages.Identity.Users
[DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPhoneNumberLength))]
public string PhoneNumber { get; set; }
public bool IsActive { get; set; }
public bool LockoutEnabled { get; set; }
}

@ -35,5 +35,15 @@ namespace Volo.Abp.Identity.AspNetCore
result.ShouldBe("Failed");
}
[Fact]
public async Task Should_Not_SignIn_If_User_Not_Active()
{
var result = await GetResponseAsStringAsync(
"api/signin-test/password?userName=bob&password=1q2w3E*"
);
result.ShouldBe("NotAllowed");
}
}
}

@ -12,6 +12,7 @@ namespace Volo.Abp.Identity
{
private readonly IGuidGenerator _guidGenerator;
private readonly IIdentityUserRepository _userRepository;
private readonly IdentityUserManager _userManager;
private readonly IIdentityClaimTypeRepository _identityClaimTypeRepository;
private readonly IIdentityRoleRepository _roleRepository;
private readonly IOrganizationUnitRepository _organizationUnitRepository;
@ -32,6 +33,7 @@ namespace Volo.Abp.Identity
public AbpIdentityTestDataBuilder(
IGuidGenerator guidGenerator,
IIdentityUserRepository userRepository,
IdentityUserManager userManager,
IIdentityClaimTypeRepository identityClaimTypeRepository,
IIdentityRoleRepository roleRepository,
IOrganizationUnitRepository organizationUnitRepository,
@ -44,6 +46,7 @@ namespace Volo.Abp.Identity
{
_guidGenerator = guidGenerator;
_userRepository = userRepository;
_userManager = userManager;
_identityClaimTypeRepository = identityClaimTypeRepository;
_roleRepository = roleRepository;
_lookupNormalizer = lookupNormalizer;
@ -133,6 +136,10 @@ namespace Volo.Abp.Identity
neo.AddClaim(_guidGenerator, new Claim("TestClaimType", "43"));
neo.AddOrganizationUnit(_ou111.Id);
await _userRepository.InsertAsync(neo);
var bob = new IdentityUser(_testData.UserBobId, "bob", "bob@abp.io");
bob.SetIsActive(false);
await _userManager.CreateAsync(bob, "1q2w3E*");
}
private async Task AddLinkUsers()

@ -10,6 +10,7 @@ namespace Volo.Abp.Identity
public Guid UserJohnId { get; } = Guid.NewGuid();
public Guid UserDavidId { get; } = Guid.NewGuid();
public Guid UserNeoId { get; } = Guid.NewGuid();
public Guid UserBobId { get; } = Guid.NewGuid();
public Guid AgeClaimId { get; } = Guid.NewGuid();
public Guid EducationClaimId { get; } = Guid.NewGuid();
}

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId existe déjà: {ClientId}",
"UserLockedOut": "Le compte utilisateur a été verrouillé en raison de tentatives de connexion non valides. Veuillez patienter un instant et réessayer.",
"InvalidUserNameOrPassword": "Nom d'utilisateur ou mot de passe invalide!",
"LoginIsNotAllowed": "Vous n'êtes pas autorisé à vous connecter! Vous devez confirmer votre adresse e-mail / numéro de téléphone.",
"LoginIsNotAllowed": "Vous n'êtes pas autorisé à vous connecter ! Votre compte est inactif ou doit confirmer votre e-mail/numéro de téléphone.",
"InvalidUsername": "Nom d'utilisateur ou mot de passe invalide!",
"TheTargetUserIsNotLinkedToYou": "L'utilisateur cible n'est pas lié à vous!"
}

@ -6,7 +6,7 @@
"Volo.IdentityServer:DuplicateClientId": "موجود بالفعل: {ClientId}",
"UserLockedOut": "تم قفل حساب المستخدم بسبب محاولات تسجيل الدخول غير الصالحة. يرجى الانتظار بعض الوقت والمحاولة مرة أخرى.",
"InvalidUserNameOrPassword": "اسم مستخدم أو كلمة مرور غير صالحة!",
"LoginIsNotAllowed": "غير مسموح لك بتسجيل الدخول! أنت بحاجة إلى تأكيد بريدك الإلكتروني / رقم هاتفك.",
"LoginIsNotAllowed": "لا يسمح لك بتسجيل الدخول! حسابك غير نشط أو يحتاج إلى تأكيد بريدك الإلكتروني / رقم هاتفك.",
"InvalidUsername": "اسم المستخدم أو كلمة المرور غير صالحة!"
}
}

@ -6,7 +6,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId již existuje: {ClientId}",
"UserLockedOut": "Tento uživatelský účet byl zablokován kvůli neplatným pokusům o přihlášení. Chvilku počkejte a zkuste to znovu.",
"InvalidUserNameOrPassword": "Neplatné uživatelské jméno či heslo!",
"LoginIsNotAllowed": "Nemáte oprávnění se přihlásit! Musíte potvrdit svůj email/telefonní číslo.",
"LoginIsNotAllowed": "Nemáte oprávnění se přihlásit! Váš účet je neaktivní nebo potřebuje potvrdit váš e -mail/telefonní číslo.",
"InvalidUsername": "Neplatné uživatelské jméno či heslo!"
}
}

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId existiert bereits: {ClientId}",
"UserLockedOut": "Das Benutzerkonto wurde aufgrund ungültiger Anmeldeversuche gesperrt. Bitte warten Sie eine Weile und versuchen Sie es erneut.",
"InvalidUserNameOrPassword": "Ungültiger Benutzername oder Passwort!",
"LoginIsNotAllowed": "Sie dürfen sich nicht anmelden! Sie müssen Ihre E-Mail-Adresse / Telefonnummer bestätigen.",
"LoginIsNotAllowed": "Sie dürfen sich nicht anmelden! Ihr Konto ist inaktiv oder muss Ihre E-Mail-/Telefonnummer bestätigen.",
"InvalidUsername": "Ungültiger Benutzername oder Passwort!",
"TheTargetUserIsNotLinkedToYou": "Der Zielbenutzer ist nicht mit Ihnen verknüpft!"
}

@ -6,7 +6,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId bereits vorhanden: {ClientId}",
"UserLockedOut": "Das Benutzerkonto wurde aufgrund ungültiger Anmeldeversuche ausgesperrt. Bitte warten Sie eine Weile und versuchen Sie es erneut.",
"InvalidUserNameOrPassword": "Ungültiger Benutzername oder Passwort!",
"LoginIsNotAllowed": "Sie dürfen sich nicht anmelden! Sie müssen Ihre E-Mail/Telefonnummer bestätigen.",
"LoginIsNotAllowed": "Sie dürfen sich nicht anmelden! Ihr Konto ist inaktiv oder muss Ihre E-Mail-/Telefonnummer bestätigen.",
"InvalidUsername": "Ungültiger Benutzername oder Passwort!"
}
}

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId already exist: {ClientId}",
"UserLockedOut": "The user account has been locked out due to invalid login attempts. Please wait a while and try again.",
"InvalidUserNameOrPassword": "Invalid username or password!",
"LoginIsNotAllowed": "You are not allowed to login! You need to confirm your email/phone number.",
"LoginIsNotAllowed": "You are not allowed to login! Your account is inactive or needs to confirm your email/phone number.",
"InvalidUsername": "Invalid username or password!",
"TheTargetUserIsNotLinkedToYou": "The target user is not linked to you!"
}

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId already exist: {ClientId}",
"UserLockedOut": "The user account has been locked out due to invalid login attempts. Please wait a while and try again.",
"InvalidUserNameOrPassword": "Invalid username or password!",
"LoginIsNotAllowed": "You are not allowed to login! You need to confirm your email/phone number.",
"LoginIsNotAllowed": "You are not allowed to login! Your account is inactive or needs to confirm your email/phone number.",
"InvalidUsername": "Invalid username or password!",
"InvalidAuthenticatorCode": "Invalid authenticator code!",
"TheTargetUserIsNotLinkedToYou": "The target user is not linked to you!"

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId ya existe: {ClientId}",
"UserLockedOut": "La cuenta de usuario ha sido bloqueada debido a inicios de sesión no validos. Por favor, espera un momento e intentalo de nuevo.",
"InvalidUserNameOrPassword": "Nombre de usuario o contraseña incorrecto!",
"LoginIsNotAllowed": "No puedes iniciar sesión!, necesitas confirmar tu e-mail/ número de teléfono.",
"LoginIsNotAllowed": "¡No está permitido iniciar sesión! Su cuenta está inactiva o necesita confirmar su correo electrónico / número de teléfono.",
"InvalidUsername": "Nombre de usuario icorrecto",
"TheTargetUserIsNotLinkedToYou": "El usuario de destino no está asociado a usted."
}

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId on jo olemassa: {ClientId}",
"UserLockedOut": "Käyttäjätili on lukittu virheellisten kirjautumisyritysten vuoksi. Odota hetki ja yritä uudelleen.",
"InvalidUserNameOrPassword": "Väärä käyttäjänimi tai salasana!",
"LoginIsNotAllowed": "Et saa kirjautua sisään! Sinun on vahvistettava sähköpostiosoitteesi / puhelinnumerosi.",
"LoginIsNotAllowed": "Et saa kirjautua sisään! Tilisi on passiivinen tai sinun on vahvistettava sähköpostiosoitteesi/puhelinnumerosi.",
"InvalidUsername": "Väärä käyttäjänimi tai salasana!",
"TheTargetUserIsNotLinkedToYou": "Kohdekäyttäjä ei ole linkitetty sinuun!"
}

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId पहले से मौजूद है: {ClientId}",
"UserLockedOut": "अमान्य लॉगिन प्रयासों के कारण उपयोगकर्ता खाता बंद कर दिया गया है। कृपया थोड़ी देर प्रतीक्षा करें और पुन: प्रयास करें।",
"InvalidUserNameOrPassword": "अमान्य उपयोगकर्ता नाम या पासवर्ड!",
"LoginIsNotAllowed": "आपको लॉगिन करने की अनुमति नहीं है! आपको अपने ईमेल / फोन नंबर की पुष्टि करनी होगी।",
"LoginIsNotAllowed": "आपको लॉगिन करने की अनुमति नहीं है! आपका खाता निष्क्रिय है या आपके ईमेल/फ़ोन नंबर की पुष्टि करने की आवश्यकता है।",
"InvalidUsername": "अमान्य उपयोगकर्ता नाम या पासवर्ड!",
"TheTargetUserIsNotLinkedToYou": "लक्ष्य उपयोगकर्ता आपसे जुड़ा नहीं है!"
}

@ -6,7 +6,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId már létezik: {ClientId}",
"UserLockedOut": "A felhasználói fiókot érvénytelen bejelentkezési kísérletek miatt zároltuk. Kérjük, várjon egy kicsit, és próbálja újra.",
"InvalidUserNameOrPassword": "Érvénytelen felhasználónév vagy jelszó!",
"LoginIsNotAllowed": "Ön nem léphet be! Meg kell erősítenie e-mail címét / telefonszámát.",
"LoginIsNotAllowed": "A bejelentkezés nem engedélyezett! Fiókja inaktív, vagy meg kell erősítenie e -mail címét/telefonszámát.",
"InvalidUsername": "Érvénytelen felhasználónév vagy jelszó!",
"TheTargetUserIsNotLinkedToYou": "A célfelhasználó nincs hozzád kapcsolódva!"
}

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId già esistente: {ClientId}",
"UserLockedOut": "L'account utente è stato bloccato a causa di tentativi di accesso non validi. Attendi qualche istante e riprova.",
"InvalidUserNameOrPassword": "Username o password non validi!",
"LoginIsNotAllowed": "Non sei autorizzato ad accedere! Devi confermare la tua email/numero di telefono.",
"LoginIsNotAllowed": "Non sei autorizzato ad accedere! Il tuo account non è attivo o deve confermare la tua email/numero di telefono.",
"InvalidUsername": "Username o password non validi!",
"InvalidAuthenticatorCode": "Codice autenticatore non valido!",
"TheTargetUserIsNotLinkedToYou": "L'utente di destinazione non è collegato a te!"

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId bestaat al: {ClientId}",
"UserLockedOut": "Het gebruikersaccount is geblokkeerd vanwege ongeldige inlogpogingen. Wacht even en probeer het opnieuw.",
"InvalidUserNameOrPassword": "ongeldige gebruikersnaam of wachtwoord!",
"LoginIsNotAllowed": "U mag niet inloggen! U moet uw e-mailadres / telefoonnummer bevestigen.",
"LoginIsNotAllowed": "U mag niet inloggen! Uw account is inactief of moet uw e-mailadres/telefoonnummer bevestigen.",
"InvalidUsername": "Ongeldige gebruikersnaam of wachtwoord!",
"TheTargetUserIsNotLinkedToYou": "De beoogde gebruiker is niet aan jou gekoppeld!"
}

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "Id-ul de client există deja: {ClientId}",
"UserLockedOut": "Contul de utilizator a fost blocat din cauza încercărilor de autentificare eşuate. Vă rugăm să aşteptaţi puţin şi după să încercaţi din nou.",
"InvalidUserNameOrPassword": "Nume de utilizator sau parolă invalidă!",
"LoginIsNotAllowed": "Nu vă este permisă autentificarea! Trebuie să vă confirmaţi emailul/numărul de telefon.",
"LoginIsNotAllowed": "Nu ai voie să te autentifici! Contul dvs. este inactiv sau trebuie să vă confirme numărul de e-mail / telefon.",
"InvalidUsername": "Nume de utilizator sau parolă invalidă!",
"InvalidAuthenticatorCode": "Cod de autentificare invalid!",
"TheTargetUserIsNotLinkedToYou": "Utilizatorul ţintă nu este conectat la dumneavoastră!"

@ -6,7 +6,7 @@
"Volo.IdentityServer:DuplicateClientId": "Параметр ClientID уже существует: {ClientId}",
"UserLockedOut": "Учетная запись пользователя была заблокирована из-за неудачных попыток входа в систему. Пожалуйста, попробуйте позже.",
"InvalidUserNameOrPassword": "Неверное имя пользователя или пароль!",
"LoginIsNotAllowed": "У вас нет разрешения на вход в систему. Необходимо подтвердить свой адрес электронной почты/номер телефона.",
"LoginIsNotAllowed": "Вам не разрешено входить в систему! Ваша учетная запись неактивна или вам необходимо подтвердить адрес электронной почты / номер телефона.",
"InvalidUsername": "Неверное имя пользователя или пароль!"
}
}

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId už existuje: {ClientId}",
"UserLockedOut": "Používateľské konto bolo uzamknuté z dôvodu viacerých neplatných pokusov o prihlásenie. Chvíľu počkajte a skúste sa prihlásiť znova.",
"InvalidUserNameOrPassword": "Nesprávne používateľské meno alebo heslo!",
"LoginIsNotAllowed": "Nemáte povolené prihlásiť sa! Musíte potvrdiť svoj email/telefónne číslo.",
"LoginIsNotAllowed": "Nemáte povolenie sa prihlásiť! Váš účet je neaktívny alebo potrebuje potvrdiť váš e -mail/telefónne číslo.",
"InvalidUsername": "Nesprávne používateľské meno alebo heslo!",
"TheTargetUserIsNotLinkedToYou": "Cieľový používateľ nie je s vami prepojený!"
}

@ -6,7 +6,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId že obstaja: {ClientId}",
"UserLockedOut": "Uporabniški račun je bil blokiran zaradi neveljavnih poskusov prijave. Počakajte nekaj časa in poskusite znova.",
"InvalidUserNameOrPassword": "Napačno uporabniško ime ali geslo!",
"LoginIsNotAllowed": "Nimate dovoljenja za prijavo! Potrditi morate svojo e-pošto / telefonsko številko.",
"LoginIsNotAllowed": "Ne smete se prijaviti! Vaš račun je neaktiven ali mora potrditi vaš e -poštni naslov/telefonsko številko.",
"InvalidUsername": "Napačno uporabniško ime ali geslo!"
}
}

@ -6,7 +6,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId already zaten mevcut: {ClientId}",
"UserLockedOut": "Kullanıcı hesabı hatalı giriş denemeleri nedeniyle kilitlenmiştir. Lütfen bir süre bekleyip tekrar deneyin.",
"InvalidUserNameOrPassword": "Kullanıcı adı ya da şifre geçersiz!",
"LoginIsNotAllowed": "Giriş yapamazsınız! E-posta adresinizi ya da telefon numaranızı doğrulamanız gerekiyor.",
"LoginIsNotAllowed": "Giriş yapmanıza izin verilmiyor! Hesabınız etkin değil veya e-postanızı/telefon numaranızı onaylamanız gerekiyor.",
"InvalidUsername": "Kullanıcı adı ya da şifre geçersiz!",
"InvalidAuthenticatorCode": "Geçersiz kimlik doğrulama kodu!",
"TheTargetUserIsNotLinkedToYou": "Hedef kullanıcı sizinle bağlantılı değil!"

@ -7,7 +7,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId已经存在: {ClientId}",
"UserLockedOut": "登录失败,用户账户已被锁定.请稍后再试.",
"InvalidUserNameOrPassword": "用户名或密码错误!",
"LoginIsNotAllowed": "无法登录!你需要验证邮箱地址/手机号.",
"LoginIsNotAllowed": "无法登录!你的账号未激活或者需要验证邮箱地址/手机号.",
"InvalidUsername": "用户名或密码错误!",
"InvalidAuthenticatorCode": "验证码无效!",
"TheTargetUserIsNotLinkedToYou": "目标用户未和你有关联!"

@ -6,7 +6,7 @@
"Volo.IdentityServer:DuplicateClientId": "ClientId已經存在: {ClientId}",
"UserLockedOut": "登錄失敗,用戶賬戶已被鎖定.請稍後再試.",
"InvalidUserNameOrPassword": "用戶名或密碼錯誤!",
"LoginIsNotAllowed": "無法登錄!妳需要驗證郵箱地址/手機號.",
"LoginIsNotAllowed": "無法登入!你的賬號未激活或者需要驗證郵箱地址/手機號碼.",
"InvalidUsername": "用戶名或密碼錯誤!"
}
}

@ -40,5 +40,11 @@ namespace Volo.Abp.IdentityServer.AspNetIdentity
await base.IsActiveAsync(context);
}
}
[UnitOfWork]
public override Task<bool> IsUserActiveAsync(IdentityUser user)
{
return Task.FromResult(user.IsActive);
}
}
}

@ -0,0 +1,39 @@
import { ConfigStateService, featuresFactory, noop } from '@abp/ng.core';
import { APP_INITIALIZER, inject, InjectionToken } from '@angular/core';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
export const SETTING_MANAGEMENT_FEATURES = new InjectionToken<Observable<{ enable: boolean }>>(
'SETTING_MANAGEMENT_FEATURES',
{
providedIn: 'root',
factory: () => {
const configState = inject(ConfigStateService);
const featureKey = 'SettingManagement.Enable';
const mapFn = features => ({
enable: features[featureKey].toLowerCase() !== 'false',
});
return featuresFactory(configState, [featureKey], mapFn);
},
},
);
export const SETTING_MANAGEMENT_ROUTE_VISIBILITY = new InjectionToken<Observable<boolean>>(
'SETTING_MANAGEMENT_ROUTE_VISIBILITY',
{
providedIn: 'root',
factory: () => {
const stream = inject(SETTING_MANAGEMENT_FEATURES);
return stream.pipe(map(features => features.enable));
},
},
);
export const SETTING_MANAGEMENT_FEATURES_PROVIDERS = [
{
provide: APP_INITIALIZER,
useFactory: noop,
deps: [SETTING_MANAGEMENT_ROUTE_VISIBILITY],
multi: true,
},
];

@ -1,2 +1,3 @@
export * from './route.provider';
export * from './setting-tab.provider';
export * from './visible.provider';

@ -1,18 +1,9 @@
import { eLayoutType, RoutesService, SettingTabsService } from '@abp/ng.core';
import { eLayoutType, noop, RoutesService, SettingTabsService } from '@abp/ng.core';
import { eThemeSharedRouteNames } from '@abp/ng.theme.shared';
import { APP_INITIALIZER } from '@angular/core';
import { APP_INITIALIZER, inject, InjectionToken } from '@angular/core';
import { debounceTime, map } from 'rxjs/operators';
import { eSettingManagementRouteNames } from '../enums/route-names';
export const SETTING_MANAGEMENT_ROUTE_PROVIDERS = [
{ provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
{
provide: APP_INITIALIZER,
useFactory: hideRoutes,
deps: [RoutesService, SettingTabsService],
multi: true,
},
];
import { Observable } from 'rxjs';
export function configureRoutes(routesService: RoutesService) {
return () => {
@ -28,16 +19,25 @@ export function configureRoutes(routesService: RoutesService) {
]);
};
}
export function hideRoutes(routesService: RoutesService, settingTabsService: SettingTabsService) {
return () => {
settingTabsService.visible$
.pipe(
export const SETTING_MANAGEMENT_HAS_SETTING = new InjectionToken<Observable<boolean>>(
'SETTING_MANAGEMENT_HAS_SETTING',
{
factory: () => {
const settingTabsService = inject(SettingTabsService);
return settingTabsService.visible$.pipe(
debounceTime(0),
map(nodes => !nodes.length),
)
.subscribe(invisible =>
routesService.patch(eSettingManagementRouteNames.Settings, { invisible }),
map(nodes => !!nodes.length),
);
};
}
},
},
);
export const SETTING_MANAGEMENT_ROUTE_PROVIDERS = [
{ provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
{
provide: APP_INITIALIZER,
useFactory: noop,
deps: [SETTING_MANAGEMENT_HAS_SETTING],
multi: true,
},
];

@ -0,0 +1,30 @@
import { APP_INITIALIZER, Injector } from '@angular/core';
import { combineLatest } from 'rxjs';
import { RoutesService } from '@abp/ng.core';
import { SETTING_MANAGEMENT_HAS_SETTING } from './route.provider';
import { SETTING_MANAGEMENT_ROUTE_VISIBILITY } from './features.token';
import { eSettingManagementRouteNames } from '../enums';
export const SETTING_MANAGEMENT_VISIBLE_PROVIDERS = [
{
provide: APP_INITIALIZER,
useFactory: setSettingManagementVisibility,
deps: [Injector],
multi: true,
},
];
export function setSettingManagementVisibility(injector: Injector) {
return () => {
const settingManagementHasSetting$ = injector.get(SETTING_MANAGEMENT_HAS_SETTING);
const isSettingManagementFeatureEnable$ = injector.get(SETTING_MANAGEMENT_ROUTE_VISIBILITY);
const routes = injector.get(RoutesService);
combineLatest([settingManagementHasSetting$, isSettingManagementFeatureEnable$]).subscribe(
([settingManagementHasSetting, isSettingManagementFeatureEnable]) => {
routes.patch(eSettingManagementRouteNames.Settings, {
invisible: !(settingManagementHasSetting && isSettingManagementFeatureEnable),
});
},
);
};
}

@ -1,9 +1,11 @@
import { ModuleWithProviders, NgModule } from '@angular/core';
import { CoreModule } from '@abp/ng.core';
import { EmailSettingGroupComponent } from './components/email-setting-group/email-setting-group.component';
import { NgxValidateCoreModule } from '@ngx-validate/core';
import { SETTING_MANAGEMENT_FEATURES_PROVIDERS } from './providers/features.token';
import { SETTING_MANAGEMENT_VISIBLE_PROVIDERS } from './providers/visible.provider';
import { SETTING_MANAGEMENT_ROUTE_PROVIDERS } from './providers/route.provider';
import { SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS } from './providers/setting-tab.provider';
import { NgxValidateCoreModule } from '@ngx-validate/core';
import { EmailSettingGroupComponent } from './components/email-setting-group/email-setting-group.component';
@NgModule({
imports: [CoreModule, NgxValidateCoreModule],
@ -14,7 +16,12 @@ export class SettingManagementConfigModule {
static forRoot(): ModuleWithProviders<SettingManagementConfigModule> {
return {
ngModule: SettingManagementConfigModule,
providers: [SETTING_MANAGEMENT_ROUTE_PROVIDERS, SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS],
providers: [
SETTING_MANAGEMENT_ROUTE_PROVIDERS,
SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS,
SETTING_MANAGEMENT_FEATURES_PROVIDERS,
SETTING_MANAGEMENT_VISIBLE_PROVIDERS,
],
};
}
}

@ -11,7 +11,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(MyProjectNameDbContext))]
[Migration("20210615091011_Initial")]
[Migration("20210909052638_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -20,7 +20,7 @@ namespace MyCompanyName.MyProjectName.Migrations
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.7")
.HasAnnotation("ProductVersion", "5.0.9")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
@ -638,6 +638,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")

@ -253,6 +253,7 @@ namespace MyCompanyName.MyProjectName.Migrations
IsExternal = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
PhoneNumber = table.Column<string>(type: "nvarchar(16)", maxLength: 16, nullable: true),
PhoneNumberConfirmed = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
IsActive = table.Column<bool>(type: "bit", nullable: false),
TwoFactorEnabled = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
LockoutEnd = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
LockoutEnabled = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),

@ -18,7 +18,7 @@ namespace MyCompanyName.MyProjectName.Migrations
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.7")
.HasAnnotation("ProductVersion", "5.0.9")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
@ -636,6 +636,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")

@ -13,7 +13,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.0-rc.*" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="3.1.0" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="4.1.2" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />

@ -11,7 +11,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
{
[DbContext(typeof(UnifiedDbContext))]
[Migration("20210528093547_Initial")]
[Migration("20210909052730_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -20,7 +20,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.6")
.HasAnnotation("ProductVersion", "5.0.9")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
@ -580,6 +580,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")

@ -232,6 +232,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
IsExternal = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
PhoneNumber = table.Column<string>(type: "nvarchar(16)", maxLength: 16, nullable: true),
PhoneNumberConfirmed = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
IsActive = table.Column<bool>(type: "bit", nullable: false),
TwoFactorEnabled = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
LockoutEnd = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
LockoutEnabled = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),

@ -18,7 +18,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.6")
.HasAnnotation("ProductVersion", "5.0.9")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
@ -578,6 +578,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")

@ -11,7 +11,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(IdentityServerHostMigrationsDbContext))]
[Migration("20210528093513_Initial")]
[Migration("20210909052712_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -20,7 +20,7 @@ namespace MyCompanyName.MyProjectName.Migrations
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.6")
.HasAnnotation("ProductVersion", "5.0.9")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
@ -580,6 +580,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")

@ -232,6 +232,7 @@ namespace MyCompanyName.MyProjectName.Migrations
IsExternal = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
PhoneNumber = table.Column<string>(type: "nvarchar(16)", maxLength: 16, nullable: true),
PhoneNumberConfirmed = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
IsActive = table.Column<bool>(type: "bit", nullable: false),
TwoFactorEnabled = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
LockoutEnd = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
LockoutEnabled = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),

@ -18,7 +18,7 @@ namespace MyCompanyName.MyProjectName.Migrations
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.6")
.HasAnnotation("ProductVersion", "5.0.9")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
@ -578,6 +578,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")

@ -11,7 +11,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(UnifiedDbContext))]
[Migration("20210528093522_Initial")]
[Migration("20210909052706_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -20,7 +20,7 @@ namespace MyCompanyName.MyProjectName.Migrations
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.6")
.HasAnnotation("ProductVersion", "5.0.9")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
@ -580,6 +580,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")

@ -232,6 +232,7 @@ namespace MyCompanyName.MyProjectName.Migrations
IsExternal = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
PhoneNumber = table.Column<string>(type: "nvarchar(16)", maxLength: 16, nullable: true),
PhoneNumberConfirmed = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
IsActive = table.Column<bool>(type: "bit", nullable: false),
TwoFactorEnabled = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
LockoutEnd = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
LockoutEnabled = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),

@ -18,7 +18,7 @@ namespace MyCompanyName.MyProjectName.Migrations
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.6")
.HasAnnotation("ProductVersion", "5.0.9")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
@ -578,6 +578,9 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")

@ -2,12 +2,12 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.*" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftPackageVersion)" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="4.1.2" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
@ -19,7 +19,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.*">
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftPackageVersion)">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
</PackageReference>

Loading…
Cancel
Save