Начальное наполнение

This commit is contained in:
parent 512b9a29da
commit 596fc91a0a
8 changed files with 99 additions and 0 deletions

2
__init__.py Normal file
View File

@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
from . import controllers

17
__manifest__.py Normal file
View File

@ -0,0 +1,17 @@
{
'name': "Password Policy support for Signup",
'depends': ['auth_password_policy', 'auth_signup'],
'category': 'Hidden/Tools',
'auto_install': True,
'data': [
'views/signup_templates.xml',
],
'assets': {
'web.assets_frontend': [
'auth_password_policy_signup/static/src/public/**/*',
'auth_password_policy/static/src/password_meter.js',
'auth_password_policy/static/src/password_policy.js',
],
},
'license': 'LGPL-3',
}

10
controllers.py Normal file
View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
from odoo.http import request
from odoo.addons.auth_signup.controllers.main import AuthSignupHome
class AddPolicyData(AuthSignupHome):
def get_auth_signup_config(self):
d = super(AddPolicyData, self).get_auth_signup_config()
d['password_minimum_length'] = request.env['ir.config_parameter'].sudo().get_param('auth_password_policy.minlength')
return d

View File

@ -0,0 +1,15 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 21:55+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@ -0,0 +1,35 @@
/** @odoo-module */
import { Meter } from "@auth_password_policy/password_meter";
import { ConcretePolicy, recommendations } from "@auth_password_policy/password_policy";
import { Component, useExternalListener, useState, xml } from "@odoo/owl";
import { registry } from "@web/core/registry";
class PasswordMeter extends Component {
static template = xml`
<Meter t-if="hasMinlength"
password="state.password"
required="required"
recommended="recommended"/>`;
static components = { Meter };
static props = {
selector: String,
};
setup() {
const inputEl = document.querySelector(this.props.selector);
useExternalListener(inputEl, "input", (e) => {
this.state.password = e.target.value || "";
});
const minlength = Number(inputEl.getAttribute("minlength"));
this.hasMinlength = !isNaN(minlength);
this.state = useState({
password: inputEl.value || "",
});
this.required = new ConcretePolicy({ minlength });
this.recommended = recommendations;
}
}
registry.category("public_components").add("password_meter", PasswordMeter);

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="auth_password_policy_signup.PasswordMeter">
<Meter t-if="hasMinlength" password="state.password" required="required" recommended="recommended"/>
</t>
</templates>

View File

@ -0,0 +1,6 @@
.field-password {
position: relative;
meter.o_password_meter {
bottom: calc(#{$input-height} / 2 - 7px);
}
}

View File

@ -0,0 +1,8 @@
<odoo>
<template id="fields" inherit_id="auth_signup.fields"
name="Password policy data for auth_signup">
<xpath expr="//input[@name='password']" position="after">
<owl-component name="password_meter" props='{"selector": "input[name=password]"}'/>
</xpath>
</template>
</odoo>