2.1 KiB
2.1 KiB
Database Quick Reference
Build
cd build
cmake ..
make
Creates:
chat_server- Chat server with database supportdbmanager- User management tool
Quick Start
1. Create Admin User
./dbmanager register admin AdminPassword123 admin@example.com admin
2. Create Regular Users
./dbmanager register user1 UserPassword456 user1@example.com user
./dbmanager register user2 UserPassword789 user2@example.com user
3. Verify Users
./dbmanager list
4. Test Authentication
./dbmanager authenticate user1 UserPassword456
Common Tasks
| Task | Command |
|---|---|
| Register user | dbmanager register <user> <pass> [email] [role] |
| List all | dbmanager list |
| List by role | dbmanager list-role admin |
| Change role | dbmanager setrole <user> admin |
| Disable user | dbmanager deactivate <user> |
| Enable user | dbmanager activate <user> |
| Test login | dbmanager authenticate <user> <pass> |
Database Location
./scar_chat.db # Created in current working directory
Roles
user- Regular chat useradmin- Full administrative accessmoderator- Moderation capabilities
Password Requirements
- Minimum 8 characters
- No special format required
- Unique per user
Security
- SHA256 hashing with per-user salt
- Passwords never stored in plain text
- Database file should have restricted permissions
chmod 600 scar_chat.db
C++ Integration
#include "database.h"
Database db("scar_chat.db");
db.initialize();
// Register
db.register_user("alice", "secret123", "alice@example.com", "user");
// Authenticate
if (db.authenticate_user("alice", "secret123")) {
// Success
}
// Get user
User user = db.get_user("alice");
std::cout << "Role: " << user.role << std::endl;
Database Schema
Users Table:
- id (INTEGER PRIMARY KEY)
- username (TEXT UNIQUE)
- password_hash (TEXT)
- salt (TEXT)
- email (TEXT)
- role (TEXT) - 'user', 'admin', 'moderator'
- is_active (BOOLEAN)
- created_at (TIMESTAMP)
- updated_at (TIMESTAMP)