Files
full_encoach_platform/odoo/addons/website/security/website_security.xml
Yamen Ahmad 3e83d8d7d5 feat: add complete EnCoach backend — Odoo 19 + all addons
Includes:
- Odoo 19 framework (odoo/)
- 27 custom EnCoach addons (new_project/custom_addons/)
  - encoach_core, encoach_api, encoach_lms_api, encoach_adaptive_api
  - encoach_exam, encoach_taxonomy, encoach_adaptive, encoach_assignment
  - encoach_ai, encoach_ai_grading, encoach_ai_generation, encoach_ai_media
  - encoach_courseware, encoach_communication, encoach_subscription
  - encoach_notification, encoach_approval, encoach_branding
  - encoach_classroom, encoach_registration, encoach_stats
  - encoach_faq, encoach_ticket, encoach_training, encoach_resources
  - encoach_adaptive_ai, encoach_sis
- 21 OpenEduCat Enterprise modules (new_project/enterprise-19/)
- 14 OpenEduCat Community modules (new_project/openeducat_erp-19.0/)
- Configuration: odoo.conf, requirements.txt, scripts
- 200+ REST API endpoints with JWT authentication
- SRS and test documentation

Made-with: Cursor
2026-04-01 17:10:04 +04:00

114 lines
5.6 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="res.groups.privilege" id="res_groups_privilege_website">
<field name="name">Website</field>
<field name="sequence">23</field>
<field name="category_id" ref="base.module_category_website"/>
</record>
<record id="group_website_restricted_editor" model="res.groups">
<field name="name">Restricted Editor</field>
<field name="sequence">10</field>
<field name="privilege_id" ref="res_groups_privilege_website"/>
</record>
<record id="group_website_designer" model="res.groups">
<field name="name">Editor and Designer</field>
<field name="sequence">20</field>
<field name="user_ids" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
<field name="implied_ids" eval="[(4, ref('group_website_restricted_editor')), (4, ref('base.group_sanitize_override'))]"/>
<field name="privilege_id" ref="res_groups_privilege_website"/>
<!-- NOTE: this group implication is needed so that any admin user can do the website onboarding
after website app installation. -->
<field name="implied_by_ids" eval="[(4, ref('base.group_system'))]"/>
</record>
<data noupdate="1">
<record id="website_menu" model="ir.rule">
<field name="name">Website menu: group_ids</field>
<field name="model_id" ref="model_website_menu"/>
<field name="domain_force">['|', ('group_ids', '=', False), ('group_ids', 'in', user.all_group_ids.ids)]</field>
</record>
<record id="website_designer_edit_qweb" model="ir.rule">
<field name="name">website_designer: Manage Website and qWeb view</field>
<field name="model_id" ref="base.model_ir_ui_view"/>
<field name="domain_force">[('type', '=', 'qweb')]</field>
<field name="groups" eval="[(4, ref('group_website_designer'))]"/>
<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>
<record id="website_designer_view" model="ir.rule">
<field name="name">website_designer: global view</field>
<field name="model_id" ref="base.model_ir_ui_view"/>
<field name="domain_force">[('type', '!=', 'qweb')]</field>
<field name="groups" eval="[(4, ref('group_website_designer'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record id="website_group_system_edit_all_views" model="ir.rule">
<field name="name">Administration Settings: Manage all views</field>
<field name="model_id" ref="base.model_ir_ui_view"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('base.group_system'))]"/>
<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>
<record id="website_page_rule_public" model="ir.rule">
<field name="name">website.page: portal/public: read published pages</field>
<field name="model_id" ref="website.model_website_page"/>
<field name="domain_force">[('website_published', '=', True)]</field>
<field name="groups" eval="[(4, ref('base.group_portal')), (4, ref('base.group_public'))]"/>
</record>
<record id="view_rule_visibility_public" model="ir.rule">
<field name="name">Website View Visibility Public</field>
<field name="model_id" ref="base.model_ir_ui_view"/>
<field name="domain_force">['|', ('type', '!=', 'qweb'), ('visibility', 'in', ('public', False))]</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="groups" eval="[(4, ref('base.group_public'))]"/>
</record>
<record id="view_rule_visibility_connected" model="ir.rule">
<field name="name">Website View Visibility Connected</field>
<field name="model_id" ref="base.model_ir_ui_view"/>
<field name="domain_force">['|', ('type', '!=', 'qweb'), ('visibility', 'in', ('public', 'connected', False))]</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
</record>
</data>
<!-- Website Page Controller: exposing arbitrary models -->
<record id="website_page_controller_expose" model="res.groups">
<field name="name">Public access to arbitrary exposed model</field>
</record>
<record id="base.group_public" model="res.groups">
<field name="implied_ids" eval="[(4, ref('website.website_page_controller_expose'))]"/>
</record>
<record id="base.group_portal" model="res.groups">
<field name="implied_ids" eval="[(4, ref('website.website_page_controller_expose'))]"/>
</record>
<record id="website_page_controller_rule_public" model="ir.rule">
<field name="name">website.controller.page: portal/public: read published pages</field>
<field name="model_id" ref="website.model_website_controller_page"/>
<field name="domain_force">[('website_published', '=', True)]</field>
<field name="groups" eval="[(4, ref('website.website_page_controller_expose'))]"/>
</record>
</odoo>