{"_id":"@dbs-portal/module-identity","name":"@dbs-portal/module-identity","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@dbs-portal/module-identity","version":"1.0.0","description":"Identity management module for user and role management","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./components":{"import":"./dist/components.js","types":"./dist/components.d.ts"},"./services":{"import":"./dist/services.js","types":"./dist/services.d.ts"},"./types":{"import":"./dist/types.js","types":"./dist/types.d.ts"},"./hooks":{"import":"./dist/hooks.js","types":"./dist/hooks.d.ts"}},"scripts":{"build":"tsc && vite build","dev":"tsc --watch","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","lint":"biome lint src","format":"biome format src --write","lint:fix":"biome lint src --fix","type-check":"tsc --noEmit","clean":"rimraf dist"},"dependencies":{"@dbs-portal/core-api":"1.0.0","@dbs-portal/core-auth":"1.0.0","@dbs-portal/core-shared":"1.0.0","@dbs-portal/core-store":"1.0.0","@dbs-portal/core-ui":"1.0.0","@tanstack/react-query":"^5.0.0","@tanstack/react-router":"^1.0.0","antd":"^5.0.0","date-fns":"^3.0.0","immer":"^10.0.0","lodash-es":"^4.17.21","react":"^18.2.0","react-dom":"^18.2.0","zod":"^3.0.0","zustand":"^4.0.0"},"devDependencies":{"@dbs-portal/tool-build":"1.0.0","@dbs-portal/tool-testing":"1.0.0","@dbs-portal/tool-tsconfig":"1.0.0","@testing-library/jest-dom":"^6.6.4","@types/lodash-es":"^4.17.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","rimraf":"^5.0.0","typescript":"^5.0.0","vite":"^5.0.0","vitest":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"keywords":["dbs-portal","identity","user-management","role-management","authentication","authorization","react","typescript"],"author":{"name":"DBS Portal Team"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/devboost-solutions/dbs-portal.git","directory":"packages/modules/identity"},"bugs":{"url":"https://github.com/your-org/dbs-portal/issues"},"homepage":"https://github.com/your-org/dbs-portal#readme","_id":"@dbs-portal/module-identity@1.0.0","gitHead":"61a23904a481b624f3e8ed7abb6c944ecfeaca7b","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-PP/Yigt60Se457CDOUL1H2BKJmUs2VR88Nf2lmHjryzZTIT8hl8BYXTCJl8CHhXcgcmOBS+Hm8ITQqnBb9ABLA==","shasum":"251dea96fed7de62dd0d903beed87b2f82c3e589","tarball":"https://registry.npmjs.org/@dbs-portal/module-identity/-/module-identity-1.0.0.tgz","fileCount":128,"unpackedSize":1577026,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD+9x9z5lsFVecE09Fn/lHjGlHmdHNuduFs37f0zIIsugIhAMgvHZe7ZywUAnjY7737X4K3lnIkQNl57AkfFlq+TLyG"}]},"_npmUser":{"name":"longvq","email":"vqlong1604@gmail.com"},"directories":{},"maintainers":[{"name":"longvq","email":"vqlong1604@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/module-identity_1.0.0_1754218660558_0.7852936884222137"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-03T10:57:40.455Z","1.0.0":"2025-08-03T10:57:40.716Z","modified":"2025-08-03T10:57:41.024Z"},"maintainers":[{"name":"longvq","email":"vqlong1604@gmail.com"}],"description":"Identity management module for user and role management","homepage":"https://github.com/your-org/dbs-portal#readme","keywords":["dbs-portal","identity","user-management","role-management","authentication","authorization","react","typescript"],"repository":{"type":"git","url":"git+https://github.com/devboost-solutions/dbs-portal.git","directory":"packages/modules/identity"},"author":{"name":"DBS Portal Team"},"bugs":{"url":"https://github.com/your-org/dbs-portal/issues"},"license":"MIT","readme":"# @dbs-portal/module-identity\n\nA comprehensive identity management module for the DBS Portal, providing user and role management capabilities with advanced security features.\n\n## 🚀 Features\n\n### User Management\n- **Complete CRUD Operations**: Create, read, update, and delete users\n- **User Authentication**: Login/logout, password management, account verification\n- **Profile Management**: User profiles with customizable fields and avatar support\n- **Account Security**: Two-factor authentication, account lockout, password policies\n- **User Status Management**: Active/inactive users, email/phone verification\n\n### Role-Based Access Control (RBAC)\n- **Role Management**: Create and manage custom roles with specific permissions\n- **Permission System**: Granular permission control for different system features\n- **Default Roles**: System-defined roles that are automatically assigned\n- **Static Roles**: Protected system roles that cannot be deleted\n- **Role Assignment**: Assign multiple roles to users with inheritance\n\n### Security & Compliance\n- **Audit Logging**: Comprehensive audit trail for all identity-related activities\n- **Risk Assessment**: Automatic risk level calculation for security events\n- **Account Lockout**: Configurable lockout policies for failed login attempts\n- **Password Policies**: Enforced password complexity and rotation policies\n- **Session Management**: Control user sessions and concurrent logins\n\n### Administration\n- **System Overview**: Real-time statistics and monitoring dashboards\n- **Bulk Operations**: Mass user operations and data export capabilities\n- **Security Settings**: Configurable security policies and system settings\n- **Alert System**: Automated alerts for security events and policy violations\n\n## 📦 Installation\n\n```bash\n# Install the module\nyarn add @dbs-portal/module-identity\n\n# Install peer dependencies\nyarn add @dbs-portal/core-api @dbs-portal/core-auth @dbs-portal/core-shared @dbs-portal/core-store @dbs-portal/core-ui\n```\n\n## 🏗️ Architecture\n\n### Package Structure\n```\npackages/modules/identity/\n├── src/\n│   ├── components/          # React components\n│   │   ├── UserList.tsx     # User listing with filters\n│   │   ├── UserCreate.tsx   # User creation form\n│   │   ├── UserEdit.tsx     # User editing form\n│   │   ├── UserDetails.tsx  # User detail view\n│   │   ├── RoleList.tsx     # Role listing\n│   │   ├── RoleCreate.tsx   # Role creation form\n│   │   ├── RoleEdit.tsx     # Role editing form\n│   │   ├── RoleDetails.tsx  # Role detail view\n│   │   ├── IdentityAdmin.tsx # Admin dashboard\n│   │   └── IdentityAudit.tsx # Audit log viewer\n│   ├── hooks/               # React Query hooks\n│   │   ├── use-users.ts     # User management hooks\n│   │   └── use-roles.ts     # Role management hooks\n│   ├── services/            # API services\n│   │   ├── user-service.ts  # User API operations\n│   │   └── role-service.ts  # Role API operations\n│   ├── types.ts             # TypeScript definitions\n│   └── index.ts             # Main exports\n├── package.json\n├── tsconfig.json\n├── vite.config.ts\n└── README.md\n```\n\n### Dependencies\n- **Core Dependencies**: React 18, TypeScript 5, Ant Design 5\n- **State Management**: Zustand with React Query for server state\n- **Routing**: TanStack Router for navigation\n- **Validation**: Zod for runtime type validation\n- **Date Handling**: date-fns for date formatting and manipulation\n- **Utilities**: lodash-es for utility functions\n\n## 🎯 Quick Start\n\n### 1. Basic User Management\n\n```tsx\nimport { UserList, UserCreate, UserEdit } from '@dbs-portal/module-identity'\n\nfunction UserManagementPage() {\n  return (\n    <div>\n      <UserList\n        onEdit={(user) => console.log('Edit user:', user)}\n        onDelete={(user) => console.log('Delete user:', user)}\n        onLock={(user) => console.log('Lock user:', user)}\n        onUnlock={(user) => console.log('Unlock user:', user)}\n      />\n    </div>\n  )\n}\n```\n\n### 2. Role Management\n\n```tsx\nimport { RoleList, RoleCreate, useRoles } from '@dbs-portal/module-identity'\n\nfunction RoleManagementPage() {\n  const { data: roles, isLoading } = useRoles()\n\n  return (\n    <div>\n      <RoleList\n        roles={roles?.data || []}\n        loading={isLoading}\n        onEdit={(role) => console.log('Edit role:', role)}\n        onDelete={(role) => console.log('Delete role:', role)}\n      />\n    </div>\n  )\n}\n```\n\n### 3. Using Hooks for Data Management\n\n```tsx\nimport { \n  useUsers, \n  useCreateUser, \n  useUpdateUser, \n  useDeleteUser \n} from '@dbs-portal/module-identity'\n\nfunction UserHookExample() {\n  const { data: users, isLoading } = useUsers({ isActive: true })\n  const createUser = useCreateUser()\n  const updateUser = useUpdateUser()\n  const deleteUser = useDeleteUser()\n\n  const handleCreateUser = async (userData) => {\n    try {\n      await createUser.mutateAsync(userData)\n      console.log('User created successfully')\n    } catch (error) {\n      console.error('Failed to create user:', error)\n    }\n  }\n\n  return (\n    <div>\n      {/* Your component JSX */}\n    </div>\n  )\n}\n```\n\n## 🔧 API Reference\n\n### User Service\n\n#### Methods\n- `getUsers(filters)` - Get paginated list of users\n- `getUser(id)` - Get single user by ID\n- `createUser(userData)` - Create new user\n- `updateUser(userData)` - Update existing user\n- `deleteUser(id)` - Delete user\n- `changePassword(request)` - Change user password\n- `lockUser(request)` - Lock user account\n- `unlockUser(userId)` - Unlock user account\n- `setupTwoFactor(userId)` - Setup 2FA for user\n- `verifyTwoFactor(request)` - Verify 2FA setup\n- `disableTwoFactor(userId)` - Disable 2FA\n- `getUserRoles(userId)` - Get user's assigned roles\n- `assignRoles(userId, roleNames)` - Assign roles to user\n- `getUserPermissions(userId)` - Get user's permissions\n\n### Role Service\n\n#### Methods\n- `getRoles(filters)` - Get paginated list of roles\n- `getRole(id)` - Get single role by ID\n- `createRole(roleData)` - Create new role\n- `updateRole(roleData)` - Update existing role\n- `deleteRole(id)` - Delete role\n- `getRolePermissions(roleId)` - Get role permissions\n- `grantPermission(roleId, permission)` - Grant permission to role\n- `revokePermission(roleId, permission)` - Revoke permission from role\n- `setPermissions(roleId, permissions)` - Set all role permissions\n- `getRoleUsers(roleId)` - Get users with specific role\n\n## 🎨 Component Props\n\n### UserList Props\n```typescript\ninterface UserListProps {\n  users: User[]\n  loading?: boolean\n  onEdit?: (user: User) => void\n  onDelete?: (user: User) => void\n  onLock?: (user: User) => void\n  onUnlock?: (user: User) => void\n}\n```\n\n### UserCreate Props\n```typescript\ninterface UserCreateProps {\n  onSubmit?: (data: CreateUserFormData) => void\n  loading?: boolean\n  error?: string\n  className?: string\n}\n```\n\n### RoleList Props\n```typescript\ninterface RoleListProps {\n  roles: Role[]\n  loading?: boolean\n  onEdit?: (role: Role) => void\n  onDelete?: (role: Role) => void\n}\n```\n\n## 🔐 Security Features\n\n### Password Policy\n- Configurable minimum length (default: 8 characters)\n- Character requirements (uppercase, lowercase, numbers, special chars)\n- Password strength validation\n- Password history prevention\n- Automatic password expiration\n\n### Account Lockout\n- Failed login attempt tracking\n- Configurable lockout thresholds\n- Automatic unlock after specified duration\n- Manual unlock capabilities for administrators\n\n### Two-Factor Authentication\n- TOTP (Time-based One-Time Password) support\n- QR code generation for authenticator apps\n- Recovery codes for account recovery\n- Backup authentication methods\n\n### Audit Logging\n- Comprehensive activity tracking\n- Risk level assessment\n- IP address and user agent logging\n- Exportable audit reports\n- Real-time security alerts\n\n## 🚀 Advanced Usage\n\n### Custom Permission System\n\n```tsx\nimport { useUserPermissions, useRolePermissions } from '@dbs-portal/module-identity'\n\nfunction PermissionGuard({ permission, children }) {\n  const { data: userPermissions } = useUserPermissions(currentUserId)\n  \n  if (!userPermissions?.includes(permission)) {\n    return <div>Access Denied</div>\n  }\n  \n  return children\n}\n```\n\n### Bulk User Operations\n\n```tsx\nimport { useBulkUserOperation } from '@dbs-portal/module-identity'\n\nfunction BulkUserActions() {\n  const bulkOperation = useBulkUserOperation()\n  \n  const handleBulkActivate = async (userIds: string[]) => {\n    await bulkOperation.mutateAsync({\n      operation: 'activate',\n      userIds\n    })\n  }\n  \n  return (\n    <Button onClick={() => handleBulkActivate(selectedUserIds)}>\n      Activate Selected Users\n    </Button>\n  )\n}\n```\n\n## 📊 Monitoring & Analytics\n\n### User Statistics\n- Total user count and growth trends\n- Active vs inactive user ratios\n- Email and phone verification rates\n- Two-factor authentication adoption\n- Geographic distribution of users\n\n### Security Metrics\n- Failed login attempt patterns\n- Account lockout frequency\n- Password change frequency\n- High-risk activity detection\n- Compliance audit reports\n\n## 🔄 Integration\n\n### With Authentication System\n```tsx\nimport { useAuthStore } from '@dbs-portal/core-auth'\nimport { useUser } from '@dbs-portal/module-identity'\n\nfunction UserProfile() {\n  const { user: authUser } = useAuthStore()\n  const { data: userDetails } = useUser(authUser?.id)\n  \n  return (\n    <UserDetails \n      user={userDetails} \n      onEdit={() => navigate('/profile/edit')}\n    />\n  )\n}\n```\n\n### With Permission System\n```tsx\nimport { useUserPermissions } from '@dbs-portal/module-identity'\n\nfunction ProtectedComponent() {\n  const { data: permissions } = useUserPermissions(userId)\n  \n  const canEdit = permissions?.includes('Users.Update')\n  const canDelete = permissions?.includes('Users.Delete')\n  \n  return (\n    <div>\n      {canEdit && <EditButton />}\n      {canDelete && <DeleteButton />}\n    </div>\n  )\n}\n```\n\n## 🧪 Testing\n\nThe module includes comprehensive test coverage:\n\n```bash\n# Run tests\nyarn test\n\n# Run tests with coverage\nyarn test:coverage\n\n# Run tests in watch mode\nyarn test:watch\n```\n\n## 📝 Contributing\n\n1. Follow the established code patterns and TypeScript conventions\n2. Ensure all components have proper prop types and documentation\n3. Add tests for new functionality\n4. Update this README for any new features or breaking changes\n5. Follow the monorepo's linting and formatting standards\n\n## 📄 License\n\nMIT License - see the [LICENSE](../../LICENSE) file for details.\n\n## 🔗 Related Packages\n\n- [`@dbs-portal/core-auth`](../core/auth) - Authentication and authorization\n- [`@dbs-portal/core-api`](../core/api) - HTTP client and API utilities\n- [`@dbs-portal/core-ui`](../core/ui) - Shared UI components\n- [`@dbs-portal/core-shared`](../core/shared) - Common types and utilities\n","readmeFilename":"README.md","_rev":"1-26a49b73affb3f0c0dbc04380c7990a3"}