odoo-security-rules
Faz seu agente controlar quem pode ver e fazer o quê no Odoo. Ele define permissões de acesso para usuários e grupos.
O que ela faz
Esta ferramenta ajuda a configurar quem pode ver e modificar informações em um sistema chamado Odoo. Ela cria regras para garantir que apenas as pessoas certas tenham acesso aos dados corretos.
Quando usar
- ✓Ao criar um novo módulo no Odoo e definir quem pode acessar o quê.
- ✓Quando você quer que os usuários vejam apenas os seus próprios dados ou os dados da sua empresa.
- ✓Para corrigir erros de 'Acesso Negado' ou 'Você não tem permissão'.
Exemplo do que pedir para a IA
“Preciso configurar o acesso para que usuários normais possam ver seus próprios pedidos de venda, mas não os de outros.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você descreve como as permissões de acesso devem funcionar. A ferramenta gera os códigos necessários para o Odoo entender e aplicar essas regras de segurança.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill odoo-security-rulesOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/odoo-security-rules/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Regras de Segurança do Odoo
Visão Geral
A segurança no Odoo é gerenciada em dois níveis: acesso em nível de modelo (quem pode ler/escrever em quais modelos) e regras de registro em nível de registro (quais registros um usuário pode ver). Esta habilidade ajuda você a escrever entradas ir.model.access.csv corretas e regras de registro baseadas em domínio ir.rule.
Quando Usar Esta Habilidade
- Configurando direitos de acesso para um novo módulo personalizado.
- Restringindo registros para que os usuários vejam apenas seus próprios dados ou os dados de sua empresa.
- Depurando erros de "Acesso Negado" ou "Você não tem permissão para acessar".
- Implementando regras de visibilidade de registro multiempresa.
Como Funciona
- Ativar: Mencione
@odoo-security-rulese descreva o cenário de acesso. - Gerar: Obtenha linhas de acesso CSV e regras de registro XML corretas.
- Depurar: Cole um erro de acesso e obtenha um diagnóstico com a correção.
Exemplos
Exemplo 1: ir.model.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hospital_patient_user,hospital.patient.user,model_hospital_patient,base.group_user,1,0,0,0
access_hospital_patient_manager,hospital.patient.manager,model_hospital_patient,base.group_erp_manager,1,1,1,1
Nota: Use
base.group_erp_managerpara gerentes de ERP, nãobase.group_system— esse grupo é reservado para superusuários técnicos do Odoo. Sempre crie um grupo personalizado para funções de gerente específicas do módulo:<record id="group_hospital_manager" model="res.groups"> <field name="name">Hospital Manager</field> <field name="category_id" ref="base.module_category_hidden"/> </record>
Exemplo 2: Regra de Registro — Usuários Veem Apenas Seus Próprios Registros
<record id="rule_hospital_patient_own" model="ir.rule">
<field name="name">Hospital Patient: Own Records Only</field>
<field name="model_id" ref="model_hospital_patient"/>
<field name="domain_force">[('create_uid', '=', 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="False"/>
</record>
Importante: Se você omitir
<field name="groups">, a regra se torna global e se aplica a TODOS os usuários, incluindo administradores. Sempre atribua um grupo, a menos que você pretenda explicitamente uma restrição global.
Exemplo 3: Regra de Registro Multiempresa
<record id="rule_hospital_patient_company" model="ir.rule">
<field name="name">Hospital Patient: Multi-Company</field>
<field name="model_id" ref="model_hospital_patient"/>
<field name="domain_force">
['|', ('company_id', '=', False),
('company_id', 'in', company_ids)]
</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
Melhores Práticas
- ✅ Faça: Comece com o acesso mais restritivo e abra conforme necessário.
- ✅ Faça: Use
company_ids(plural) em regras multiempresa — ele inclui todas as empresas às quais o usuário pertence. - ✅ Faça: Teste as regras usando um usuário não administrador em modo de depuração —
sudo()ignora todas as regras de registro completamente. - ✅ Faça: Crie grupos de segurança dedicados por módulo em vez de reutilizar grupos centrais do Odoo.
- ❌ Não faça: Dê
perm_unlink = 1a usuários regulares, a menos que a exclusão seja explicitamente exigida pelo processo de negócios. - ❌ Não faça: Deixe
group_idem branco emir.model.access.csv, a menos que você pretenda conceder acesso público (não autenticado). - ❌ Não faça: Use
base.group_systempara gerentes de módulo — isso concede acesso técnico completo, incluindo configurações de servidor.
Limitações
- Não cobre controle de acesso em nível de campo (restrições de leitura/escrita
ir.model.fields) — isso requer substituições personalizadas em OWL ou Python. - As regras de acesso de usuário do portal e público têm nuances adicionais não totalmente abordadas aqui; teste cuidadosamente com
base.group_portal. - As regras de registro são ignoradas por
sudo()— qualquer código executado em contexto de superusuário ignora todas as entradasir.rule. - Não cobre segurança de linha via PostgreSQL (RLS) — o Odoo gerencia toda a segurança na camada ORM.
Perguntas frequentes
O que é `ir.model.access.csv`?
É um arquivo que define permissões gerais para acessar diferentes tipos de informação (modelos) no Odoo.
O que são 'record rules' (`ir.rule`)?
São regras mais específicas que definem quais registros (linhas de dados) um usuário pode ver ou modificar, com base em condições como 'pertence à minha empresa' ou 'foi criado por mim'.
Por que não devo usar `base.group_system`?
O grupo `base.group_system` é para superusuários técnicos do Odoo e concede acesso total, incluindo configurações sensíveis. É melhor criar grupos específicos para gerentes de módulos.
Detalhes
Descrição original do autor
Expert in Odoo access control: ir.model.access.csv, record rules (ir.rule), groups, and multi-company security patterns.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3738
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
django-security
Ajuda seu agente a implementar práticas de segurança em aplicações Django. Ele foca em autenticação, autorização e prevenção contra ataques comuns, garantindo um código mais seguro.
affaan-m/ECC
laravel-security
Ajuda seu agente a proteger aplicações Laravel contra ameaças. Implementa práticas de segurança para autenticação, autorização e prevenção de ataques comuns.
affaan-m/ECC
module-regression
Ajuda seu agente a gerenciar mudanças em projetos grandes. Garante que alterações em uma parte do código não quebrem outras partes.
affaan-m/ECC