okay, i will check it
We have an article
https://abp.io/community/articles/how-to-setup-azure-active-directory-and-integrate-abp-angular-application-lyk87w5l
We can give the sample project but Azure AD is belong to our customer and it is only allow inside Norway. And also it is enable multifactor authentication.
sure, my email is shiwei.liang@volosoft.com
You can replace the LocalStorageListenerService
import { Injectable, inject } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class MyLocalStorageListenerService{
constructor() {
// do nothing
}
}
AppModule
providers: [
APP_ROUTE_PROVIDER,
provideAbpCore(
withOptions({
environment,
registerLocaleFn: registerLocale(),
}),
),
{
provide : LocalStorageListenerService,
useValue : MyLocalStorageListenerService
},
.......
]
- "Login" button is always disabled, even when I provide both user name and password.
- Logo above login form is not displayed at all. There is only application name displayed but it looks like it's not affected by css style.
you can try add _ViewImports.cshtml
@using System.Globalization
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap
@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling
I can't reproduce the problem
ObjectExtensionManager.Instance.Modules()
.ConfigureSaas(saas =>
{
saas.ConfigureTenant(tenant =>
{
tenant.AddOrUpdateProperty<Guid>( //property type: string
"OpenIddictApplicationId", //property name
property =>
{
property.UI.Lookup.Url = "/api/openiddict/applications";
property.UI.Lookup.DisplayPropertyName = "displayName";
property.UI.Lookup.ValuePropertyName = "id";
}
);
});
});
You can implement IDeletionAuditedObject
interface
You can try override the ApplyAbpConceptsForDeletedEntity
method
YourDbContext
protected override void ApplyAbpConceptsForDeletedEntity(EntityEntry entry)
{
if (!(entry.Entity is ISoftDelete))
{
return;
}
if (IsHardDeleted(entry))
{
return;
}
if (entry.CurrentValues.Properties.Any(x => x.Name == nameof(IHasExtraProperties.ExtraProperties)))
{
ExtraPropertyDictionary? originalExtraProperties = null;
if (entry.Entity is IHasExtraProperties)
{
originalExtraProperties = entry.OriginalValues.GetValue<ExtraPropertyDictionary>(nameof(IHasExtraProperties.ExtraProperties));
}
entry.Reload();
if (entry.Entity is IHasExtraProperties)
{
ObjectHelper.TrySetProperty(entry.Entity.As<IHasExtraProperties>(), x => x.ExtraProperties, () => originalExtraProperties);
}
}
ObjectHelper.TrySetProperty(entry.Entity.As<ISoftDelete>(), x => x.IsDeleted, () => true);
SetDeletionAuditProperties(entry);
}
could you use https://wetransfer.com/