Overview
The Admin service provides:- User Management: View, edit, and delete user accounts
- Organization Management: Organization configuration and licensing
- Billing Operations: Manual billing adjustments and Stripe operations
- System Tools: Database migrations, cache management, utilities
- Provider Administration: MSP provider management
- Reporting: System statistics and usage reports
Architecture
Configuration
Application Settings
Fromsrc/Admin/Startup.cs:33:
Service Configuration
Admin Settings
AdminSettings Configuration
Authentication
Read-Only Identity Store
The Admin service uses a read-only environment-based identity store:Admin users are configured via environment variables, not stored in the database.
Read-Only User Store
Cookie Configuration
For self-hosted deployments:Cookie Path
Controllers
The Admin service includes several controller areas:Core Controllers
Tools Controller
Fromsrc/Admin/Controllers/ToolsController.cs:25:
Provides administrative utilities:
Braintree Charging
Manual payment processing for Braintree customers
Stripe Operations
Direct Stripe API operations and adjustments
License Generation
Generate organization licenses
User Promotion
Promote users to premium
Organization Management
Administrative organization operations:Organization Tools
Database Migrations
Database migrations run automatically on startup for self-hosted instances.
src/Admin/Startup.cs:120:
Migration Service
- SQL Server
- MySQL
- PostgreSQL
- SQLite
Background Jobs
Fromsrc/Admin/Startup.cs:118:
Job Services
- Email queue processing (cloud only)
- Database migrations (self-hosted)
- Scheduled maintenance tasks
View Structure
The Admin service uses Razor views organized by feature:View Locations
- Auth: Login and authentication views
- AdminConsole: Organization and user management
- Billing: Billing operations and reports
Middleware Pipeline
Fromsrc/Admin/Startup.cs:133:
Request Pipeline
Access Control
The Admin service implements permission-based access control:Permission System
Permission Attribute
Deployment
Environment Variables
Docker
Self-Hosted Access
Nginx Configuration
Self-Hosted vs Cloud
Integration with Other Services
Stripe
Direct Stripe API integration for billing operations
Database
Direct database access for administrative queries
Azure Queue integration for email processing (cloud)
Cache
Distributed cache for performance
Security Considerations
- Environment-based user authentication
- No user self-registration
- Permission-based access control
- Read-only operations preferred
- Audit logging for sensitive operations
Related Services
- API Service - Main application API
- Billing Service - Webhook-based billing processing
- Identity Service - User authentication