Hi,
Can you share the logs and steps? thanks
Is their any kind of extension method available for switching between Distributed Event Bus. Please advise.
No, we don't have such an extension, The event bus is designed to use only one implementation at the same time.
Also we we mentioned earlier If we are injecting both modules i.e. 'AbpEventBusRabbitMqModule' and 'AbpEventBusAzureModule' by default it's only picking RabbitMQ.
As I said, you can inject RabbitMqDistributedEventBus
and AzureDistributedEventBus
instead of IDistributedEventBus
,
In this way, you can publish your own event to different event bus. but it's not perfect,。
Just an idea, you can create a hybrid event bus implementation class.
For example:
[ExposeServices(typeof(IDistributedEventBus), typeof(MyHybridEventBus))]
public class MyHybridEventBus : DistributedEventBusBase
{
private readonly RabbitMqDistributedEventBus _rabbitMqEventBus;
private readonly AzureDistributedEventBus _azureEventBus;
protected MyHybridEventBus(
IServiceScopeFactory serviceScopeFactory,
ICurrentTenant currentTenant,
IUnitOfWorkManager unitOfWorkManager,
IOptions<AbpDistributedEventBusOptions> abpDistributedEventBusOptions,
IGuidGenerator guidGenerator, IClock clock,
IEventHandlerInvoker eventHandlerInvoker,
RabbitMqDistributedEventBus rabbitMqEventBus,
AzureDistributedEventBus azureEventBus) :
base(serviceScopeFactory, currentTenant, unitOfWorkManager, abpDistributedEventBusOptions, guidGenerator, clock, eventHandlerInvoker)
{
_rabbitMqEventBus = rabbitMqEventBus;
_azureEventBus = azureEventBus;
}
public override async Task PublishAsync(Type eventType, object eventData, bool onUnitOfWorkComplete = true)
{
if (await ShouldPublishToRabbitMqAsync())
{
await _rabbitMqEventBus.PublishAsync(eventType, eventData, onUnitOfWorkComplete);
}
if (await ShouldPublishToAzureAsync())
{
await _azureEventBus.PublishAsync(eventType, eventData, onUnitOfWorkComplete);
}
}
private Task<bool> ShouldPublishToRabbitMqAsync()
{
...
}
private Task<bool> ShouldPublishToAzureAsync()
{
...
}
}
Hi,
Sorry,we have no such example yet.
Hi,
You can inject RabbitMqDistributedEventBus
and AzureDistributedEventBus
instead of IDistributedEventBus
Hi,
What we are trying to accomplish is quickly build out multi-tenant applications that support UI modifications including changing color schemes, layouts, login screens, and more using ABP.IO and Angular. Is the above process correct, or is there a better way to go about doing this? Or, is there a limitation on what Angular UI can modify in ABP.IO?
You don't need to include all module source code in your application if you just want to change those, because it will make your upgrades difficult. Modules are designed to be extensible(pages, services, components..) You can check the document:
https://docs.abp.io/en/commercial/latest/themes/customizing-lepton-theme?UI=NG https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Guide https://docs.abp.io/en/abp/latest
Hi,
Can you share some code? thanks.
However, I will talk with ABP team, thanks for your feedback.
**BUG **! An external user can easily bypass the third party authentication, just by asking for a password reset and login back as a "internal user". (Note, disabling the internal user login feature is not something that we can do, we need and are using both kind of user login). To solve this bug ..... Improvements needed. .....
I'm not sure this is a bug, even using Twitter, if I use Google social external login. I also can change the password and send an email to reset the password.
Hi,
I saw that a new "import" button as appeared recently... but it's not working ! A message says "No external login provider available * while this is not true. * My external login provider i**s setup and perfectly working **!!! I
Import
work with ABP external login provider, you can see the document: https://docs.abp.io/en/commercial/latest/modules/identity/import-external-users
You can create your own external login provider, for example:
public class MyExternalLoginProvider : ExternalLoginProviderBase, ITransientDependency
{
public const string Name = "MyExternalLoginProvider ";
public MyExternalLoginProvider (....)
{
....
}
public override Task<bool> TryAuthenticateAsync(string userName, string plainPassword)
{
....
}
public override Task<bool> IsEnabledAsync()
{
return Task.FromResult(true);
}
protected override Task<ExternalLoginUserInfo> GetUserInfoAsync(string userName)
{
......
}
}
Configure<AbpIdentityOptions>(options =>
{
options.ExternalLoginProviders.Add<MyExternalLoginProvider>(MyExternalLoginProvider.Name);
});
Actually, when you create a new user, even using the pro modules, there is no way to add an external user manually
I believe the above has answered this.
Hi,
Can you check this: https://docs.abp.io/en/abp/latest/PlugIn-Modules#database-schema