netgescon-day0/docs/07-struttura-amministratori/10-CREAZIONE-AMMINISTRATORE.md

12 KiB

🚀 PROCEDURE CREAZIONE AMMINISTRATORE

Guida Completa Step-by-Step

📅 Data: 07 Agosto 2025

🎯 Caso Studio: Amministratore 00000000 "Michele Admin"


📋 PREREQUISITI

🔧 Ambiente Preparato

# Verifica servizi attivi
systemctl status mysql
systemctl status nginx  
php artisan --version

# Verifica spazio disco
df -h /
# Target: Almeno 10GB liberi per nuovo amministratore

# Verifica permessi
ls -la storage/app/amministratori/
# Target: Permessi scrittura per www-data/michele

📊 Database Principale Accessibile

mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' netgescon -e "SELECT COUNT(*) FROM users;"
# Target: Connessione attiva

🏗️ STEP 1: PREPARAZIONE UTENTE

👤 Creazione/Verifica User Account

# Verifica se utente esiste già
mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' netgescon \
-e "SELECT id, email, name FROM users WHERE email = 'admin@example.com';"

# Se non esiste, crea nuovo utente
mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' netgescon \
-e "INSERT INTO users (name, email, password, role, created_at, updated_at) 
    VALUES ('Michele Admin', 'michele.admin@studio.it', 
    '$2y$10$hash_password_here', 'admin', NOW(), NOW());"

🔐 Generazione Password Hash

# Genera hash password sicura
php artisan tinker --execute="echo Hash::make('password_sicura_qui');"

🏢 STEP 2: CREAZIONE RECORD AMMINISTRATORE

📝 Inserimento Database Principale

-- Template SQL per nuovo amministratore
INSERT INTO amministratori (
    codice_univoco,
    user_id,
    nome,
    cognome,
    denominazione_studio,
    codice_fiscale,
    partita_iva,
    indirizzo,
    cap,
    citta,
    provincia,
    telefono,
    email,
    pec,
    database_attivo,
    cartella_base,
    data_attivazione,
    stato,
    created_at,
    updated_at
) VALUES (
    '00000000',                                    -- Codice amministratore
    2,                                             -- ID utente (da users table)
    'Michele',                                     -- Nome
    'Admin',                                       -- Cognome
    'Studio Amministrativo Michele',               -- Denominazione studio
    'XXXYYY80A01H501Z',                           -- Codice fiscale
    '12345678901',                                -- Partita IVA
    'Via Roma 123',                               -- Indirizzo
    '20100',                                      -- CAP
    'Milano',                                     -- Città
    'MI',                                         -- Provincia
    '02-12345678',                               -- Telefono
    'michele.admin@studio.it',                   -- Email
    'pec@studio.pec.it',                        -- PEC
    'netgescon_admin_00000000',                  -- Database dedicato
    'amministratori/00000000',                   -- Cartella base
    CURDATE(),                                   -- Data attivazione
    'attivo',                                    -- Stato
    NOW(),                                       -- Created at
    NOW()                                        -- Updated at
);

🔗 Comando MySQL Esecuzione

mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' netgescon \
-e "INSERT INTO amministratori (codice_univoco, user_id, nome, cognome, denominazione_studio, database_attivo, cartella_base, data_attivazione, stato, created_at, updated_at) 
    VALUES ('00000001', 2, 'Nuovo', 'Amministratore', 'Studio Test', 'netgescon_admin_00000001', 'amministratori/00000001', CURDATE(), 'attivo', NOW(), NOW());"

🏗️ STEP 3: CREAZIONE STRUTTURA COMPLETA

🛠️ Comando Artisan Automatico

# Creazione struttura completa
cd /var/www/netgescon
php artisan netgescon:create-admin-structure 00000001 --force

# Output atteso:
# 🚀 Creazione struttura per amministratore: 00000001
# 📦 Creazione database dedicato...
# ✅ Database creato: netgescon_admin_00000001
# 📁 Creazione struttura cartelle...
# ⚙️ Creazione configurazioni...
# 🎉 Struttura amministratore 00000001 creata con successo!

📁 Creazione Manuale (se Artisan fallisce)

# Creazione struttura cartelle manuale
mkdir -p storage/app/amministratori/00000001/{documenti/{studio/{contratti,certificazioni,assicurazioni,comunicazioni,fatturazione}},database/{backups/{daily,weekly,monthly},exports,migrations,scripts},stabili,logs/{sistema,accessi,operazioni,errori,backup},reports/{mensili,annuali,custom,amministratore},temp/{uploads,processing,exports,imports,migrations},archivio/{per_anno,comunicazioni,assemblee,contratti_scaduti},scripts}

💾 Creazione Database Manuale

# Creazione database amministratore
mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' \
-e "CREATE DATABASE netgescon_admin_00000001 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# Creazione tabelle base
mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' netgescon_admin_00000001 \
-e "CREATE TABLE stabili (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    codice_stabile VARCHAR(20) NOT NULL,
    denominazione VARCHAR(255) NOT NULL,
    indirizzo VARCHAR(255) NOT NULL,
    cap VARCHAR(10) NOT NULL,
    citta VARCHAR(100) NOT NULL,
    provincia VARCHAR(5) NOT NULL,
    database_dedicato VARCHAR(100) NULL,
    created_at TIMESTAMP NULL,
    updated_at TIMESTAMP NULL,
    UNIQUE KEY stabili_codice_unique (codice_stabile)
);"

📋 STEP 4: CONFIGURAZIONI

⚙️ File config.json

cat > storage/app/amministratori/00000001/config.json << 'EOF'
{
    "amministratore": {
        "codice_univoco": "00000001",
        "nome_completo": "Nuovo Amministratore",
        "denominazione_studio": "Studio Test",
        "database_principale": "netgescon_admin_00000001",
        "created_at": "2025-08-07T12:00:00.000Z",
        "version": "2.1.0"
    },
    "database": {
        "host": "127.0.0.1",
        "port": "3306",
        "database": "netgescon_admin_00000001",
        "backup_path": "database/backups",
        "retention_days": 90
    },
    "backup": {
        "enabled": true,
        "frequency": "daily",
        "time": "02:00",
        "retention_days": 30,
        "include_files": true,
        "include_database": true,
        "compress": true
    },
    "folders": {
        "documenti": "documenti",
        "database": "database", 
        "stabili": "stabili",
        "logs": "logs",
        "reports": "reports",
        "temp": "temp",
        "archivio": "archivio"
    },
    "security": {
        "log_level": "info",
        "max_file_size": "50MB",
        "allowed_extensions": ["pdf", "doc", "docx", "xls", "xlsx", "jpg", "png"],
        "encryption": false
    }
}
EOF

📖 File README.md

cat > storage/app/amministratori/00000001/README.md << 'EOF'
# 🏢 Amministratore: Nuovo Amministratore

## 📋 Informazioni Generali
- **Codice Univoco**: `00000001`
- **Denominazione Studio**: Studio Test
- **Database Principale**: `netgescon_admin_00000001`
- **Creato**: 07/08/2025 12:00
- **Versione NetGescon**: 2.1.0

## 📁 Struttura Archivio
[... resto del README template ...]
EOF

🛠️ Script Manutenzione

cat > storage/app/amministratori/00000001/scripts/maintenance.sh << 'EOF'
#!/bin/bash
# Script manutenzione amministratore 00000001
ADMIN_CODE="00000001"
BASE_PATH="/var/www/netgescon/storage/app/amministratori/$ADMIN_CODE"
LOG_FILE="$BASE_PATH/logs/sistema/maintenance.log"

echo "🧹 Avvio manutenzione amministratore $ADMIN_CODE" | tee -a $LOG_FILE
[... resto dello script ...]
EOF

chmod +x storage/app/amministratori/00000001/scripts/maintenance.sh

📝 Log Iniziale

echo "$(date '+%Y-%m-%d %H:%M:%S') - Struttura amministratore 00000001 creata" > storage/app/amministratori/00000001/logs/sistema/creation.log

🏘️ STEP 5: PRIMO STABILE (OPZIONALE)

📊 Creazione Record Stabile

mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' netgescon \
-e "INSERT INTO stabili (codice_stabile, denominazione, indirizzo, cap, citta, provincia, amministratore_id, created_at, updated_at) 
    VALUES ('TST00001', 'Condominio Test', 'Via Test 1', '20100', 'Milano', 'MI', 
    (SELECT id FROM amministratori WHERE codice_univoco = '00000001'), NOW(), NOW());"

🏗️ Creazione Struttura Stabile

# Usando comando Artisan
php artisan netgescon:create-stabile-structure 00000001 TST00001 --force

# Creazione manuale se necessario
mkdir -p storage/app/amministratori/00000001/stabili/TST00001/{database/{backups,exports,scripts},documenti/{amministrative,assemblee,bilanci,comunicazioni,contratti,fornitori,manutentive,progetti,sicurezza,varie},logs/{sistema,operazioni,errori,backup},reports/{mensili,annuali,custom},temp/{uploads,processing,exports,imports}}

# Database stabile
mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' \
-e "CREATE DATABASE netgescon_stabile_TST00001 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

STEP 6: VERIFICHE FINALI

🔍 Controllo Database

# Verifica database creati
mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' \
-e "SHOW DATABASES LIKE 'netgescon_admin_00000001%';"

mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' \
-e "SHOW DATABASES LIKE 'netgescon_stabile_%';"

📁 Controllo Filesystem

# Verifica struttura cartelle
find storage/app/amministratori/00000001 -type d | sort

# Verifica permessi
ls -la storage/app/amministratori/00000001/

🔗 Controllo Relazioni

# Test relazione user → amministratore
mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' netgescon \
-e "SELECT u.email, a.codice_univoco, a.nome_completo, a.database_attivo 
    FROM users u 
    JOIN amministratori a ON u.id = a.user_id 
    WHERE a.codice_univoco = '00000001';"

🧪 Test Funzionalità

# Test comando Laravel
php artisan tinker --execute="
\$admin = \App\Models\Amministratore::where('codice_univoco', '00000001')->first();
echo 'Admin: ' . \$admin->nome_completo . PHP_EOL;
echo 'Database: ' . \$admin->database_attivo . PHP_EOL;
echo 'Stabili: ' . \$admin->stabili->count() . PHP_EOL;
"

📊 TEMPLATE RAPIDO

Script Completo Nuova Creazione

#!/bin/bash
# create-new-admin.sh

ADMIN_CODE=$1
ADMIN_NAME=$2
STUDIO_NAME=$3
USER_ID=$4

if [ $# -ne 4 ]; then
    echo "Uso: $0 CODICE NOME STUDIO USER_ID"
    echo "Esempio: $0 00000002 'Mario Rossi' 'Studio Rossi' 3"
    exit 1
fi

echo "🚀 Creazione amministratore $ADMIN_CODE..."

# 1. Inserimento database
mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' netgescon \
-e "INSERT INTO amministratori (codice_univoco, user_id, nome_completo, denominazione_studio, database_attivo, cartella_base, data_attivazione, stato, created_at, updated_at) 
    VALUES ('$ADMIN_CODE', $USER_ID, '$ADMIN_NAME', '$STUDIO_NAME', 'netgescon_admin_$ADMIN_CODE', 'amministratori/$ADMIN_CODE', CURDATE(), 'attivo', NOW(), NOW());"

# 2. Creazione struttura
cd /var/www/netgescon
php artisan netgescon:create-admin-structure $ADMIN_CODE --force

# 3. Verifica finale
echo "✅ Amministratore $ADMIN_CODE creato con successo!"
find storage/app/amministratori/$ADMIN_CODE -type d | wc -l | xargs echo "Cartelle create:"
mysql -h 127.0.0.1 -u netgescon_user -p'NetGescon2024!' -e "SHOW DATABASES LIKE 'netgescon_admin_$ADMIN_CODE';" | grep -c "netgescon_admin_$ADMIN_CODE" | xargs echo "Database creati:"

🎯 Checklist Completa

□ User esistente o creato
□ Record amministratore inserito in DB principale
□ Database amministratore creato
□ Struttura cartelle creata (almeno 30+ directories)
□ File configurazione creati (config.json, README.md)
□ Script manutenzione creato ed eseguibile
□ Log iniziale creato
□ Permessi filesystem corretti
□ Test relazioni database funzionanti
□ Test comandi Artisan funzionanti

🏢 PROCEDURA COLLAUDATA E REPLICABILE
Tempo stimato: 5-10 minuti per nuovo amministratore
Sistema pronto per produzione