Activities of "enisn"

Sorry for the late reply, I was trying to check case,

Yes openiddict.pfx is ignored on Git by default and if you clone your project from zero to publish or use a pipleine that file will not be included. You need to manually copy it.

I'm not sure if that file has an expiration date, but nice to hear that re-generating fixes the problem. Also always make sure the PassPhrase is always correct in the published server-side

Hi Gökalp, It seems you're correct, you already found a previous incident and it's the expected working flow the external logic provider, so you can ignore it for now

Hi,

Can you check the running backend application logs and provide us? We need to get logs to understand what was going on in that case. If you're running your application on your local machine on localhost, you can directly check Logs/ folder in your YourProjectName.HttpApi.Host project folder

Hi,

We have 2 different level extension system.

  • Object Extensions for extending objects only and extra data is kept in ExtraProperties property of the entity and data is carried over ExtraProperties in the DTO.
  • Entity Extensions for extending directly entity and database table. In that case, the extra property you add is directly stored in a new column in the databse and required database migration.

If you used only one of them, can you try extending your object with 2 options at the same time?

Entity extensions should directly affect to angular UI and can be shown in the pre-built module pages without changing anything

Hi,

You can easily pick entities from modules while building one-to-many relation like this:

But while building many-to-many relations, there is no option for it. You'll go to Advanced tab and fill fields manually.

Let's say you want to build a relation for IdentityUser located at here: https://github.com/abpframework/abp/blob/dev/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs

Fill Entity namespace and Entity name fields manually like below:

If entities from modules cannot be loaded to that dropdown you can always use Advanced tab and fill information manually. There might be some reasons that prevents reading entities from modules such as compilation errors or project doesn't have bin & obj folders. Make sure you build your project once, and make sure your project doesn't have any compilation error.

Hi,

We're investigating the case right now, Our ABP Suite team will respond as soon as possible to this issue

Can you try to access current user by API that is provided by ABP: https://abp.io/docs/latest/framework/ui/angular/current-user

currentUser object has id field on it


const currentUser = this.config.getOne("currentUser");

console.log(currentUser.id);

Hi,

CurrentUser object has roles array on it. You can easily access roles of the user easily in client-side:


And, at the backend, CurrentUser has an IsInRole method for this check:

Our @Angular team can answer if need a more complex scenario for angular

Hi,

Do you use LeptonX theme?

And how you were using this scrollbar API in your application? That might be an internal API that you used in javascript

Hi,

I investigated how system works and found the following points.

The following method is called from everywhere whenever event name required: https://github.com/abpframework/abp/blob/97e10cc7b2b849b0aebf2aa00881616d036b0af1/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/EventNameAttribute.cs#L22 Since this is a static method, it cannot be overriden in your project.

Another option seems like overriding RabbitMqDistributedEventBus in your project. Here is the original source code of that class: https://github.com/abpframework/abp/blob/rel-9.1/framework/src/Volo.Abp.EventBus.RabbitMQ/Volo/Abp/EventBus/RabbitMq/RabbitMqDistributedEventBus.cs

using Microsoft.Extensions.Options;
using RabbitMQ.Client;
using Volo.Abp;
using Volo.Abp.DependencyInjection;
using Volo.Abp.EventBus;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.EventBus.Local;
using Volo.Abp.EventBus.RabbitMq;
using Volo.Abp.Guids;
using Volo.Abp.MultiTenancy;
using Volo.Abp.RabbitMQ;
using Volo.Abp.Timing;
using Volo.Abp.Tracing;
using Volo.Abp.Uow;

namespace MyCompanyName.MyApplicationName;

[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IDistributedEventBus), typeof(RabbitMqDistributedEventBus), typeof(IRabbitMqDistributedEventBus))]
public class MyRabbitMqDistributedEventBus : RabbitMqDistributedEventBus
{
    public MyRabbitMqDistributedEventBus(
        IOptions<AbpRabbitMqEventBusOptions> options,
        IConnectionPool connectionPool,
        IRabbitMqSerializer serializer,
        IServiceScopeFactory serviceScopeFactory,
        IOptions<AbpDistributedEventBusOptions> distributedEventBusOptions,
        IRabbitMqMessageConsumerFactory messageConsumerFactory,
        ICurrentTenant currentTenant,
        IUnitOfWorkManager unitOfWorkManager,
        IGuidGenerator guidGenerator,
        IClock clock,
        IEventHandlerInvoker eventHandlerInvoker,
        ILocalEventBus localEventBus,
        ICorrelationIdProvider correlationIdProvider) : base(options, connectionPool, serializer, serviceScopeFactory, distributedEventBusOptions, messageConsumerFactory, currentTenant, unitOfWorkManager, guidGenerator, clock, eventHandlerInvoker, localEventBus, correlationIdProvider)
    {
    }

    public override IDisposable Subscribe(Type eventType, IEventHandlerFactory factory)
    {
        var handlerFactories = GetOrCreateHandlerFactories(eventType);

        if (factory.IsInFactories(handlerFactories))
        {
            return NullDisposable.Instance;
        }

        handlerFactories.Add(factory);

        if (handlerFactories.Count == 1)
        {
            // Here we are registering the consumer for the first time.
            Consumer.BindAsync( "SomePrefix_" + EventNameAttribute.GetNameOrDefault(eventType));
        }

        return new EventHandlerFactoryUnregistrar(this, eventType, factory);
    }

    protected override Task PublishAsync(IModel channel, string eventName, byte[] body, Dictionary<string, object>? headersArguments = null, Guid? eventId = null, string? correlationId = null)
    {
        eventName += "SomePrefix_" + eventName;
        return base.PublishAsync(channel, eventName, body, headersArguments, eventId, correlationId);
    }

    private List<IEventHandlerFactory> GetOrCreateHandlerFactories(Type eventType)
    {
        return HandlerFactories.GetOrAdd(
            eventType,
            type =>
            {
                var eventName = EventNameAttribute.GetNameOrDefault(type);
                EventTypes.GetOrAdd(eventName, eventType);
                return new List<IEventHandlerFactory>();
            }
        );
    }
}

In that case, you'll override this service both consumer & publisher projects to make consistency.

Showing 81 to 90 of 787 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.2.0-preview. Updated on February 17, 2026, 09:10
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.