Initial commit: OCA Server Auth packages (29 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:06 +02:00
commit 3ed80311c4
1325 changed files with 127292 additions and 0 deletions

View file

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="action_vault" model="ir.actions.act_window">
<field name="name">Vault</field>
<field name="res_model">vault</field>
<field name="view_mode">tree,form</field>
</record>
<record id="action_vault_entry" model="ir.actions.act_window">
<field name="name">All Entries</field>
<field name="res_model">vault.entry</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_vault': 1}</field>
<field
name="view_ids"
eval="[(5,0,0),
(0,0,{'view_mode':'tree', 'view_id': ref('view_vault_entry_full_tree')}),
(0,0,{'view_mode':'form', 'view_id': ref('view_vault_entry_overview_form')})]"
/>
</record>
<record id="action_vault_inbox" model="ir.actions.act_window">
<field name="name">Inbox</field>
<field name="res_model">vault.inbox</field>
<field name="view_mode">tree,form</field>
</record>
<record id="action_vault_right" model="ir.actions.act_window">
<field name="name">Rights</field>
<field name="res_model">vault.right</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_vault_right_overview_tree" />
<field name="search_view_id" ref="view_vault_right_overview_search" />
</record>
<menuitem
id="menu_vault"
groups="base.group_user"
action="action_vault"
web_icon="vault,static/description/icon.png"
/>
<menuitem
id="menu_vault_entry"
groups="base.group_user"
parent="menu_vault"
action="action_vault_entry"
sequence="30"
/>
<menuitem
id="menu_vault_inbox"
groups="base.group_user"
parent="vault.menu_vault"
action="action_vault_inbox"
sequence="40"
/>
<menuitem
id="menu_vault_right"
groups="base.group_user"
parent="vault.menu_vault"
action="action_vault_right"
sequence="50"
/>
</odoo>

View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="base_setup.res_config_settings_view_form" />
<field name="arch" type="xml">
<div id="user_default_rights" position="after">
<h2>Vault</h2>
<div class="row mt16 o_settings_container" id="vault">
<div class="col-xs-12 col-md-6 o_setting_box" id="vault_share">
<div class="o_setting_left_pane">
<field name="module_vault_share" />
</div>
<div class="o_setting_right_pane">
<label for="module_vault_share" string="Vault Share" />
<div class="text-muted">
Allow the usage to share secrets with external users
</div>
</div>
</div>
<div class="col-xs-12 col-md-6 o_setting_box" id="vault_share">
<div class="o_setting_left_pane">
<field name="group_vault_import" />
</div>
<div class="o_setting_right_pane">
<label for="group_vault_import" />
<div class="text-muted">
Allow all users to import vaults accessible to them
</div>
</div>
</div>
<div class="col-xs-12 col-md-6 o_setting_box" id="vault_share">
<div class="o_setting_left_pane">
<field name="group_vault_export" />
</div>
<div class="o_setting_right_pane">
<label for="group_vault_export" />
<div class="text-muted">
Allow all users to export vaults accessible to them
</div>
</div>
</div>
</div>
</div>
</field>
</record>
</odoo>

View file

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_res_users_key_tree" model="ir.ui.view">
<field name="model">res.users.key</field>
<field name="arch" type="xml">
<tree editable="bottom">
<field name="current" readonly="1" />
<field name="fingerprint" readonly="1" />
</tree>
</field>
</record>
<record id="view_res_users_key_form" model="ir.ui.view">
<field name="model">res.users.key</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="fingerprint" readonly="1" />
</group>
</sheet>
</form>
</field>
</record>
<record id="view_users_form_keys_modif" model="ir.ui.view">
<field name="model">res.users</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="inbox_link" widget="url" />
<field name="inbox_enabled" />
</group>
<field name="keys" />
</sheet>
<footer>
<button
name="vault_generate_key"
string="New private key"
class="btn-primary"
/>
<button
name="action_new_inbox_token"
type="object"
string="New inbox link"
class="btn-primary"
/>
<button
name="action_invalidate_key"
type="object"
string="Invalidate private key"
class="btn-secondary"
confirm="You will loose access to all vaults and your inbox. Do you want to continue?"
/>
<button special="cancel" string="Cancel" class="btn-secondary" />
</footer>
</form>
</field>
</record>
<record id="action_res_users_keys" model="ir.actions.act_window">
<field name="name">Manage my keys</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.users</field>
<field name="target">new</field>
<field name="view_mode">form</field>
</record>
<record id="action_res_users_keys_view" model="ir.actions.act_window.view">
<field eval="10" name="sequence" />
<field name="view_mode">form</field>
<field name="view_id" ref="view_users_form_keys_modif" />
<field name="act_window_id" ref="action_res_users_keys" />
</record>
</odoo>

View file

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<template id="inbox">
<t t-call="web.login_layout">
<t t-call-assets="vault.assets_frontend" t-css="false" defer_load="True" />
<form
class="oe_login_form"
role="form"
t-attf-action="/vault/inbox/{{ token }}"
method="post"
onsubmit="this.action = this.action + location.hash"
>
<input
type="hidden"
name="csrf_token"
t-att-value="request.csrf_token()"
/>
<input type="hidden" id="token" name="token" t-att-value="token" />
<input type="hidden" id="public" name="public" t-att-value="public" />
<input type="hidden" id="encrypted" name="encrypted" />
<input type="hidden" id="encrypted_file" name="encrypted_file" />
<input type="hidden" id="filename" name="filename" />
<input type="hidden" id="iv" name="iv" />
<input type="hidden" id="key" name="key" />
<div class="form-group">
<label for="name">Name of your secret:</label>
<input
type="text"
t-if="name"
name="name"
readonly="readonly"
class="form-control"
t-att-value="name"
/>
<input
type="text"
t-else=""
name="name"
required="required"
autofocus="autofocus"
class="form-control"
/>
</div>
<div class="form-group">
<label for="secret">Secret to share:</label>
<input
placeholder="Secret"
type="text"
id="secret"
name="secret"
required="required"
autofocus="autofocus"
class="form-control"
/>
</div>
<div class="form-group">
<label for="secret">File to share:</label>
<input
type="file"
placeholder="Secret"
id="secret_file"
name="secret_file"
required="required"
class="form-control"
/>
</div>
<p class="alert alert-danger" t-if="error" role="alert" t-esc="error" />
<p
class="alert alert-success"
t-if="message"
role="status"
t-esc="message"
/>
<div
t-attf-class="clearfix text-center mb-1 {{'pt-2' if form_small else 'pt-3'}}"
>
<button
id="submit"
type="submit"
class="btn btn-primary btn-block"
disabled="disabled"
>Submit secret</button>
</div>
</form>
</t>
</template>
</odoo>

View file

@ -0,0 +1,191 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_vault_entry_tree" model="ir.ui.view">
<field name="model">vault.entry</field>
<field name="arch" type="xml">
<tree decoration-muted="expired">
<field name="expired" invisible="1" />
<field name="complete_name" />
<field name="tags" widget="many2many_tags" />
</tree>
</field>
</record>
<record id="view_vault_entry_full_tree" model="ir.ui.view">
<field name="model">vault.entry</field>
<field name="arch" type="xml">
<tree decoration-muted="expired">
<field name="expired" invisible="1" />
<field name="vault_id" />
<field name="complete_name" />
<field name="tags" widget="many2many_tags" />
</tree>
</field>
</record>
<record id="view_vault_entry_form" model="ir.ui.view">
<field name="model">vault.entry</field>
<field name="arch" type="xml">
<form>
<header>
<button
type="object"
name="action_open_import_wizard"
string="Import from file"
groups="vault.group_vault_import"
/>
<button
type="object"
name="action_open_export_wizard"
string="Export to file"
groups="vault.group_vault_export"
/>
</header>
<sheet>
<field name="perm_user" invisible="1" />
<field name="allowed_create" invisible="1" />
<field name="allowed_share" invisible="1" />
<field name="allowed_write" invisible="1" />
<field name="allowed_delete" invisible="1" />
<group>
<group>
<field
name="vault_id"
invisible="1"
force_save="1"
attrs="{'readonly': [('vault_id', '!=', False)]}"
/>
<field
name="parent_id"
options="{'no_open': true, 'no_create_edit': true, 'no_quick_create': true}"
/>
<field name="complete_name" invisible="1" />
<field name="name" />
<field name="url" widget="url" />
<field name="tags" widget="many2many_tags" />
</group>
<group>
<field name="create_date" />
<field name="write_date" />
<field name="expire_date" />
</group>
</group>
<notebook>
<page string="Content">
<label for="field_ids" />
<field
name="field_ids"
context="{'default_entry_id': active_id}"
options="{'create': [('allowed_create', '=', True)], 'delete': [('allowed_delete', '=', True)], 'no_open': true}"
>
<tree editable="bottom">
<field name="vault_id" invisible="1" />
<field name="entry_id" invisible="1" />
<field name="iv" invisible="1" />
<field name="master_key" invisible="1" />
<field name="name" />
<field
name="value"
widget="vault_field"
type="field_type"
/>
<field name="write_date" />
</tree>
</field>
<label for="file_ids" />
<field
name="file_ids"
context="{'default_entry_id': active_id}"
options="{'create': [('allowed_create', '=', True)], 'delete': [('allowed_delete', '=', True)], 'no_open': True}"
>
<tree editable="bottom">
<field name="vault_id" invisible="1" />
<field name="entry_id" invisible="1" />
<field name="iv" invisible="1" />
<field name="master_key" invisible="1" />
<field name="name" invisible="1" />
<field
name="value"
widget="vault_file"
filename="name"
/>
<field name="write_date" />
</tree>
</field>
</page>
<page string="Note">
<field name="note" />
</page>
<page string="Childs">
<field
name="child_ids"
context="{'default_parent_id': active_id, 'default_vault_id': vault_id}"
/>
</page>
<page string="Log">
<field name="log_ids" options="{'no_open': True}" />
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="view_vault_entry_overview_form" model="ir.ui.view">
<field name="model">vault.entry</field>
<field name="mode">primary</field>
<field name="priority">100</field>
<field name="inherit_id" ref="view_vault_entry_form" />
<field name="arch" type="xml">
<field name="vault_id" position="attributes">
<attribute name="invisible">0</attribute>
</field>
</field>
</record>
<record id="view_vault_entry_search" model="ir.ui.view">
<field name="name">vault.entry.search</field>
<field name="model">vault.entry</field>
<field name="arch" type="xml">
<search>
<field name="complete_name" operator="ilike" />
<field name="name" operator="ilike" />
<field name="tags" operator="ilike" />
<field name="note" operator="ilike" />
<filter
string="Expired"
name="expired"
domain="[('expired', '=', True)]"
/>
<filter
string="Not Expired"
name="not_expired"
domain="[('expired', '!=', True)]"
/>
<filter
string="Vault"
name="vault"
domain="[]"
context="{'group_by': 'vault_id'}"
/>
<searchpanel>
<field
name="vault_id"
string="Vaults"
enable_counters="1"
limit="0"
/>
<field
name="parent_id"
string="Entries"
enable_counters="1"
limit="0"
/>
</searchpanel>
</search>
</field>
</record>
</odoo>

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_vault_field_form" model="ir.ui.view">
<field name="model">vault.field</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="vault_id" invisible="1" />
<field name="entry_id" invisible="1" />
<field name="iv" invisible="1" />
<field name="master_key" invisible="1" />
<field name="name" />
<field name="value" widget="vault" type="field_type" />
<field name="write_date" />
</group>
</sheet>
</form>
</field>
</record>
<record id="view_vault_field_tree" model="ir.ui.view">
<field name="model">vault.field</field>
<field name="arch" type="xml">
<tree create="false" delete="false">
<field name="vault_id" invisible="1" />
<field name="entry_id" invisible="1" />
<field name="iv" invisible="1" />
<field name="master_key" invisible="1" />
<field name="name" />
<field name="value" widget="vault" type="field_type" />
<field name="write_date" />
</tree>
</field>
</record>
</odoo>

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_vault_file_form" model="ir.ui.view">
<field name="model">vault.file</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="vault_id" invisible="1" />
<field name="entry_id" invisible="1" />
<field name="iv" invisible="1" />
<field name="master_key" invisible="1" />
<field name="name" invisible="1" />
<field name="value" widget="vault_file" filename="name" />
<field name="write_date" />
</group>
</sheet>
</form>
</field>
</record>
<record id="view_vault_file_tree" model="ir.ui.view">
<field name="model">vault.file</field>
<field name="arch" type="xml">
<tree create="false" delete="false">
<field name="vault_id" invisible="1" />
<field name="entry_id" invisible="1" />
<field name="iv" invisible="1" />
<field name="master_key" invisible="1" />
<field name="name" invisible="1" />
<field name="value" widget="vault_file" filename="name" />
<field name="write_date" />
</tree>
</field>
</record>
</odoo>

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_vault_inbox_tree" model="ir.ui.view">
<field name="model">vault.inbox</field>
<field name="arch" type="xml">
<tree create="false">
<field name="name" />
<field name="inbox_link" widget="url" />
</tree>
</field>
</record>
<record id="view_vault_inbox_form" model="ir.ui.view">
<field name="model">vault.inbox</field>
<field name="arch" type="xml">
<form create="false">
<sheet>
<field name="user_id" invisible="1" />
<field name="iv" invisible="1" />
<field name="key" invisible="1" />
<field name="filename" invisible="1" />
<group>
<field name="inbox_link" widget="url" />
<field name="name" />
<field name="accesses" />
<field name="expiration" />
<field
name="secret"
widget="vault_inbox_field"
attrs="{'invisible': [('secret', '=', False)]}"
/>
<field
name="secret_file"
filename="filename"
widget="vault_inbox_file"
attrs="{'invisible': [('secret_file', '=', False)]}"
/>
</group>
<label for="log_ids" />
<field name="log_ids" options="{'no_open': True}">
<tree>
<field name="name" />
<field name="create_date" />
</tree>
</field>
</sheet>
</form>
</field>
</record>
</odoo>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_vault_log_tree" model="ir.ui.view">
<field name="model">vault.log</field>
<field name="arch" type="xml">
<tree
decoration-danger="state == 'error'"
decoration-warning="state == 'warn'"
decoration-info="state == 'info'"
>
<field name="user_id" />
<field name="message" />
<field name="create_date" />
<field name="state" invisible="1" />
</tree>
</field>
</record>
</odoo>

View file

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_right_tree" model="ir.ui.view">
<field name="model">vault.right</field>
<field name="arch" type="xml">
<tree editable="bottom" decoration-danger="not key">
<field name="vault_id" invisible="1" />
<field name="master_key" invisible="1" />
<field name="key" invisible="1" />
<field name="public_key" invisible="1" />
<field name="user_id" />
<field name="perm_create" />
<field name="perm_write" />
<field name="perm_share" />
<field name="perm_delete" />
</tree>
</field>
</record>
<record id="view_right_form" model="ir.ui.view">
<field name="model">vault.right</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="user_id" />
<field name="perm_create" />
<field name="perm_write" />
<field name="perm_share" />
<field name="perm_delete" />
</group>
</sheet>
</form>
</field>
</record>
<record id="view_vault_right_overview_tree" model="ir.ui.view">
<field name="model">vault.right</field>
<field name="arch" type="xml">
<tree create="false">
<field name="vault_id" />
<field name="user_id" />
<field name="perm_create" />
<field name="perm_write" />
<field name="perm_share" />
<field name="perm_delete" />
</tree>
</field>
</record>
<record id="view_vault_right_overview_search" model="ir.ui.view">
<field name="name">vault.right.overview.search</field>
<field name="model">vault.right</field>
<field name="arch" type="xml">
<search>
<field name="user_id" operator="ilike" />
<field name="vault_id" operator="ilike" />
<group expand="0" string="Grouped">
<filter
name="user_id"
string="By user"
context="{'group_by': 'user_id'}"
/>
<filter
name="vault_id"
string="By vault"
context="{'group_by': 'vault_id'}"
/>
</group>
</search>
</field>
</record>
</odoo>

View file

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_vault_search" model="ir.ui.view">
<field name="name">vault.search</field>
<field name="model">vault</field>
<field name="arch" type="xml">
<search>
<field name="name" operator="ilike" />
<field name="note" operator="ilike" />
</search>
</field>
</record>
<record id="action_open_entries" model="ir.actions.act_window">
<field name="name">Entries</field>
<field name="res_model">vault.entry</field>
<field name="view_mode">tree,form</field>
<field name="domain">[("vault_id", "=", active_id)]</field>
<field name="context">{
"default_vault_id": active_id,
"searchpanel_default_vault_id": active_id}
</field>
<field name="search_view_id" ref="view_vault_entry_search" />
</record>
<record id="view_vault_tree" model="ir.ui.view">
<field name="model">vault</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="user_id" />
<field name="note" />
</tree>
</field>
</record>
<record id="view_vault_form" model="ir.ui.view">
<field name="model">vault</field>
<field name="arch" type="xml">
<form>
<header>
<button
type="object"
name="action_open_import_wizard"
string="Import from file"
groups="vault.group_vault_import"
/>
<button
type="object"
name="action_open_export_wizard"
string="Export to file"
groups="vault.group_vault_export"
/>
<button name="vault_verify" string="Verify" />
<button
name="vault_reencrypt"
string="Re-encrypt"
attrs="{'invisible': [('reencrypt_required', '=', True)]}"
/>
<button
name="vault_reencrypt"
string="Re-encrypt"
class="oe_highlight"
attrs="{'invisible': [('reencrypt_required', '=', False)]}"
/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button
class="oe_stat_button"
name="vault.action_open_entries"
string="Entries"
type="action"
icon="fa-bars"
/>
</div>
<group>
<field name="reencrypt_required" invisible="1" />
<field name="allowed_share" invisible="1" />
<field name="allowed_write" invisible="1" />
<field name="allowed_create" invisible="1" />
<field name="allowed_delete" invisible="1" />
<field name="master_key" invisible="1" required="1" />
<field name="name" />
<field name="user_id" />
<field name="note" />
</group>
<notebook>
<page
string="Rights"
attrs="{'invisible':[('allowed_share', '=', False)]}"
>
<field
name="right_ids"
context="{'default_vault_id': active_id}"
options="{'create': [('allowed_share', '=', True)], 'delete': [('allowed_share', '=', True)]}"
/>
</page>
<page string="Log">
<field name="log_ids" options="{'no_open': True}" />
</page>
</notebook>
</sheet>
</form>
</field>
</record>
</odoo>