Overview
GamePanelX implements a comprehensive user management system with separate accounts for administrators, resellers, and end-user clients. Each user type has different access levels and capabilities within the system.Client Accounts
End-users who own and manage their game servers
Admin Accounts
Full system access for managing all servers and users
SSO Authentication
Secure single sign-on for isolated server access
Reseller Support
Optional reseller accounts for hosting providers
User Types
GamePanelX supports three types of user accounts:Client Users
Standard user accounts that can:- Create and manage their own game servers
- Access file manager for their servers
- View server console output
- Configure server settings
- Manage server startup parameters
Admin Users
Administrators with full system access:- Create and manage all user accounts
- Add and configure game types
- Manage network servers
- Create templates
- Modify system configuration
- Access all game servers
Reseller Accounts
Optional tier for hosting providers:- Create and manage client accounts
- Limited administrative capabilities
- View only their clients’ servers
- Custom branding options (via plugins)
Client User Management
Creating Users
TheUsers::create() method handles client account creation:
Create User Account
Usernames must be at least 3 characters and can only contain letters, numbers, hyphens, and underscores. Dots are not allowed as they interfere with server directory naming.
Validation
- Validates username format (alphanumeric, -, _)
- Enforces minimum password length (5 characters)
- Checks password strength (rejects common passwords)
- Verifies username doesn’t already exist
SSO Setup
- Encrypts username and password using AES encryption
- Stores SSO credentials in database
- Creates MD5 hash for backward compatibility
- Minimum 5 characters
- Cannot be common passwords like:
123,password,pass123 - No maximum length (but reasonable limits apply)
- Stored using AES encryption for SSO and MD5 for legacy auth
Updating Users
TheUsers::update() method modifies existing user accounts:
Update User Account
Username Changes
Username Changes
When changing a username:
- Updates database record
- Updates SSO credentials with new username
- Executes
UsernameChangescript on all remote network servers - Renames user directories on each network server
- Updates server ownership records
Password Changes
Password Changes
When changing a password:
- Updates SSO encrypted password in database
- Clears legacy MD5 password
- Executes
ChangePasswordscript on all remote network servers - Updates system user password with crypt() hash
Profile Updates
Profile Updates
For email, name, language, and theme changes:
- Updates database record immediately
- No remote server operations required
- Language and theme stored in user session
Deleting Users
TheUsers::delete() method removes user accounts:
Delete User Account
Soft Delete
- Sets
deleted = 1in database - Preserves user record for audit trail
- User cannot log in after deletion
Users cannot be deleted if they own active servers. Transfer or delete all servers before removing the user account.
Admin User Management
Creating Admins
TheAdmins::create() method creates administrator accounts:
Create Admin Account
- Same username validation as client accounts
- Enhanced password hashing:
base64(sha1('ZzaX' + password + 'GPX88')) - Stored in separate
adminstable - No SSO credentials (admins don’t own system users)
- Full panel access upon login
Admin vs Client Authentication
- Admin Login
- Client Login
Database Table: Session Variable:Access Level: Full system access
adminsPassword Hash:Single Sign-On (SSO) System
GamePanelX implements SSO for secure server isolation:How SSO Works
User Creation
When a user is created:
- Username and password are AES encrypted
- Stored in database as
sso_userandsso_pass - Encryption key from
configuration.php
Server Creation
When creating a server for a user:
- SSO credentials are decrypted
- System username is prefixed with
gpx(e.g.,gpxjohn) - System user account created on network server
- Server runs under this isolated user account
SSO Implementation
Retrieve SSO Credentials
User Database Schema
Users Table
Admins Table
Resellers Table
Permissions System
GamePanelX uses session-based permissions:Permission Checks
Admin-Only Operations
User-Owned Server Check
Access Levels
| Operation | Admin | Reseller | Client |
|---|---|---|---|
| Create users | ✓ | ✓ | ✗ |
| Delete users | ✓ | ✓ (own clients) | ✗ |
| Create servers | ✓ | ✓ | ✓ (own servers) |
| Manage network | ✓ | ✗ | ✗ |
| Add games | ✓ | ✗ | ✗ |
| Create templates | ✓ | ✗ | ✗ |
| View all servers | ✓ | ✓ (own clients) | ✗ |
| System settings | ✓ | ✗ | ✗ |
| Install plugins | ✓ | ✗ | ✗ |
User Preferences
Language Support
Users can select their preferred language:Theme Support
Users can customize their interface theme:Best Practices
Account Security
Account Security
- Enforce strong passwords (minimum 8+ characters recommended)
- Use unique usernames for each client
- Regularly audit user accounts and remove inactive users
- Protect the encryption key in
configuration.php
User Organization
User Organization
- Use consistent naming conventions for usernames
- Fill in first name, last name, and email for all users
- Document user purposes in server descriptions
- Use reseller accounts to organize clients by customer
Permissions Management
Permissions Management
- Limit admin accounts to trusted personnel only
- Create separate admin accounts rather than sharing credentials
- Use reseller accounts for delegated management
- Review server ownership periodically
Troubleshooting
User Cannot Login
- Verify account is not deleted (
deleted = 0) - Check password was encrypted correctly
- Ensure cookies and sessions are working
- Review error logs for authentication failures
SSO Errors
- Verify encryption key in
configuration.php - Check database fields
sso_userandsso_passare not empty - Test SSH connectivity to network servers
- Ensure
CreateUserscript succeeded
Username Change Fails
- Stop all servers owned by the user first
- Check SSH connectivity to all network servers
- Verify
UsernameChangescript has execute permissions - Review server logs at
$HOME/logs/servers.log