Release Notes
v3.2.0
February 2026
New Features
Proxy Services
New typed proxy services for identity API operations:
IdentityRoleService - Role management:
import { IdentityRoleService } from '@abpjs/identity';
import { useRestService } from '@abpjs/core';
function useRoles() {
const restService = useRestService();
const roleService = new IdentityRoleService(restService);
// Get all roles (unpaginated)
const allRoles = await roleService.getAllList();
// Get paginated roles
const pagedRoles = await roleService.getList({ skipCount: 0, maxResultCount: 10 });
// CRUD operations
const newRole = await roleService.create({ name: 'Editor', isDefault: false, isPublic: true });
const role = await roleService.get(roleId);
const updated = await roleService.update(roleId, { ...role, name: 'Senior Editor' });
await roleService.delete(roleId);
}
IdentityUserService - User management:
import { IdentityUserService } from '@abpjs/identity';
const userService = new IdentityUserService(restService);
// Get users with filter
const users = await userService.getList({ filter: 'john', skipCount: 0, maxResultCount: 10 });
// Get user roles
const userRoles = await userService.getRoles(userId);
// Update user roles
await userService.updateRoles(userId, { roleNames: ['Admin', 'Editor'] });
// Find by username/email
const user = await userService.findByUsername('john.doe');
const user2 = await userService.findByEmail('john@example.com');
// Get assignable roles
const assignableRoles = await userService.getAssignableRoles();
IdentityUserLookupService - User lookup operations:
import { IdentityUserLookupService } from '@abpjs/identity';
const lookupService = new IdentityUserLookupService(restService);
// Find user by ID
const user = await lookupService.findById(userId);
// Find by username
const user2 = await lookupService.findByUserName('john.doe');
// Search users
const users = await lookupService.search({
filter: 'john',
skipCount: 0,
maxResultCount: 10,
});
// Get count
const count = await lookupService.getCount({ filter: 'john' });
ProfileService - Current user profile:
import { ProfileService } from '@abpjs/identity';
const profileService = new ProfileService(restService);
// Get current user profile
const profile = await profileService.get();
// Update profile
await profileService.update({
userName: profile.userName,
email: 'newemail@example.com',
name: 'John',
surname: 'Doe',
phoneNumber: '+1234567890',
});
// Change password
await profileService.changePassword({
currentPassword: 'oldPassword',
newPassword: 'newPassword',
});
New Proxy Models
Typed DTOs for all identity operations:
import type {
// Role DTOs
IdentityRoleDto,
IdentityRoleCreateDto,
IdentityRoleUpdateDto,
// User DTOs
IdentityUserDto,
IdentityUserCreateDto,
IdentityUserUpdateDto,
IdentityUserUpdateRolesDto,
GetIdentityUsersInput,
// Profile DTOs
ProfileDto,
UpdateProfileDto,
ChangePasswordInput,
// Lookup DTOs
UserLookupCountInputDto,
UserLookupSearchInputDto,
// User data
UserData,
} from '@abpjs/identity';
Updated State Interface
The Identity.State interface now uses the new proxy DTOs:
import { Identity, PagedResultDto, IdentityRoleDto, IdentityUserDto } from '@abpjs/identity';
interface State {
roles: PagedResultDto<IdentityRoleDto>;
users: PagedResultDto<IdentityUserDto>;
selectedRole: IdentityRoleDto;
selectedUser: IdentityUserDto;
selectedUserRoles: IdentityRoleDto[];
}
Deprecations
The following legacy types are deprecated and will be removed in v4.0:
| Deprecated | Replacement |
|---|---|
Identity.RoleResponse | PagedResultDto<IdentityRoleDto> |
Identity.RoleItem | IdentityRoleDto |
Identity.RoleSaveRequest | IdentityRoleCreateDto / IdentityRoleUpdateDto |
Identity.UserResponse | PagedResultDto<IdentityUserDto> |
Identity.UserItem | IdentityUserDto |
Identity.User | IdentityUserCreateOrUpdateDtoBase |
Identity.UserSaveRequest | IdentityUserCreateDto / IdentityUserUpdateDto |
New Exports
Services:
IdentityRoleService- Role management proxy serviceIdentityUserService- User management proxy serviceIdentityUserLookupService- User lookup proxy serviceProfileService- Profile management proxy service
Role Types:
IdentityRoleDto- Role data transfer objectIdentityRoleCreateDto- DTO for creating rolesIdentityRoleUpdateDto- DTO for updating rolesIdentityRoleCreateOrUpdateDtoBase- Base DTO for role operations
User Types:
IdentityUserDto- User data transfer objectIdentityUserCreateDto- DTO for creating usersIdentityUserUpdateDto- DTO for updating usersIdentityUserUpdateRolesDto- DTO for updating user rolesIdentityUserCreateOrUpdateDtoBase- Base DTO for user operationsGetIdentityUsersInput- Input for getting users with filtering
Profile Types:
ProfileDto- Profile data transfer objectUpdateProfileDto- DTO for updating profileChangePasswordInput- Input for changing password
Lookup Types:
UserData- User data from lookup serviceUserLookupCountInputDto- Input for counting usersUserLookupSearchInputDto- Input for searching users
v3.1.0
February 2026
- Version alignment with @abpjs/core
v3.0.0
February 2026
Breaking Changes
eIdentityRouteNames.Administration removed
The Administration key has been removed from eIdentityRouteNames. Use eThemeSharedRouteNames.Administration from @abpjs/theme-shared instead:
// Before (v2.7.0)
import { eIdentityRouteNames } from '@abpjs/identity';
const adminRoute = eIdentityRouteNames.Administration;
// After (v3.0.0)
import { eThemeSharedRouteNames } from '@abpjs/theme-shared';
const adminRoute = eThemeSharedRouteNames.Administration;
New Features
Route Providers
New route provider system for initializing identity routes:
import { initializeIdentityRoutes } from '@abpjs/identity';
// Call once during app initialization
initializeIdentityRoutes();
// This registers:
// - Identity Management (under Administration)
// - /identity/roles
// - /identity/users
For advanced configuration with a custom RoutesService:
import { configureRoutes, IDENTITY_ROUTE_PROVIDERS } from '@abpjs/identity';
import { getRoutesService } from '@abpjs/core';
const routesService = getRoutesService();
const addRoutes = configureRoutes(routesService);
addRoutes();
Policy Names
New constants for identity permission policies:
import { eIdentityPolicyNames } from '@abpjs/identity';
// Available policies:
eIdentityPolicyNames.IdentityManagement // 'AbpIdentity.Roles || AbpIdentity.Users'
eIdentityPolicyNames.Roles // 'AbpIdentity.Roles'
eIdentityPolicyNames.Users // 'AbpIdentity.Users'
// Use with permission checking
import { usePermission } from '@abpjs/core';
function IdentityMenu() {
const canManageIdentity = usePermission(eIdentityPolicyNames.IdentityManagement);
if (!canManageIdentity) return null;
return <IdentityManagementLink />;
}
getUserAssignableRoles() Method
New method on IdentityService to get roles that can be assigned to users:
import { useIdentityService } from '@abpjs/identity';
function UserRoleAssignment() {
const identityService = useIdentityService();
const loadAssignableRoles = async () => {
const response = await identityService.getUserAssignableRoles();
// response.items contains roles available for assignment
};
}
This calls GET /api/identity/users/assignable-roles endpoint.
Config Subpackage
The @abp/ng.identity/config functionality is now merged into the main package:
// All config exports are available from the main package
import {
configureRoutes,
IDENTITY_ROUTE_PROVIDERS,
initializeIdentityRoutes,
eIdentityRouteNames,
eIdentityPolicyNames,
} from '@abpjs/identity';
New Exports
initializeIdentityRoutes()- Initialize identity routesconfigureRoutes(routes)- Configure routes with custom RoutesServiceIDENTITY_ROUTE_PROVIDERS- Route provider configuration objecteIdentityPolicyNames- Constants for identity permission policiesIdentityPolicyNameKey- Type for policy name values
v2.9.0
February 2026
- Version alignment with @abpjs/core
v2.7.0
February 2026
New Features
Component Replacement Keys
New constants for replacing identity components:
import { eIdentityComponents } from '@abpjs/identity';
// Available component keys:
// eIdentityComponents.Roles = 'Identity.RolesComponent'
// eIdentityComponents.Users = 'Identity.UsersComponent'
Route Names
New constants for identity route names (localization keys):
import { eIdentityRouteNames } from '@abpjs/identity';
// Available route names:
// eIdentityRouteNames.IdentityManagement = 'AbpIdentity::Menu:IdentityManagement'
// eIdentityRouteNames.Roles = 'AbpIdentity::Roles'
// eIdentityRouteNames.Users = 'AbpIdentity::Users'
New Exports
eIdentityComponents- Constants for component replacement keysIdentityComponentKey- Type for identity component key valueseIdentityRouteNames- Constants for route names (localization keys)IdentityRouteNameKey- Type for identity route name values
v2.4.0
February 2026
New Features
-
IdentityService.getAllRoles()method - Fetch all roles without pagination in a single request:import { useIdentityService } from '@abpjs/identity';
function RoleSelector() {
const identityService = useIdentityService();
const loadAllRoles = async () => {
const response = await identityService.getAllRoles();
// response.items contains all roles
};
}This calls
GET /api/identity/roles/allendpoint. -
IdentityService.apiNameproperty - New property for REST API configuration. Defaults to'default'.
v2.2.0
February 2026
- Version alignment with @abpjs/core
v2.1.0
February 2026
- Version alignment with @abpjs/core
v2.0.0
January 2026
Breaking Changes
IDENTITY_ROUTESremoved - This deprecated constant has been removed. Use identity config services for route configuration.IdentityProvidersremoved - This deprecated provider has been removed.
New Features
-
IdentityStateService- New service class for programmatic identity state management:dispatchGetRoles()- Dispatch action to fetch rolesdispatchGetUsers()- Dispatch action to fetch usersdispatchCreateRole()- Dispatch action to create a roledispatchUpdateRole()- Dispatch action to update a roledispatchDeleteRole()- Dispatch action to delete a roledispatchCreateUser()- Dispatch action to create a userdispatchUpdateUser()- Dispatch action to update a userdispatchDeleteUser()- Dispatch action to delete a user
-
onVisiblePermissionChangeprop - New callback prop on bothRolesComponentandUsersComponentto handle permission modal visibility changes -
Component Interface Types - Added TypeScript interfaces for component inputs/outputs:
Identity.RolesComponentInputsIdentity.RolesComponentOutputsIdentity.UsersComponentInputsIdentity.UsersComponentOutputs
v1.1.0
January 2026
New Features
- Password rules display -
UsersComponentnow supports displaying password requirements:passwordRulesArrprop - Array of rules to display ('number','small','capital','special')requiredPasswordLengthprop - Minimum password length to display
PasswordRuletype - New exported type for password validation rules
Example
<UsersComponent
passwordRulesArr={['number', 'capital', 'small', 'special']}
requiredPasswordLength={6}
/>
v1.0.0
January 2026
New Features
- Sorting support in hooks -
useRolesanduseUsersnow include sorting state:sortKey- Current sort fieldsortOrder- Sort direction ('asc'|'desc'|'')setSortKey()- Update sort fieldsetSortOrder()- Update sort direction
SortOrdertype - New exported type for sort order values
Deprecations
IDENTITY_ROUTESdeprecated - Route configuration is now handled by identity config services. This constant is kept for backwards compatibility but may be removed in future versions.IdentityProvidersdeprecated - Use identity config services instead.
v0.9.0
January 2026
Breaking Changes
IDENTITY_ROUTESformat changed - Now returns{ routes: ABP.FullRoute[] }instead ofABP.FullRoute[]
New Features
fetchRolespagination - Now accepts optionalABP.PageQueryParamsfor pagination/filtering
v0.8.0
January 2026
- Version alignment with @abpjs/core
v0.7.6
January 2026 - Initial Release
- UsersComponent with CRUD operations
- RolesComponent with CRUD operations
- useUsers hook with pagination and search
- useRoles hook
- Permission integration for users and roles