Account Dipendenti per App Mobile
Panoramica
Sistema per creare account utente per i dipendenti, permettendo loro di accedere all’app mobile per consultare le proprie buste paga e documenti.
Caratteristiche
1. Modello Employee Aggiornato
File: backend/models/Employee.ts
Aggiunto campo:
user_id?: Types.ObjectId; // Account utente collegato2. API Endpoint
File: src/app/api/employees/[id]/create-account/route.ts
POST - Crea Account
Crea un nuovo account utente per il dipendente.
Richiesta:
{
"email": "dipendente@esempio.it",
"password": "password123"
}Risposta:
{
"success": true,
"message": "Account dipendente creato con successo",
"user": {
"_id": "user_id",
"email": "dipendente@esempio.it",
"firstName": "Mario",
"lastName": "Rossi",
"role": "staff"
}
}Validazioni:
- Email e password obbligatori
- Password minimo 8 caratteri
- Email non già in uso
- Dipendente non ha già un account
- Solo owner e manager possono creare account
DELETE - Rimuovi Account
Disattiva l’account del dipendente (mantiene lo storico).
Risposta:
{
"success": true,
"message": "Account dipendente rimosso con successo"
}Validazioni:
- Solo owner può eliminare account
- Dipendente deve avere un account attivo
3. Interfaccia Utente
File: src/app/(dashboard)/dipendenti/[id]/page.tsx
Funzionalità Aggiunte
-
Pulsante Crea Account
- Visibile quando il dipendente non ha un account
- Colore verde con icona UserPlus
- Apre modal per inserire email e password
-
Pulsante Rimuovi Account
- Visibile quando il dipendente ha un account attivo
- Colore rosso con icona UserMinus
- Conferma prima della rimozione
-
Badge Account Attivo
- Mostrato nella sezione “Dati Personali”
- Icona chiave verde quando account attivo
-
Modal Creazione Account
- Form con email e password
- Validazione client-side
- Pre-compila email se presente nei dati dipendente
- Note informative per l’utente
Workflow
Creazione Account
- Responsabile va nella pagina dettaglio dipendente
- Clicca su “Crea Account App”
- Inserisce email e password
- Sistema crea account con ruolo “staff”
- Collega account al dipendente (
user_id) - Aggiorna email del dipendente se diversa
Rimozione Account
- Responsabile va nella pagina dettaglio dipendente
- Clicca su “Rimuovi Account”
- Conferma l’azione
- Sistema disattiva l’utente (
isActive: false) - Rimuove collegamento dal dipendente
Ruoli e Permessi
Creazione Account
- ✅ Owner
- ✅ Manager
- ❌ Altri ruoli
Rimozione Account
- ✅ Owner
- ❌ Altri ruoli
Account Dipendente
Gli account creati hanno le seguenti caratteristiche:
- Ruolo:
staff(dipendente) - Tenant: Stesso del dipendente
- Accesso: App mobile per buste paga
- Email: Per notifiche e recupero password
- Password: Modificabile dopo primo accesso
Utilizzo App Mobile
I dipendenti con account possono:
- Login con email e password
- Consultare le proprie buste paga
- Scaricare PDF buste paga
- Visualizzare documenti personali
- Ricevere notifiche email
Note Tecniche
Database
- Campo
user_idopzionale in Employee - Indice su
user_idper performance - Account User con
role: "staff" - Soft delete (isActive: false) invece di eliminazione
Sicurezza
- Password hashata automaticamente (bcrypt)
- JWT per autenticazione API
- Validazione permessi per ogni operazione
- Email univoca nel sistema
Bearer Token
I dipendenti possono usare l’autenticazione Bearer Token per l’accesso API (vedi API_DOCUMENTATION.md)
Testing
Test Manuale
- Vai su
/dipendenti/[id] - Clicca “Crea Account App”
- Inserisci email e password
- Verifica creazione account
- Testa login con credenziali
- Verifica badge “Account Attivo”
- Testa rimozione account
Curl Example
# Login dipendente
curl -X POST https://api.tuodominio.it/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "dipendente@esempio.it",
"password": "password123"
}'
# Ottieni buste paga (con Bearer token)
curl -X GET https://api.tuodominio.it/api/payslips \
-H "Authorization: Bearer YOUR_JWT_TOKEN"Prossimi Sviluppi
- Reset password via email
- Notifiche push per nuove buste paga
- Storico accessi dipendente
- 2FA opzionale per dipendenti
- App mobile nativa iOS/Android
Last updated on