Thanks for your response. I'll look into these, and if none of these solve the issue I will provide more details.
Thanks, S.
Hi,
Using APB.IO v9.1.2 and when navigating to the Identity Management and either Roles or Users page in Angular project, it gets the data from the backend as I can see it in the chrome dev tools but the data is not displayed in the data table. Only when I resize the chrome window. The same happens when I sort the data via clicking on one of the columns.
Is this a known issue with this version (v9.1.2)?
Thanks, S.
Hi,
That's great, thanks for providing the example.
Thanks.
Hi,
Using the commercial license with Angular frontend.
For those dropdown lists where we get the list of items from the API we use the abp-lookup-select component.
Just wondering if there is a similar component for working with enum-s?
e.g. given below enum
import { mapEnumToOptions } from '@abp/ng.core';
export enum GeometryTypeEnum {
None = 1,
Point = 2,
Line = 3,
Polygon = 4,
All = 5,
}
export const geometryTypeEnumOptions = mapEnumToOptions(GeometryTypeEnum);
Thanks.
Hi,
Thanks for providing these details.
Thanks.
Hi,
We use the commercial license with version 10.1.1, and using Angular as the frontend. How can we customize the ResetPassword page for Angular, to keep the current functionality, but to add a link to the ForgotPassword page?
Thanks.
Hi,
please use below code in a new project.
using System;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Caching;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Identity;
using Volo.Abp.Threading;
namespace Test.Identity;
public class MyIdentityUserAppService : IdentityUserAppService
{
public MyIdentityUserAppService(
IdentityUserManager userManager,
IIdentityUserRepository userRepository,
IIdentityRoleRepository roleRepository,
IOrganizationUnitRepository organizationUnitRepository,
IIdentityClaimTypeRepository claimTypeRepository,
IdentityProTwoFactorManager twoFactorManager,
IOptions<IdentityOptions> identityOptions,
IDistributedEventBus eventBus,
IOptions<AbpIdentityOptions> abpIdentityOptions,
IPermissionChecker permissionChecker,
IDistributedCache<IdentityUserDownloadTokenCacheItem, string> userDownloadTokenCache,
IDistributedCache<ImportInvalidUsersCacheItem, string> importInvalidUsersCache,
IdentitySessionManager sessionManager,
IdentityUserTwoFactorChecker userTwoFactorChecker,
ICancellationTokenProvider cancellationTokenProvider)
: base(
userManager,
userRepository,
roleRepository,
organizationUnitRepository,
claimTypeRepository,
twoFactorManager,
identityOptions,
eventBus,
abpIdentityOptions,
permissionChecker,
userDownloadTokenCache,
importInvalidUsersCache,
sessionManager,
userTwoFactorChecker,
cancellationTokenProvider)
{
}
public async Task<PagedResultDto<LookupDto<Guid>>> GetDummy(LookupRequestDto input)
{
var users = await UserRepository.GetListAsync();
var items = users.Select(ObjectMapper.Map<IdentityUser, LookupDto<Guid>>)
.OrderBy(u => u.DisplayName)
.ToList();
return new PagedResultDto<LookupDto<Guid>>(items.Count, items);
}
}
See below AutoMapper configuration below:
CreateMap<IdentityUser, LookupDto<Guid>>()
.ForMember(
d => d.DisplayName,
m => m.MapFrom(s =>
s.Name + " " +
s.Surname + " (" +
s.UserName + ")"));
Thanks, S.
Hi,
After upgrading our project from ABP 9.3.7 to ABP 10.1.1, we regenerated the Angular proxies and encountered a TypeScript compilation error.
Environment
ABP Framework: 10.1.1
Angular: 21.2.3
ABP CLI: 2.2.1
Issue
After generating the proxy models, the Angular build fails with the following error:
TS2430: Interface 'GetIdentityUsersInput' incorrectly extends interface 'ExtensiblePagedAndSortedResultRequestDto'.
Types of property 'id' are incompatible.
Type 'string | null | undefined' is not assignable to type 'string | undefined'.
Type 'null' is not assignable to type 'string | undefined'. [plugin angular-compiler]
src/app/proxy/volo/abp/identity/models.ts:39:17
39 │ export interface GetIdentityUsersInput extends ExtensiblePagedAndSortedResultRequestDto
The generated proxy interface is:
export interface GetIdentityUsersInput extends ExtensiblePagedAndSortedResultRequestDto {
filter?: string;
roleId?: string | null;
organizationUnitId?: string | null;
id?: string | null;
userName?: string;
}
However, ExtensiblePagedAndSortedResultRequestDto defines the id property as:
id?: string;
Because of this, TypeScript reports that the child interface is widening the type (string | null), which is not compatible with the base interface (string).
Thanks.
Hi,
After upgrading our project from ABP Framework v9.3.7 to v10.1.1, we kept AutoMapper as our object mapping solution instead of the new default Mapperly.
We configured AutoMapper in our application module as follows:
public class MyApplicationModule : AbpModule
{
}
Inside ConfigureServices:
Configure<AbpAutoMapperOptions>(options =>
{
options.AddMaps<MyApplicationModule>();
});
Our AutoMapper profiles are discovered correctly, and mapping works as expected in our custom application services.
For example, mapping works without issues in:
public class MyCustomAppService : MyProjectAppService, IMyCustomAppService
However, when using the same mappings inside a service that derives from the ABP identity service:
public class MyProjectIdentityUserAppService : IdentityUserAppService
we receive an exception during execution. The exception indicates that the framework is attempting to resolve a mapping using Mapperly, even though AutoMapper is configured and working elsewhere in the application.
This suggests that the IdentityUserAppService (or the underlying object mapper context) is still trying to use Mapperly instead of AutoMapper after the upgrade.
Observed behavior:
Expected behavior: Since AutoMapper is configured in the application module and works in other services, we would expect the same AutoMapper configuration to be used when extending IdentityUserAppService.
Is there an additional configuration required in ABP v10.1.1 to ensure that IdentityUserAppService uses AutoMapper instead of Mapperly? Or is there a recommended approach for overriding the object mapper context in services derived from IdentityUserAppService?
Any guidance on the correct configuration for using AutoMapper in this scenario would be appreciated.
Thanks.