Odoo har ett flerskiktat säkerhetssystem. Användargrupper definierar roller. Access Control Lists (ACL) bestämmer vilka modeller varje grupp kan läsa, skriva, skapa och radera. Record rules filtrerar vilka enskilda poster inom en modell som är synliga.
Grupper
Definieras i XML: res.groups. Typiskt: Användare, Chef, Administratör. Grupper kan ärva andra grupper (implied_ids). En chef har automatiskt alla användarbehörigheter. Grupper kopplas till menyer och vyer, så att användare bara ser det som är relevant.
ACL (ir.model.access.csv)
En rad per modell och grupp. Fyra kolumner: perm_read, perm_write, perm_create, perm_unlink. Utan ACL-rad är modellen osynlig för den gruppen. Det är den vanligaste orsaken till "Access Denied"-fel: saknad ACL-konfiguration.
Record Rules
Filtrerar poster baserat på villkor. "Säljare ser bara sina egna leads" implementeras med en record rule: [('user_id','=',user.id)] på crm.lead-modellen, kopplad till säljargruppen. Mer granulär kontroll än ACL som är allt-eller-inget per modell.
Superuser
Administratörskontot (uid 2) kringgår alla säkerhetsregler. Använd det för konfiguration, inte för dagligt arbete. Skapa separata konton för alla användare, inklusive dig själv.
Vanliga misstag
Ge alla admin-behörighet "för att det ska fungera". Det är en säkerhetsrisk och gör det omöjligt att spåra vem som gjort vad. Glömma record rules på känsliga modeller (HR, löner, kontrakt). Inte testa med en användare i respektive grupp efter konfiguration.
Designa säkerheten tidigt i projektet. Att lägga till den i efterhand, när data redan finns och användare redan vant sig vid att se allt, är alltid svårare.