# πŸš€ PROCEDURE CREAZIONE AMMINISTRATORE ## Guida Completa Step-by-Step ### πŸ“… **Data**: 07 Agosto 2025 ### 🎯 **Caso Studio**: Amministratore 00000000 "Michele Admin" --- ## πŸ“‹ **PREREQUISITI** ### πŸ”§ **Ambiente Preparato** ```bash # 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** ```bash 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** ```bash # 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** ```bash # Genera hash password sicura php artisan tinker --execute="echo Hash::make('password_sicura_qui');" ``` --- ## 🏒 **STEP 2: CREAZIONE RECORD AMMINISTRATORE** ### πŸ“ **Inserimento Database Principale** ```sql -- 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** ```bash 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** ```bash # 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)** ```bash # 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** ```bash # 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** ```bash 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** ```bash 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** ```bash 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** ```bash 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** ```bash 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** ```bash # 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** ```bash # 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** ```bash # Verifica struttura cartelle find storage/app/amministratori/00000001 -type d | sort # Verifica permessi ls -la storage/app/amministratori/00000001/ ``` ### πŸ”— **Controllo Relazioni** ```bash # 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Γ ** ```bash # 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** ```bash #!/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**