What's the error log?
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