Hello, I'm trying to come up with a good solution to merge multiple tenant databases into a single one for reporting, my first approach is to use the entity synchronizer provided by the framework, I think it would be a good solution, but I'm not sure how to solve some issues and I need some guidance. Here are the requirements:
Hello, I want to allow my users to log in to a customer support portal using their current user account, the problem that I'm facing is that each tenant has its own database and I'm resolving them using the subdomain. In my support portal, I can set up OpenID connect, but for a single endpoint, so it is not finding the users. Is there a way I can achieve this?
Thank you.
I need to use additional functionality of the Azure BlobContainerClient in my project, how can I access it directly without registering another BlobServiceClient in the DI container?
I'm using a custom error handler implemented per the documentation, and it is working fine, but I'm getting console errors after it handles the errors.
-- In my error handler, I am marking the error as handled and only re-throwing it if not handled:
-- When debugging it I can see that the framework is still wanting to handle the error, but the error is null
<br> -- When it finally gets to the point that it wants to execute, it fails because it can't access the status of the error
Please let me know if this is a bug or if I'm doing something wrong. Also I'm using the AbpAuthorizationException to throw errors but the message is not being received at the client, it just arrives as a 403 I was expecting to see the message I was trying to send back. Thanks.
I'm deploying ABP to Azure app services, I'm worried that the messages I'm sending using the service bus end up in the staging slot and are processed by an outdated version of my application. I can see in application insights that both my production and staging slots are connected to the same topic. Does the framework already control that or do I have to somehow disable the service bus on the staging slot?
I was having the same issue with Hangfire, but I solved it this way:
Configure<AbpBackgroundJobOptions>(options =>
{
options.IsJobExecutionEnabled = !hostingEnvironment.IsStaging();
});
Thanks.
I have created my own custom configuration service and added it to the app.module as a provider:
{
provide: APP_INITIALIZER,
useFactory: configurationFactory,
deps: [ConfigurationService, ConfigStateService],
multi: true,
},
There are configuration properties that I need before authentication and after authentication, how can I call my configuration service after the user has authenticated to refresh the configuration properties?
I see this being done already by the abp framework, how can I achieve the same?
Thanks.
I've followed some documents online and looked at the source code for how to replace the PermissionDataSeedContributor but when running the DbMigrator I end up with twice the permissions, one set for the default "admin" role and another set for my custom role.
Here's my code:
using CompuCare.Enums;
using CompuCare.Permissions;
using Microsoft.AspNetCore.Identity;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Volo.Abp.MultiTenancy;
using Volo.Abp.PermissionManagement;
using Volo.Abp.Uow;
namespace CompuCare.DataSeed;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(PermissionDataSeedContributor), typeof(IDataSeedContributor))]
public class PermissionDataSeedContributor : IDataSeedContributor, ITransientDependency
{
private readonly ICurrentTenant _currentTenant;
private readonly IPermissionDefinitionManager _permissionDefinitionManager;
private readonly IPermissionDataSeeder _permissionDataSeeder;
public PermissionDataSeedContributor(
ICurrentTenant currentTenant,
IPermissionDefinitionManager permissionDefinitionManager,
IPermissionDataSeeder permissionDataSeeder)
{
_currentTenant = currentTenant;
_permissionDefinitionManager = permissionDefinitionManager;
_permissionDataSeeder = permissionDataSeeder;
}
public async Task SeedAsync(DataSeedContext context)
{
await PopulateAbpPermissionsAsync(context);
}
private async Task PopulateAbpPermissionsAsync(DataSeedContext context)
{
var multiTenancySide = _currentTenant.GetMultiTenancySide();
var providerKey = multiTenancySide == MultiTenancySides.Host ? "admin" : "Administrators";
var permissionNames = (await _permissionDefinitionManager.GetPermissionsAsync())
.Where(p => p.MultiTenancySide.HasFlag(multiTenancySide))
.Where(p => !p.Providers.Any() || p.Providers.Contains(RolePermissionValueProvider.ProviderName))
.Select(p => p.Name)
.ToArray();
await _permissionDataSeeder.SeedAsync(
RolePermissionValueProvider.ProviderName,
providerKey,
permissionNames,
context?.TenantId
);
}
}
After verifying a user e mail the login link is taking me to the swagger page instead of the login page, how do I fix that?
ABP Framework version: v7.4.0
Hello, I have extended the "IdentityUser" and added some properties to it, I don't want those properties to show up in the UI, but I want to use the built-in API to get, create, and update the entity. I used "MapEfCoreProperty" to create columns in the table. I have built custom forms in the UI (angular) to view, create, and update the entity. Now, when I go to "My Account" and try to update my info I get a validation error that says that some of the properties are required, why is that?