원클릭으로
odoo-security-introduction
Configure Access Control Lists (ACLs) using CSV files.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Configure Access Control Lists (ACLs) using CSV files.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
A router skill that identifies and recommends the most appropriate Odoo skill for a given user request.
Create HTTP endpoints for Websites and APIs.
Comprehensive guide to Odoo fields, including basic, relational, computed, and robust technical features (indexing, company_dependent, properties).
Master the Odoo ORM for data manipulation, environment management, and CRUD operations.
Write automated tests using TransactionCase and Form emulators to ensure code quality.
Define List, Form, and Search views in XML.
| name | Odoo Security Introduction |
| description | Configure Access Control Lists (ACLs) using CSV files. |
Allow users (specifically base.group_user) to access the estate.property model. Avoid the "The model has no access rules" warning.
Access rights are defined in ir.model.access.csv file, typically located in the security/ folder.
File Location: my_module/security/ir.model.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
id: Unique XML ID for this access rule (e.g., access_estate_property).name: Human-readable name (e.g., access_estate_property).model_id:id: The model this rule applies to.
model_ + model_name (where . is replaced by _).estate.property -> model_estate_property.group_id:id: The user group this rule applies to.
base.group_user: Internal Users (Employees).base.group_portal: Portal Users.perm_*: 1 for allowed, 0 for denied.
read: View records.write: Edit records.create: Create new records.unlink: Delete records.You MUST register the CSV file in the __manifest__.py under the data key.
'data': [
'security/ir.model.access.csv',
],
Record rules restrict access to specific records based on a domain (row-level security).
security/ir_rule.xml (or inside data/ files).<record id="rule_estate_personal" model="ir.rule">
<field name="name">Personal Properties Only</field>
<field name="model_id" ref="model_estate_property"/>
<field name="domain_force">[('user_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
domain_force: The filter domain. user variable is available.groups: If empty, applies to Everyone (Global Rule). Global rules are intersected (AND), Group rules are unioned (OR).Restrict access to specific fields in the Python model definition.
secret_code = fields.Char(groups="base.group_system")