Skip to main content
Version: 0.7.6

Users

The @abpjs/identity package provides components and hooks for user management.

UsersComponent

The UsersComponent provides a complete user management interface:

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

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

This component includes:

  • User list with pagination
  • Search functionality
  • Create user modal
  • Edit user modal
  • Delete confirmation
  • Role assignment
  • Permission management button

useUsers Hook

For custom implementations, use the useUsers hook:

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

function CustomUserList() {
const {
users,
totalCount,
loading,
page,
pageSize,
setPage,
setPageSize,
search,
setSearch,
createUser,
updateUser,
deleteUser,
refresh,
} = useUsers();

return (
<div>
<input
type="text"
placeholder="Search users..."
value={search}
onChange={(e) => setSearch(e.target.value)}
/>

{loading ? (
<p>Loading...</p>
) : (
<table>
<thead>
<tr>
<th>Username</th>
<th>Email</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{users.map((user) => (
<tr key={user.id}>
<td>{user.userName}</td>
<td>{user.email}</td>
<td>
<button onClick={() => deleteUser(user.id)}>Delete</button>
</td>
</tr>
))}
</tbody>
</table>
)}

<p>Total: {totalCount}</p>
</div>
);
}

API Reference

useUsers Returns

PropertyTypeDescription
usersUserItem[]List of users
totalCountnumberTotal number of users
loadingbooleanLoading state
pagenumberCurrent page
pageSizenumberItems per page
setPage(page: number) => voidSet current page
setPageSize(size: number) => voidSet page size
searchstringCurrent search filter
setSearch(search: string) => voidSet search filter
createUser(input: UserSaveRequest) => Promise<void>Create a user
updateUser(id: string, input: UserSaveRequest) => Promise<void>Update a user
deleteUser(id: string) => Promise<void>Delete a user
refresh() => voidRefresh the user list

UserItem Type

interface UserItem {
id: string;
userName: string;
email: string;
name?: string;
surname?: string;
phoneNumber?: string;
isActive: boolean;
lockoutEnabled: boolean;
creationTime: string;
}

UserSaveRequest Type

interface UserSaveRequest {
userName: string;
email: string;
password?: string;
name?: string;
surname?: string;
phoneNumber?: string;
isActive: boolean;
lockoutEnabled: boolean;
roleNames: string[];
}

Creating a User

import { useUsers } from '@abpjs/identity';
import { useToaster } from '@abpjs/theme-shared';

function CreateUserForm() {
const { createUser } = useUsers();
const toaster = useToaster();

const handleCreate = async (formData: UserSaveRequest) => {
try {
await createUser(formData);
toaster.success('User created successfully!');
} catch (error) {
toaster.error('Failed to create user');
}
};

// ... form implementation
}

Using IdentityService Directly

For low-level API access:

import { IdentityService } from '@abpjs/identity';

// Get users with pagination
const result = await IdentityService.getUsers({
skipCount: 0,
maxResultCount: 10,
filter: 'john',
});

// Get a single user
const user = await IdentityService.getUser('user-id');

// Create a user
await IdentityService.createUser({
userName: 'newuser',
email: 'new@example.com',
password: 'Password123!',
roleNames: ['admin'],
});