When I click on generate it is generating the entity in the TenantDbContext instead of generating it in the DbContext.
ABP suite doesn't support generate it in the TenantDbContext
Hi,
You can refer to this: https://github.com/abpframework/abp/blob/dev/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/Auditing_Tests.cs#L368
Hi,
Can you please provide the full steps to reproduce? I will check it. thanks
Hi,
I can share the UI code with you. please provide your email address.
Hi,
They are open source. you can download them here: https://github.com/abpframework/abp/tree/dev/npm/ng-packs/packages
Hi,
ABP suite doesn't support it yet, but we will consider enhancing it in the next version.
Hi,
We have a document for this: https://docs.abp.io/en/abp/latest/AspNet-Boilerplate-Migration-Guide
Do the two frameworks use similar password hashing algorithms, can I just copy users and password data from one system to the other or is that not going to work?
They are both using the ASPNETCore identity, I think there is no problem.
Also, how can I overwrite the Register.cshtml.cs file so that users go directly to Azure AD B2C similar to what I did with Login.cshtml.cs?
Hi,
You can try:
[ExposeServices(typeof(RegisterModel))]
public class MyRegisterModel : RegisterModel
{
public virtual async Task<IActionResult> OnGetAsync()
{
if (IsExternalLogin)
{
var externalLoginInfo = await SignInManager.GetExternalLoginInfoAsync();
if (externalLoginInfo == null)
{
Logger.LogWarning("External login info is not available");
return RedirectToPage("./Login");
}
var emailAddress = info.Principal.FindFirstValue(AbpClaimTypes.Email) ?? info.Principal.FindFirstValue(ClaimTypes.Email);
user = await RegisterExternalUserAsync(externalLoginInfo, emailAddress);
await SignInManager.SignInAsync(user, false);
}else{
return await base.OnGetAsync();
}
}
public override async Task<IdentityUser> RegisterExternalUserAsync(ExternalLoginInfo externalLoginInfo, string emailAddress)
{
await IdentityOptions.SetAsync();
var user = new IdentityUser(GuidGenerator.Create(), emailAddress, emailAddress, CurrentTenant.Id);
(await UserManager.CreateAsync(user)).CheckErrors();
(await UserManager.AddDefaultRolesAsync(user)).CheckErrors();
user.SetEmailConfirmed(true); // set true to skip email confirmation ste
if (emailAddress == "<admin user email>")
{
await UserManager.AddToRoleAsync(user, "admin");// add admin role to admin user
}
var userLoginAlreadyExists = user.Logins.Any(x =>
x.TenantId == user.TenantId &&
x.LoginProvider == externalLoginInfo.LoginProvider &&
x.ProviderKey == externalLoginInfo.ProviderKey);
if (!userLoginAlreadyExists)
{
user.AddLogin(new UserLoginInfo(
externalLoginInfo.LoginProvider,
externalLoginInfo.ProviderKey,
externalLoginInfo.ProviderDisplayName
)
);
(await UserManager.UpdateAsync(user)).CheckErrors();
}
return user;
}
}
Hi,
Ok, you want to use the FormsService.HttpApi.Host
as an app.
You should add the account module to the project.
You can refer to the public web project to configure the FormsService.HttpApi.Host
Hi,
For ex i can not understand why abp is trying to get the Volo.Abp.LanguageManagement.Texts,k:Adzup:AbpExceptionHandling_en text from redis cache?
The LanguageManagement module provides the ability to dynamic language text, but we don't want to query the database every time, so we use cache to improve performance.
Because ABP framework provides a lot of infrastructure: multilingual, multi-tenant, auditing, etc. Of course, they will affect performance, but it is enough for regular web applications.
my problem is about finding the limit of how much devices i can serve. If i can find it then i can plan it accordingly, by using clusters or with other solutions
Sorry, I can't give an answer. You can test it and find the point that affects performance. I will try to help you to improve it.