377 lines
12 KiB
Markdown
377 lines
12 KiB
Markdown
# 🚀 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**
|