12 KiB
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