| Crates.io | systemprompt-users |
| lib.rs | systemprompt-users |
| version | 0.0.11 |
| created_at | 2026-01-21 19:04:02.281326+00 |
| updated_at | 2026-01-25 21:42:37.059997+00 |
| description | Core user management module for systemprompt.io |
| homepage | https://systemprompt.io |
| repository | https://github.com/systempromptio/systemprompt-core |
| max_upload_size | |
| id | 2059899 |
| size | 193,421 |
Core user management module for systemprompt.io.
Part of the Domain layer in the systemprompt.io architecture.
This crate provides user management functionality including:
src/
├── lib.rs # Public exports
├── error.rs # UserError enum, Result type alias
├── models/
│ └── mod.rs # User, UserSession, UserActivity, UserStats, UserExport
├── repository/
│ ├── mod.rs # UserRepository struct, MAX_PAGE_SIZE constant
│ ├── banned_ip/
│ │ ├── mod.rs # BannedIpRepository struct
│ │ ├── types.rs # BannedIp, BanDuration, BanIpParams
│ │ ├── queries.rs # ban_ip, unban_ip, is_banned, get_ban, cleanup_expired
│ │ └── listing.rs # list_active_bans, list_bans_by_source, count_active_bans
│ └── user/
│ ├── mod.rs # Module exports
│ ├── find.rs # find_by_id, find_by_email, find_by_name, find_by_role
│ ├── list.rs # list, search, count, bulk operations
│ ├── stats.rs # count_by_status, count_by_role, get_stats
│ ├── operations.rs # create, update_*, delete, cleanup_old_anonymous
│ ├── merge.rs # merge_users, MergeResult
│ └── session.rs # list_sessions, end_session, end_all_sessions
├── services/
│ ├── mod.rs # Service exports
│ ├── admin_service.rs # UserAdminService, PromoteResult, DemoteResult
│ ├── user_provider.rs # UserProviderImpl wrapper for trait-based access
│ └── user/
│ ├── mod.rs # UserService - primary service
│ └── provider.rs # UserProvider, RoleProvider trait implementations
└── jobs/
├── mod.rs # Job exports
└── cleanup_anonymous_users.rs # CleanupAnonymousUsersJob (30-day cleanup)
User - Core user entity with id, name, email, roles, statusUserSession - Session with timestamps and device infoUserActivity - User activity summary (last active, counts)UserWithSessions - User with active session countUserStats - Aggregate statistics (totals, breakdowns)UserCountBreakdown - Counts by status and roleUserExport - Export-friendly user representationUserStatus - Active, Suspended, Deleted (re-exported from systemprompt-models)UserRole - Admin, User, Anonymous (re-exported from systemprompt-models)UserService - Primary service implementing UserProvider and RoleProviderUserAdminService - Admin operations (promote, demote)UserProviderImpl - Wrapper for trait-based dependency injectionUserRepository - User database operationsBannedIpRepository - IP ban managementUpdateUserParams - Multi-field update structMergeResult - Result of merging two usersBanDuration - Hours, Days, or PermanentBanIpParams - Basic ban parametersBanIpWithMetadataParams - Ban with offense trackingBannedIp - Active ban recordUserProvider - User lookup and creationRoleProvider - Role managementUserError - Domain-specific errors (NotFound, EmailAlreadyExists, etc.)Result<T> - Type alias for std::result::Result<T, UserError>use systemprompt_database::DbPool;
use systemprompt_users::{UserService, UserRole, UserStatus};
let user_service = UserService::new(&db_pool)?;
let user = user_service.find_by_email("user@example.com").await?;
let admins = user_service.find_by_role(UserRole::Admin).await?;
let stats = user_service.get_stats().await?;
| Crate | Purpose |
|---|---|
systemprompt-database |
DbPool for database access |
systemprompt-traits |
UserProvider, RoleProvider, Job traits |
systemprompt-identifiers |
UserId, SessionId typed identifiers |
systemprompt-models |
UserRole, UserStatus enums |
systemprompt-provider-contracts |
Job registration macro |
Add to your Cargo.toml:
[dependencies]
systemprompt-users = "0.0.1"
FSL-1.1-ALv2 - See LICENSE for details.