Skip to main content
Version: 2.1.1

Identity Pro Module

The @abpjs/identity-pro package provides advanced identity management components and services for ABP React applications. This is the React equivalent of Angular's @volo/abp.ng.identity module.

ABP Commercial License Required

This package is free to use but requires the corresponding backend module from ABP Commercial. You can purchase an ABP Commercial license from abp.io.

Installation

npm install @abpjs/identity-pro
# or
yarn add @abpjs/identity-pro

Features

  • Role Management - Complete CRUD operations for roles with permissions
  • User Management - User creation, editing, role assignment, and claims management
  • Claim Type Management - Define and manage custom claim types (Pro feature)
  • User/Role Claims - Assign claims to users and roles (Pro feature)
  • Pagination & Sorting - Built-in support for paginated lists with sorting

Components

RolesComponent

Full-featured role management UI with create, edit, delete, and permissions.

import { RolesComponent } from '@abpjs/identity-pro';

function RolesPage() {
return <RolesComponent />;
}

Features:

  • Paginated role list with sorting
  • Create/edit role modal
  • Delete role with confirmation
  • Permission management integration
  • Claims management (Pro)

UsersComponent

Complete user management interface with role assignment.

import { UsersComponent } from '@abpjs/identity-pro';

function UsersPage() {
return <UsersComponent />;
}

Features:

  • Paginated user list with search and sorting
  • Create/edit user modal with role selection
  • Delete user with confirmation
  • Two-factor authentication toggle
  • Lockout settings
  • Claims management (Pro)

ClaimsComponent

Claim type management UI for defining custom claims.

import { ClaimsComponent } from '@abpjs/identity-pro';

function ClaimsPage() {
return <ClaimsComponent />;
}

Features:

  • Paginated claim type list
  • Create/edit claim type modal
  • Validation pattern (regex) support
  • Value type selection (String, Int, Boolean, DateTime)
  • Required flag

ClaimModal

Reusable modal for managing claims on users or roles.

import { ClaimModal } from '@abpjs/identity-pro';

function UserClaimsButton({ userId }) {
const [isOpen, setIsOpen] = useState(false);

return (
<>
<button onClick={() => setIsOpen(true)}>Manage Claims</button>
<ClaimModal
isOpen={isOpen}
onClose={() => setIsOpen(false)}
entityId={userId}
entityType="users"
/>
</>
);
}

Props:

PropTypeDescription
isOpenbooleanModal visibility state
onClose() => voidClose callback
entityIdstringUser or role ID
entityType'users' | 'roles'Type of entity

Hooks

useRoles

Hook for managing roles state and operations.

import { useRoles } from '@abpjs/identity-pro';

function MyRolesComponent() {
const {
roles,
totalCount,
isLoading,
error,
fetchRoles,
createRole,
updateRole,
deleteRole,
selectedRole,
setSelectedRole,
} = useRoles();

useEffect(() => {
fetchRoles();
}, [fetchRoles]);

const handleCreate = async (data) => {
const result = await createRole(data);
if (result.success) {
// Handle success
}
};
}

Returns:

PropertyTypeDescription
rolesIdentity.RoleItem[]List of roles
totalCountnumberTotal role count
isLoadingbooleanLoading state
errorstring | nullError message
selectedRoleIdentity.RoleItem | nullSelected role for editing
fetchRoles(params?) => Promise<Result>Fetch roles with pagination
createRole(data) => Promise<Result>Create a new role
updateRole(id, data) => Promise<Result>Update existing role
deleteRole(id) => Promise<Result>Delete a role
setSelectedRole(role) => voidSet selected role

useUsers

Hook for managing users state and operations.

import { useUsers } from '@abpjs/identity-pro';

function MyUsersComponent() {
const {
users,
totalCount,
isLoading,
fetchUsers,
createUser,
updateUser,
deleteUser,
getUserRoles,
} = useUsers();

useEffect(() => {
fetchUsers({ maxResultCount: 10 });
}, [fetchUsers]);
}

Returns:

PropertyTypeDescription
usersIdentity.UserItem[]List of users
totalCountnumberTotal user count
isLoadingbooleanLoading state
errorstring | nullError message
selectedUserIdentity.UserItem | nullSelected user
selectedUserRolesIdentity.RoleItem[]Roles of selected user
fetchUsers(params?) => Promise<Result>Fetch users with pagination
createUser(data) => Promise<Result>Create a new user
updateUser(id, data) => Promise<Result>Update existing user
deleteUser(id) => Promise<Result>Delete a user
getUserRoles(id) => Promise<Result>Get user's roles

useClaims

Hook for managing claim types and user/role claims (Pro feature).

import { useClaims } from '@abpjs/identity-pro';

function MyClaimsComponent() {
const {
claimTypes,
totalCount,
claimTypeNames,
isLoading,
fetchClaimTypes,
fetchClaimTypeNames,
createClaimType,
updateClaimType,
deleteClaimType,
getClaims,
updateClaims,
} = useClaims();

useEffect(() => {
fetchClaimTypes();
}, [fetchClaimTypes]);

// Get claims for a user
const userClaims = await getClaims(userId, 'users');

// Update claims for a role
await updateClaims(roleId, 'roles', newClaims);
}

Returns:

PropertyTypeDescription
claimTypesIdentity.ClaimType[]List of claim types
totalCountnumberTotal claim type count
claimTypeNamesIdentity.ClaimTypeName[]Claim type names for dropdowns
isLoadingbooleanLoading state
errorstring | nullError message
fetchClaimTypes(params?) => Promise<Result>Fetch claim types
fetchClaimTypeNames() => Promise<Result>Fetch claim type names
createClaimType(data) => Promise<Result>Create claim type
updateClaimType(data) => Promise<Result>Update claim type
deleteClaimType(id) => Promise<Result>Delete claim type
getClaims(id, type) => Promise<ClaimRequest[]>Get entity claims
updateClaims(id, type, claims) => Promise<Result>Update entity claims

useIdentity

High-level hook that combines roles and users management.

import { useIdentity } from '@abpjs/identity-pro';

function IdentityDashboard() {
const { roles, users, fetchRoles, fetchUsers } = useIdentity();

useEffect(() => {
fetchRoles();
fetchUsers();
}, [fetchRoles, fetchUsers]);
}

Services

IdentityService

Service class for identity-related API operations.

Role Methods:

MethodParametersReturnsDescription
getRolesparams?: PageQueryParamsPromise<RoleResponse>Get paginated roles
getRoleByIdid: stringPromise<RoleItem>Get role by ID
createRolebody: RoleSaveRequestPromise<RoleItem>Create a role
updateRoleid: string, body: RoleSaveRequestPromise<RoleItem>Update a role
deleteRoleid: stringPromise<RoleItem>Delete a role

User Methods:

MethodParametersReturnsDescription
getUsersparams?: PageQueryParamsPromise<UserResponse>Get paginated users
getUserByIdid: stringPromise<UserItem>Get user by ID
getUserRolesid: stringPromise<RoleResponse>Get user's roles
createUserbody: UserSaveRequestPromise<UserItem>Create a user
updateUserid: string, body: UserSaveRequestPromise<UserItem>Update a user
deleteUserid: stringPromise<void>Delete a user

Claim Methods (Pro):

MethodParametersReturnsDescription
getClaimTypeNames-Promise<ClaimTypeName[]>Get claim type names
getClaimTypesparams?: PageQueryParamsPromise<ClaimResponse>Get paginated claim types
getClaimTypeByIdid: stringPromise<ClaimType>Get claim type by ID
createClaimTypebody: ClaimTypePromise<ClaimType>Create claim type
updateClaimTypebody: ClaimTypePromise<ClaimType>Update claim type
deleteClaimTypeid: stringPromise<void>Delete claim type
getClaims{ id, type }Promise<ClaimRequest[]>Get entity claims
updateClaims{ id, type, claims }Promise<void>Update entity claims

Routes

The package provides pre-configured routes and constants:

import {
IDENTITY_ROUTES,
IDENTITY_ROUTE_PATHS,
IDENTITY_POLICIES
} from '@abpjs/identity-pro';

// Route paths
IDENTITY_ROUTE_PATHS.BASE // '/identity'
IDENTITY_ROUTE_PATHS.ROLES // '/identity/roles'
IDENTITY_ROUTE_PATHS.USERS // '/identity/users'

// Required policies for routes
IDENTITY_POLICIES.ROLES // 'AbpIdentity.Roles'
IDENTITY_POLICIES.USERS // 'AbpIdentity.Users'
IDENTITY_POLICIES.USERS_CREATE // 'AbpIdentity.Users.Create'
IDENTITY_POLICIES.USERS_UPDATE // 'AbpIdentity.Users.Update'
IDENTITY_POLICIES.USERS_DELETE // 'AbpIdentity.Users.Delete'
IDENTITY_POLICIES.ROLES_CREATE // 'AbpIdentity.Roles.Create'
IDENTITY_POLICIES.ROLES_UPDATE // 'AbpIdentity.Roles.Update'
IDENTITY_POLICIES.ROLES_DELETE // 'AbpIdentity.Roles.Delete'

TypeScript Support

The package exports all TypeScript interfaces under the Identity namespace:

import { Identity } from '@abpjs/identity-pro';

// Types
const role: Identity.RoleItem = { ... };
const user: Identity.UserItem = { ... };
const claim: Identity.ClaimType = { ... };

// Request types
const roleRequest: Identity.RoleSaveRequest = { ... };
const userRequest: Identity.UserSaveRequest = { ... };
const claimRequest: Identity.ClaimRequest = { ... };

// Response types
const roleResponse: Identity.RoleResponse = { ... };
const userResponse: Identity.UserResponse = { ... };
const claimResponse: Identity.ClaimResponse = { ... };

// Enums
const valueType = Identity.ClaimValueType.String; // 0

Key Types:

TypeDescription
Identity.RoleItemRole entity with id, name, isDefault, isPublic, isStatic
Identity.RoleSaveRequestRequest for creating/updating roles
Identity.UserItemUser entity with all properties
Identity.UserSaveRequestRequest for creating/updating users
Identity.ClaimTypeClaim type definition (Pro)
Identity.ClaimTypeNameSimple claim name for dropdowns (Pro)
Identity.ClaimRequestClaim assignment request (Pro)
Identity.ClaimValueTypeEnum: String, Int, Boolean, DateTime (Pro)

Dependencies

  • @abpjs/core - Core ABP React functionality

Comparison with @abpjs/identity

Feature@abpjs/identity@abpjs/identity-pro
Roles CRUD
Users CRUD
Role Assignment
Permissions
Claim Types
User Claims
Role Claims
ClaimsComponent
ClaimModal

See Also