Activities of "alper"

Answer

ABP Framework version: v4.3.0 UI type: Angular DB provider: EF Core

Problem : wrong generate localization

@arifharsono that issue will be fixed in 4.3.1

Answer

I've upgraded our solution from ABP 3.3.2 to 4.3.0.

Everything was more or less smoothly, but now I discovered a problem: some new ABP tables are missing from migration scripts! How come? What am I supposed to do now?

Please have a look at the migration classes autogenerated for 3.3.2 and 4.3.0. https://1drv.ms/u/s!AhWdpZddvifTtizt4xjre044i7B8?e=0xuBUs

Here is the list of ABP-prefixed tables created from test solution (autogenerated in ABP Suite) using DbMigrator project in local MS SQL server DB - all the tables are at place:

Here is the list of tables in our ORACLE DB created using standard update-database command and DbMigrator afterwards to seed data - make a note some tables are missing (for instance, AbpBlobContainers, AbpTextTemplateContents). How it's possible?? How to easily find out what is missing and add it?

@Alexander there are missing tables because you might not have these modules: AbpBlobContainers, AbpTextTemplateContents If you create a new project these modules come by default that's why you see the difference in migration. You need to add these modules manually (if you require them)

Answer

ABP Framework version: v4.3.0
UI type: Angular
DB provider: EF Core
Tiered (MVC) or Identity Server Separated (Angular): Yes
Steps to reproduce the issue:
I just get source from ABP suite and build. It has this error

@edelivery couldn't understand what you get? is that a module?

Hi alper
I just created new solution from abp suite
Template type: application template

so I understand this; you create a new Angular + EF Core + Separated Identity Server proejct.
And it throws exception out of the box. Right?

yes, that's right

I created a new 4.3.0 project with the following CLI command

abp new Angular.EfCoreSeperate05113159 -t app-pro -u angular -m none --separate-identity-server --database-provider ef -csf 

Migrated db with DBMigrator. Run IdentityServer project first, then HttpApi.Host project then, Angular ...

And I don't see any console errors:

Ensure that you are running the latest ABP CLI

Nicolas each module has its own translation. in your case some of the module translations are missing. Can you create a new latest project to see if it's the same in a new project?

you don't need to add it to Suite. abp login is the only thing you need to do I see michael, sebastian and ludger can succesfully login and run the project. do you still get any error? then run these commands

  del %UserProfile%\.\AppData\Local\Temp\AbpLicense.bin
  del %UserProfile%\.abp\cli\access-token.bin  

abp login again.

@lalitChougule sorry for my late response.

This is a complex use case and there's no built-in way to achieve this type of usage. OrganizationUnits doesn't cover all your requirements. With OrganizationUnits you can group users and assign a role to an organization unit. But when you grant user create permission to AnchorAdmin, he'll be creating users for others as well.

Options:

1- You can create a new tenant for Anchors, Suppliers, Buyers. Then all your requirements will be supported. And you'll create the entities you share among them with not multitenant so that you can share the records.


2- You can override existing register user and get user list methods. So that you can implement your own logic.

These methods are virtual and open to override.

namespace Volo.Abp.Identity
{
    public class IdentityUserAppService : IdentityAppServiceBase, IIdentityUserAppService
    {    
        public virtual async Task<PagedResultDto<IdentityUserDto>> GetListAsync(GetIdentityUsersInput input)
        {
            [Authorize(IdentityPermissions.Users.Create)]
            public virtual async Task<IdentityUserDto> CreateAsync(IdentityUserCreateDto input)
            {
                await IdentityOptions.SetAsync();

                var user = new IdentityUser(
                    GuidGenerator.Create(),
                    input.UserName,
                    input.Email,
                    CurrentTenant.Id
                );

                input.MapExtraPropertiesTo(user);

                (await UserManager.CreateAsync(user, input.Password)).CheckErrors();
                await UpdateUserByInput(user, input);
                (await UserManager.UpdateAsync(user)).CheckErrors();
                await CurrentUnitOfWork.SaveChangesAsync();

                await DistributedEventBus.PublishAsync(new IdentityUserCreatedEto()
                {
                    Id = user.Id,
                    Properties =
                    {
                        { "SendConfirmationEmail", input.SendConfirmationEmail.ToString().ToUpper() },
                        { "AppName", "MVC" }
                    }
                });

                var userDto = ObjectMapper.Map<IdentityUser, IdentityUserDto>(user);

                return userDto;
            }
        }
    }
}

and also

Get user list method:

namespace Volo.Abp.Identity
{
    public class IdentityUserAppService : IdentityAppServiceBase, IIdentityUserAppService
    {    
        public virtual async Task<PagedResultDto<IdentityUserDto>> GetListAsync(GetIdentityUsersInput input)
        {
            var count = await UserRepository.GetCountAsync(input.Filter); //TODO:
            var users = await UserRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount,
                input.Filter);

            var userDtos = ObjectMapper.Map<List<IdentityUser>, List<IdentityUserDto>>(users);

            var twoFactorEnabled = await IdentityProTwoFactorManager.IsOptionalAsync();
            for (int i = 0; i < users.Count; i++)
            {
                userDtos[i].IsLockedOut = users[i].LockoutEnabled &&
                                          (users[i].LockoutEnd != null && users[i].LockoutEnd > DateTime.UtcNow);
                userDtos[i].SupportTwoFactor = twoFactorEnabled;
            }

            return new PagedResultDto<IdentityUserDto>(
                count,
                userDtos
            );
        }
    }
}

3- Add the Identity module source code to your project and you are free to customize everything.

there maybe other options but these are the first one come to my mind.

@nowayja for my late response, @mladen will that work?

You need to add the new language as below:

public class AcmeBookStoreDomainModule : AbpModule
{
	public override void ConfigureServices(ServiceConfigurationContext context)
	{	   
		Configure<AbpLocalizationOptions>(options =>
		{               
			options.Languages.Add(new LanguageInfo("fr", "fr", "Français", "fr")); //add this <===	
            
			options.Languages.Add(new LanguageInfo("ar", "ar", "العربية", "ae"));
			options.Languages.Add(new LanguageInfo("en", "en", "English", "gb"));
			options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish", "fi"));				
			options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe", "tr"));
			options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文", "cn"));
			options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsche", "de"));
			options.Languages.Add(new LanguageInfo("es", "es", "Español", "es"));
			options.Languages.Add(new LanguageInfo("sl", "sl", "Slovenščina", "si"));
		});
	}
}

check out https://github.com/abpframework/abp/blob/dev/docs/en/Community-Articles/2020-11-02-How-To-Add-New-Language/POST.md

@Nicolas WILLIG reported:

Hello, Thanks for your quick reply but French language is in our languages list and DBMigrator has been started. But we can still see all the english strings that we have already translated on the provided file. Thanks for your help.

duplicate of #671

Showing 981 to 990 of 2058 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.0.0-preview. Updated on September 23, 2025, 10:47