scar-chat/DATABASE_QUICK_REF.md

2.1 KiB

Database Quick Reference

Build

cd build
cmake ..
make

Creates:

  • chat_server - Chat server with database support
  • dbmanager - 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 user
  • admin - Full administrative access
  • moderator - 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)