mirror of
https://github.com/bringout/oca-server-auth.git
synced 2026-04-18 22:12:05 +02:00
56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
# © 2021 Florian Kantelberg - initOS GmbH
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
import logging
|
|
|
|
from odoo import _, fields, models
|
|
from odoo.exceptions import ValidationError
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class VaultSendWizard(models.TransientModel):
|
|
_name = "vault.send.wizard"
|
|
_description = _("Wizard to send another user a secret")
|
|
|
|
user_id = fields.Many2one(
|
|
"res.users",
|
|
"User",
|
|
required=True,
|
|
domain=[("keys", "!=", False), ("inbox_enabled", "=", True)],
|
|
)
|
|
name = fields.Char(required=True)
|
|
public = fields.Char(related="user_id.active_key.public")
|
|
iv = fields.Char(required=True)
|
|
key_user = fields.Char(required=True)
|
|
key = fields.Char(required=True)
|
|
secret = fields.Char()
|
|
secret_file = fields.Char()
|
|
filename = fields.Char()
|
|
|
|
_sql_constraints = [
|
|
(
|
|
"value_check",
|
|
"CHECK(secret IS NOT NULL OR secret_file IS NOT NULL)",
|
|
_("No value found"),
|
|
),
|
|
]
|
|
|
|
def action_send(self):
|
|
if not self.secret and not self.secret_file:
|
|
raise ValidationError(_("Neither a secret nor file was given"))
|
|
|
|
self.ensure_one()
|
|
self.env["vault.inbox"].sudo().create(
|
|
{
|
|
"name": self.name,
|
|
"accesses": 0,
|
|
"secret": self.secret,
|
|
"secret_file": self.secret_file,
|
|
"iv": self.iv,
|
|
"key": self.key_user,
|
|
"user_id": self.user_id.id,
|
|
"filename": self.filename,
|
|
"log_ids": [(0, 0, {"name": _("Created by %s") % self.user_id.name})],
|
|
}
|
|
)
|