Chapter 4: Security - A Brief Introduction

In the previous chapter, we created our first table intended to store business data. In a business application such as Odoo, one of the first questions to consider is who1 can access the data. Odoo provides a security mechanism to allow access to the data for specific groups of users.

A biztonság témáját részletesebben tárgyalja a Adatokhoz való hozzáférés korlátozása. Ez a fejezet célja, hogy lefedje az új modulunkhoz szükséges minimumot.

Adatfájlok (CSV)

Odoo is a highly data driven system. Although behavior is customized using Python code, part of a module’s value is in the data it sets up when loaded. One way to load data is through a CSV file. One example is the list of country states which is loaded at installation of the base module.

"id","country_id:id","name","code"
state_au_1,au,"Australian Capital Territory","ACT"
state_au_2,au,"New South Wales","NSW"
state_au_3,au,"Northern Territory","NT"
state_au_4,au,"Queensland","QLD"
...
  • id egy külső azonosító. Használható a rekord hivatkozására (anélkül, hogy ismernénk az adatbázisban lévő azonosítóját).

  • country_id:id az országra hivatkozik a külső azonosító használatával.

  • name az állam neve.

  • code az állam kódja.

Ez a három mező a res.country.state modellben van meghatározva.

Konvenció szerint az adatokat importáló fájl egy modul data mappájában található. Amikor az adatok a biztonsághoz kapcsolódnak, a security mappában találhatók. Amikor az adatok nézetekhez és műveletekhez kapcsolódnak (ezt később tárgyaljuk), a views mappában találhatók. Ezenkívül ezeket a fájlokat mind fel kell tüntetni a __manifest__.py fájl data listájában. Példafájlunk a base modul manifestjében van meghatározva.

Továbbá vegyük figyelembe, hogy az adatfájlok tartalma csak akkor töltődik be, amikor egy modul telepítve vagy frissítve van.

Figyelem

Az adatfájlok sorrendben töltődnek be a __manifest__.py fájlban lévő sorrendjük szerint. Ez azt jelenti, hogy ha az A adat az B adatra hivatkozik, akkor biztosítani kell, hogy B az A előtt töltődjön be.

Az országok államainak esetében észre fogja venni, hogy az országok listája azelőtt töltődik be, mint az országállamok listája. Ennek oka, hogy az államok az országokra hivatkoznak.

Miért fontos mindez a biztonság szempontjából? Mert egy modell összes biztonsági konfigurációja adatfájlokon keresztül töltődik be, ahogy azt a következő részben látni fogjuk.

Hozzáférési jogok

Hivatkozás: a témával kapcsolatos dokumentáció megtalálható a Hozzáférési jogok.

Megjegyzés

Cél: a szakasz végére a következő figyelmeztetésnek már nem szabad megjelennie:

WARNING rd-demo odoo.modules.loading: The models ['estate.property'] have no access rules...

Ha egy modellen nincsenek meghatározva hozzáférési jogok, az Odoo úgy határozza meg, hogy egyetlen felhasználó sem férhet hozzá az adatokhoz. Ez még a naplóban is értesítésre kerül:

WARNING rd-demo odoo.modules.loading: The models ['estate.property'] have no access rules in module estate, consider adding some, like:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink

A hozzáférési jogok az ir.model.access modell rekordjaiként vannak meghatározva. Minden hozzáférési jog egy modellhez, egy csoporthoz (vagy globális hozzáférés esetén nincs csoport) és egy engedélyhalmazhoz kapcsolódik: létrehozás, olvasás, írás és törlés2. Az ilyen hozzáférési jogok általában egy ir.model.access.csv nevű CSV fájlban vannak meghatározva.

Itt van egy példa a korábbi test_model-ünkre:

id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_test_model,access_test_model,model_test_model,base.group_user,1,0,0,0
  • id egy külső azonosító.

  • name az ir.model.access neve.

  • model_id/id arra a modellre utal, amelyre a hozzáférési jog vonatkozik. A modellre való hivatkozás szokásos módja a model_<model_name>, ahol a <model_name> a modell _name értéke, amelyben a . helyett _ szerepel. Bonyolultnak tűnik? Valóban az…

  • group_id/id arra a csoportra utal, amelyre a hozzáférési jog vonatkozik.

  • perm_read,perm_write,perm_create,perm_unlink: olvasási, írási, létrehozási és törlési jogosultságok

Exercise

Hozzáférési jogok hozzáadása.

Hozza létre az ir.model.access.csv fájlt a megfelelő mappában, és határozza meg a __manifest__.py fájlban.

Adja meg az olvasási, írási, létrehozási és törlési jogosultságokat a base.group_user csoportnak.

Tipp: a naplóban található figyelmeztető üzenet a megoldás nagy részét megadja ;-)

Indítsa újra a szervert, és a figyelmeztető üzenetnek el kell tűnnie!

It’s now time to finally interact with the UI!

1

jelentése, hogy melyik Odoo felhasználó (vagy felhasználói csoport)

Az «unlink» az «delete» megfelelője