diff --git a/README.md b/README.md
index 61c6663f86..2191a224e0 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ addon | version | maintainers | summary
 --- | --- | --- | ---
 [auth_admin_passkey](auth_admin_passkey/) | 14.0.1.0.0 |  | Allows system administrator to authenticate with any account
 [auth_api_key](auth_api_key/) | 14.0.2.1.0 |  | Authenticate http requests from an API key
-[auth_api_key_group](auth_api_key_group/) | 14.0.1.0.1 | [![simahawk](https://github.com/simahawk.png?size=30px)](https://github.com/simahawk) | Allow grouping API keys together. Grouping per se does nothing. This feature is supposed to be used by other modules to limit access to services or records based on groups of keys.
+[auth_api_key_group](auth_api_key_group/) | 14.0.1.1.0 | [![simahawk](https://github.com/simahawk.png?size=30px)](https://github.com/simahawk) | Allow grouping API keys together. Grouping per se does nothing. This feature is supposed to be used by other modules to limit access to services or records based on groups of keys.
 [auth_api_key_server_env](auth_api_key_server_env/) | 14.0.1.1.0 |  | Configure api keys via server env. This can be very useful to avoid mixing your keys between your various environments when restoring databases. All you have to do is to add a new section to your configuration file according to the following convention:
 [auth_dynamic_groups](auth_dynamic_groups/) | 14.0.1.0.0 |  | Have membership conditions for certain groups
 [auth_jwt](auth_jwt/) | 14.0.1.2.0 | [![sbidoul](https://github.com/sbidoul.png?size=30px)](https://github.com/sbidoul) | JWT bearer token authentication.
@@ -30,6 +30,7 @@ addon | version | maintainers | summary
 [auth_oidc](auth_oidc/) | 14.0.1.0.1 | [![sbidoul](https://github.com/sbidoul.png?size=30px)](https://github.com/sbidoul) | Allow users to login through OpenID Connect Provider
 [auth_saml](auth_saml/) | 14.0.1.0.1 |  | Saml2 Authentication
 [auth_session_timeout](auth_session_timeout/) | 14.0.1.0.1 |  | This module disable all inactive sessions since a given delay
+[auth_signup_verify_email](auth_signup_verify_email/) | 14.0.1.0.0 |  | Force uninvited users to use a good email for signup
 [auth_user_case_insensitive](auth_user_case_insensitive/) | 14.0.1.0.0 |  | Makes the user login field case insensitive
 [password_security](password_security/) | 14.0.1.0.0 |  | Allow admin to set password security requirements.
 [user_log_view](user_log_view/) | 14.0.1.0.0 | [![trojikman](https://github.com/trojikman.png?size=30px)](https://github.com/trojikman) | Allow to see user's actions log
diff --git a/auth_api_key_group/README.rst b/auth_api_key_group/README.rst
index a2d8c22c6a..bfb975e22a 100644
--- a/auth_api_key_group/README.rst
+++ b/auth_api_key_group/README.rst
@@ -7,9 +7,9 @@ Auth API key group
    !! changes will be overwritten.                   !!
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
     :target: https://odoo-community.org/page/development-status
-    :alt: Alpha
+    :alt: Beta
 .. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
     :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
     :alt: License: LGPL-3
@@ -30,11 +30,6 @@ Allow grouping API keys together.
 Grouping per se does nothing. This feature is supposed to be used by other modules
 to limit access to services or records based on groups of keys.
 
-.. IMPORTANT::
-   This is an alpha version, the data model and design can change at any time without warning.
-   Only for development or testing purpose, do not use in production.
-   `More details on development status <https://odoo-community.org/page/development-status>`_
-
 **Table of contents**
 
 .. contents::
diff --git a/auth_api_key_group/__manifest__.py b/auth_api_key_group/__manifest__.py
index 7def149530..b02f9c9c1b 100644
--- a/auth_api_key_group/__manifest__.py
+++ b/auth_api_key_group/__manifest__.py
@@ -10,8 +10,8 @@
 Grouping per se does nothing. This feature is supposed to be used by other modules
 to limit access to services or records based on groups of keys.
     """,
-    "version": "14.0.1.0.1",
-    "development_status": "Alpha",
+    "version": "14.0.1.1.0",
+    "development_status": "Beta",
     "license": "LGPL-3",
     "website": "https://github.com/OCA/server-auth",
     "author": "Camptcamp,Odoo Community Association (OCA)",
diff --git a/auth_api_key_group/static/description/index.html b/auth_api_key_group/static/description/index.html
index 17fb24a6ee..42f25c7c3b 100644
--- a/auth_api_key_group/static/description/index.html
+++ b/auth_api_key_group/static/description/index.html
@@ -367,16 +367,10 @@ <h1 class="title">Auth API key group</h1>
 !! This file is generated by oca-gen-addon-readme !!
 !! changes will be overwritten.                   !!
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Alpha" src="https://img.shields.io/badge/maturity-Alpha-red.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/server-auth/tree/14.0/auth_api_key_group"><img alt="OCA/server-auth" src="https://img.shields.io/badge/github-OCA%2Fserver--auth-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/server-auth-14-0/server-auth-14-0-auth_api_key_group"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/251/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
+<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/server-auth/tree/14.0/auth_api_key_group"><img alt="OCA/server-auth" src="https://img.shields.io/badge/github-OCA%2Fserver--auth-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/server-auth-14-0/server-auth-14-0-auth_api_key_group"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/251/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
 <p>Allow grouping API keys together.</p>
 <p>Grouping per se does nothing. This feature is supposed to be used by other modules
 to limit access to services or records based on groups of keys.</p>
-<div class="admonition important">
-<p class="first admonition-title">Important</p>
-<p class="last">This is an alpha version, the data model and design can change at any time without warning.
-Only for development or testing purpose, do not use in production.
-<a class="reference external" href="https://odoo-community.org/page/development-status">More details on development status</a></p>
-</div>
 <p><strong>Table of contents</strong></p>
 <div class="contents local topic" id="contents">
 <ul class="simple">
diff --git a/auth_signup_verify_email/README.rst b/auth_signup_verify_email/README.rst
new file mode 100644
index 0000000000..dba820b2f9
--- /dev/null
+++ b/auth_signup_verify_email/README.rst
@@ -0,0 +1,106 @@
+======================
+Verify email at signup
+======================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !! This file is generated by oca-gen-addon-readme !!
+   !! changes will be overwritten.                   !!
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+    :target: https://odoo-community.org/page/development-status
+    :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+    :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+    :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--auth-lightgray.png?logo=github
+    :target: https://github.com/OCA/server-auth/tree/14.0/auth_signup_verify_email
+    :alt: OCA/server-auth
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+    :target: https://translation.odoo-community.org/projects/server-auth-14-0/server-auth-14-0-auth_signup_verify_email
+    :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+    :target: https://runbot.odoo-community.org/runbot/251/14.0
+    :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5| 
+
+This module extends the functionality of public sign up to force users to
+provide a valid email address.
+
+To achieve this, users are not required to provide a password at
+sign up: they are asked for only at first login attempt.
+
+**Table of contents**
+
+.. contents::
+   :local:
+
+Installation
+============
+
+* Install `email_validator <https://pypi.org/project/email-validator/>`_
+  with ``pip install email_validator`` or equivalent.
+
+Configuration
+=============
+
+To configure this module, you need to:
+
+* `Properly configure your outgoing email server(s)
+  <https://www.odoo.com/forum/help-1/question/how-to-configure-email-gateway-282#answer_290>`_.
+* Go to *Settings > General Settings -> General settings*, search for
+  the *Users* section and enable *Free sign up* in *Customer account*.
+
+Usage
+=====
+
+To use this module, you need to:
+
+* Log out.
+* `Sign up </web/signup>`_ with a valid email.
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-auth/issues>`_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+`feedback <https://github.com/OCA/server-auth/issues/new?body=module:%20auth_signup_verify_email%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Antiun Ingeniería S.L.
+* Tecnativa
+
+Contributors
+~~~~~~~~~~~~
+
+* Rafael Blasco <rafaelbn@antiun.com>
+* Jairo Llopis <yajo.sk8@gmail.com>
+* Simone Orsi <simone.orsi@camptocamp.com>
+* Alexandre Díaz <alexandre.diaz@tecnativa.com>
+* Eugene Molotov <molotov@it-projects.info>
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+   :alt: Odoo Community Association
+   :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+This module is part of the `OCA/server-auth <https://github.com/OCA/server-auth/tree/14.0/auth_signup_verify_email>`_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/auth_signup_verify_email/__init__.py b/auth_signup_verify_email/__init__.py
new file mode 100644
index 0000000000..54d1454ece
--- /dev/null
+++ b/auth_signup_verify_email/__init__.py
@@ -0,0 +1,4 @@
+# Copyright 2015 Antiun Ingeniería, S.L.
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from . import controllers
diff --git a/auth_signup_verify_email/__manifest__.py b/auth_signup_verify_email/__manifest__.py
new file mode 100644
index 0000000000..057bde7968
--- /dev/null
+++ b/auth_signup_verify_email/__manifest__.py
@@ -0,0 +1,17 @@
+# Copyright 2015 Antiun Ingeniería, S.L.
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+{
+    "name": "Verify email at signup",
+    "summary": "Force uninvited users to use a good email for signup",
+    "version": "14.0.1.0.0",
+    "category": "Authentication",
+    "website": "https://github.com/OCA/server-auth",
+    "author": "Antiun Ingeniería S.L., "
+    "Tecnativa, "
+    "Odoo Community Association (OCA)",
+    "license": "AGPL-3",
+    "depends": ["auth_signup"],
+    "external_dependencies": {"python": ["lxml", "email_validator"]},
+    "data": ["views/signup.xml"],
+    "installable": True,
+}
diff --git a/auth_signup_verify_email/controllers/__init__.py b/auth_signup_verify_email/controllers/__init__.py
new file mode 100644
index 0000000000..437ebe48e0
--- /dev/null
+++ b/auth_signup_verify_email/controllers/__init__.py
@@ -0,0 +1,4 @@
+# Copyright 2015 Antiun Ingeniería, S.L.
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from . import main
diff --git a/auth_signup_verify_email/controllers/main.py b/auth_signup_verify_email/controllers/main.py
new file mode 100644
index 0000000000..e1b124d14a
--- /dev/null
+++ b/auth_signup_verify_email/controllers/main.py
@@ -0,0 +1,80 @@
+# Copyright 2015 Antiun Ingeniería, S.L.
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+import logging
+
+from email_validator import EmailSyntaxError, EmailUndeliverableError, validate_email
+
+from odoo import _
+from odoo.http import request, route
+
+from odoo.addons.auth_signup.controllers.main import AuthSignupHome
+
+_logger = logging.getLogger(__name__)
+
+
+class SignupVerifyEmail(AuthSignupHome):
+    @route()
+    def web_auth_signup(self, *args, **kw):
+        if request.params.get("login") and not request.params.get("password"):
+            return self.passwordless_signup()
+        return super().web_auth_signup(*args, **kw)
+
+    def passwordless_signup(self):
+        values = request.params
+        qcontext = self.get_auth_signup_qcontext()
+
+        # Check good format of e-mail
+        try:
+            validate_email(values.get("login", ""))
+        except EmailSyntaxError as error:
+            qcontext["error"] = getattr(
+                error,
+                "message",
+                _("That does not seem to be an email address."),
+            )
+            return request.render("auth_signup.signup", qcontext)
+        except EmailUndeliverableError as error:
+            qcontext["error"] = str(error)
+            return request.render("auth_signup.signup", qcontext)
+        except Exception as error:
+            qcontext["error"] = str(error)
+            return request.render("auth_signup.signup", qcontext)
+        if not values.get("email"):
+            values["email"] = values.get("login")
+
+        # preserve user lang
+        values["lang"] = request.context.get("lang", "")
+
+        # remove values that could raise "Invalid field '*' on model 'res.users'"
+        values.pop("redirect", "")
+        values.pop("token", "")
+
+        # Remove password
+        values["password"] = ""
+        sudo_users = request.env["res.users"].with_context(create_user=True).sudo()
+
+        try:
+            with request.cr.savepoint():
+                sudo_users.signup(values, qcontext.get("token"))
+                sudo_users.reset_password(values.get("login"))
+        except Exception as error:
+            # Duplicate key or wrong SMTP settings, probably
+            _logger.exception(error)
+            if (
+                request.env["res.users"]
+                .sudo()
+                .search([("login", "=", qcontext.get("login"))])
+            ):
+                qcontext["error"] = _(
+                    "Another user is already registered using this email" " address."
+                )
+            else:
+                # Agnostic message for security
+                qcontext["error"] = _(
+                    "Something went wrong, please try again later or" " contact us."
+                )
+            return request.render("auth_signup.signup", qcontext)
+
+        qcontext["message"] = _("Check your email to activate your account!")
+        return request.render("auth_signup.reset_password", qcontext)
diff --git a/auth_signup_verify_email/i18n/ar.po b/auth_signup_verify_email/i18n/ar.po
new file mode 100644
index 0000000000..e12988da94
--- /dev/null
+++ b/auth_signup_verify_email/i18n/ar.po
@@ -0,0 +1,42 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# 	* auth_signup_verify_email
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2021-01-06 13:44+0000\n"
+"Last-Translator: Rachid Al Assir <rachidalassir@gmail.com>\n"
+"Language-Team: none\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
+"X-Generator: Weblate 4.3.2\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr "هنالك مستخدم أخر مسجل بهذا البريد الإلكتروني."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "تحقق من بريدك الإلكتروني لتفعيل حسابك!"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr "حدث خطأ ما، يرجى المحاولة مرة أخرى لاحقًا أو الاتصال بنا."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "لا يبدو أن هذا عنوان بريد إلكتروني."
diff --git a/auth_signup_verify_email/i18n/auth_signup_verify_email.pot b/auth_signup_verify_email/i18n/auth_signup_verify_email.pot
new file mode 100644
index 0000000000..d5a9c0889b
--- /dev/null
+++ b/auth_signup_verify_email/i18n/auth_signup_verify_email.pot
@@ -0,0 +1,38 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# 	* auth_signup_verify_email
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \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"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr ""
diff --git a/auth_signup_verify_email/i18n/de.po b/auth_signup_verify_email/i18n/de.po
new file mode 100644
index 0000000000..6c9bb2ddc2
--- /dev/null
+++ b/auth_signup_verify_email/i18n/de.po
@@ -0,0 +1,45 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * auth_signup_verify_email
+#
+# Translators:
+# Rudolf Schnapka <rs@techno-flex.de>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: server-tools (9.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-06-09 12:31+0000\n"
+"PO-Revision-Date: 2016-05-31 14:47+0000\n"
+"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
+"Language-Team: German (http://www.transifex.com/oca/OCA-server-tools-9-0/"
+"language/de/)\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "Prüfen Sie Ihre Email, um Ihr Konto zu aktivieren."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr ""
+"Etwas ist schief gelaufen, bitte später nochmal versuchen oden an uns wenden."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "Das schein keine Email-Adresse zu sein."
diff --git a/auth_signup_verify_email/i18n/es.po b/auth_signup_verify_email/i18n/es.po
new file mode 100644
index 0000000000..ca65b6dc08
--- /dev/null
+++ b/auth_signup_verify_email/i18n/es.po
@@ -0,0 +1,44 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * auth_signup_verify_email
+#
+# Translators:
+# Antonio Trueba, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: server-tools (9.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-06-09 12:31+0000\n"
+"PO-Revision-Date: 2016-05-31 14:47+0000\n"
+"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
+"Language-Team: Spanish (http://www.transifex.com/oca/OCA-server-tools-9-0/"
+"language/es/)\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "Revise su correo para activar su cuenta."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr "Algo ha ido mal, por favor inténtelo de nuevo más tarde o contáctenos."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "Eso no parece una dirección de email válida."
diff --git a/auth_signup_verify_email/i18n/fr.po b/auth_signup_verify_email/i18n/fr.po
new file mode 100644
index 0000000000..8428c6a469
--- /dev/null
+++ b/auth_signup_verify_email/i18n/fr.po
@@ -0,0 +1,44 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * auth_signup_verify_email
+#
+# Translators:
+# Alexandre Papin <papin.alexandre@me.com>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-03-18 02:19+0000\n"
+"PO-Revision-Date: 2017-03-18 02:19+0000\n"
+"Last-Translator: Alexandre Papin <papin.alexandre@me.com>, 2017\n"
+"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "Un email vous à été envoyé pour activer votre compte."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr ""
+"Une erreur est survenue, veuillez réessayer plus tard ou contactez nous."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "Veuillez fournir une adresse email valide."
diff --git a/auth_signup_verify_email/i18n/hr.po b/auth_signup_verify_email/i18n/hr.po
new file mode 100644
index 0000000000..a492917479
--- /dev/null
+++ b/auth_signup_verify_email/i18n/hr.po
@@ -0,0 +1,45 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * auth_signup_verify_email
+#
+# Translators:
+# Bole <bole@dajmi5.com>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-10 00:47+0000\n"
+"PO-Revision-Date: 2019-11-13 17:34+0000\n"
+"Last-Translator: Bole <bole@dajmi5.com>\n"
+"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 3.8\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr "Drugi korisnik je već registriran sa ovom mail adresom."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "Provjerite svoj e-mail za aktivaciu računa!"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr "Nešto nije u redu, molimo pokušajte ponovo ili nas kontaktirajte."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "Ovo ne izgleda kao e-mail adresa."
diff --git a/auth_signup_verify_email/i18n/hr_HR.po b/auth_signup_verify_email/i18n/hr_HR.po
new file mode 100644
index 0000000000..c8ccb2c9ab
--- /dev/null
+++ b/auth_signup_verify_email/i18n/hr_HR.po
@@ -0,0 +1,47 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * auth_signup_verify_email
+#
+# Translators:
+# Bole <bole@dajmi5.com>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: server-tools (9.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-06-29 00:48+0000\n"
+"PO-Revision-Date: 2016-06-13 08:38+0000\n"
+"Last-Translator: Bole <bole@dajmi5.com>\n"
+"Language-Team: Croatian (Croatia) (http://www.transifex.com/oca/OCA-server-"
+"tools-9-0/language/hr_HR/)\n"
+"Language: hr_HR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "Provjerite svoj mail za aktiviranje računa"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr ""
+"Nešto nije u redu, molimo pokušajte se prijaviti kasnije ili nas "
+"kontaktirajte."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "Ovo ne izgleda kao valjana mail adresa."
diff --git a/auth_signup_verify_email/i18n/it.po b/auth_signup_verify_email/i18n/it.po
new file mode 100644
index 0000000000..586489e470
--- /dev/null
+++ b/auth_signup_verify_email/i18n/it.po
@@ -0,0 +1,46 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * auth_signup_verify_email
+#
+# Translators:
+# Paolo Valier, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: server-tools (9.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-06-09 12:31+0000\n"
+"PO-Revision-Date: 2016-05-31 14:47+0000\n"
+"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
+"Language-Team: Italian (http://www.transifex.com/oca/OCA-server-tools-9-0/"
+"language/it/)\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "Controlla la tua email per attivare il tuo account!"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr ""
+"Qualcosa non è funzionato, prego provare più tardi altrimenti mettiti in "
+"contatto con noi."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "Questo non sembra essere un indirizzo email valido."
diff --git a/auth_signup_verify_email/i18n/pt_BR.po b/auth_signup_verify_email/i18n/pt_BR.po
new file mode 100644
index 0000000000..95c1a62cd1
--- /dev/null
+++ b/auth_signup_verify_email/i18n/pt_BR.po
@@ -0,0 +1,47 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * auth_signup_verify_email
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: server-tools (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-11-27 14:01+0000\n"
+"PO-Revision-Date: 2019-09-03 03:23+0000\n"
+"Last-Translator: Rodrigo Macedo <rmsolucoeseminformatic4@gmail.com>\n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-server-"
+"tools-8-0/language/pt_BR/)\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 3.8\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr "Outro usuário já está registrado usando este endereço de email."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "Verifique seu e-mail para ativar sua conta!"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr "Ocorreu um erro. Tente novamente mais tarde ou entre em contato."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "Esse não parece ser um endereço de email."
+
+#~ msgid "email"
+#~ msgstr "email"
diff --git a/auth_signup_verify_email/i18n/ro.po b/auth_signup_verify_email/i18n/ro.po
new file mode 100644
index 0000000000..abab65a5a8
--- /dev/null
+++ b/auth_signup_verify_email/i18n/ro.po
@@ -0,0 +1,45 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * auth_signup_verify_email
+#
+# Translators:
+# Daniel Schweiger <danielcccasle@gmail.com>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-22 01:11+0000\n"
+"PO-Revision-Date: 2017-06-22 01:11+0000\n"
+"Last-Translator: Daniel Schweiger <danielcccasle@gmail.com>, 2017\n"
+"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
+"2:1));\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "Ati primit un email pentru activarea acestui cont!"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr ""
+"Sa produs o eroare, va rugam sa incercati mai tarziu sau contacteaza-ne."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "Nu ati introdus o  directie email corespunzatoare."
diff --git a/auth_signup_verify_email/i18n/sl.po b/auth_signup_verify_email/i18n/sl.po
new file mode 100644
index 0000000000..13a28a0a19
--- /dev/null
+++ b/auth_signup_verify_email/i18n/sl.po
@@ -0,0 +1,46 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * auth_signup_verify_email
+#
+# Translators:
+# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version: server-tools (9.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-06-09 12:31+0000\n"
+"PO-Revision-Date: 2016-05-31 14:47+0000\n"
+"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
+"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-server-tools-9-0/"
+"language/sl/)\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
+"%100==4 ? 2 : 3);\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "Preverite svojo e-pošto za aktiviranje računa!"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr ""
+"Nekaj je narobe. Ponovno poskusite kasneje ali pa stopite v stik z nami."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "Kaže, da to ni e-poštni naslov."
diff --git a/auth_signup_verify_email/i18n/tr.po b/auth_signup_verify_email/i18n/tr.po
new file mode 100644
index 0000000000..539151e38f
--- /dev/null
+++ b/auth_signup_verify_email/i18n/tr.po
@@ -0,0 +1,44 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * auth_signup_verify_email
+#
+# Translators:
+# Ahmet Altınışık <aaltinisik@altinkaya.com.tr>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: server-tools (9.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-06-09 12:31+0000\n"
+"PO-Revision-Date: 2016-05-31 14:47+0000\n"
+"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
+"Language-Team: Turkish (http://www.transifex.com/oca/OCA-server-tools-9-0/"
+"language/tr/)\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Another user is already registered using this email address."
+msgstr ""
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Check your email to activate your account!"
+msgstr "Hesabınızı aktive etmek için e-postanızı kontrol edin!"
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "Something went wrong, please try again later or contact us."
+msgstr "Bişeyler ters gitti. Lütfen sonra tekrar deneyin ya da bize ulaşın."
+
+#. module: auth_signup_verify_email
+#: code:addons/auth_signup_verify_email/controllers/main.py:0
+#, python-format
+msgid "That does not seem to be an email address."
+msgstr "Bu bir e-posta adresi gözükmüyor."
diff --git a/auth_signup_verify_email/readme/CONFIGURE.rst b/auth_signup_verify_email/readme/CONFIGURE.rst
new file mode 100644
index 0000000000..1c071f88d1
--- /dev/null
+++ b/auth_signup_verify_email/readme/CONFIGURE.rst
@@ -0,0 +1,6 @@
+To configure this module, you need to:
+
+* `Properly configure your outgoing email server(s)
+  <https://www.odoo.com/forum/help-1/question/how-to-configure-email-gateway-282#answer_290>`_.
+* Go to *Settings > General Settings -> General settings*, search for
+  the *Users* section and enable *Free sign up* in *Customer account*.
diff --git a/auth_signup_verify_email/readme/CONTRIBUTORS.rst b/auth_signup_verify_email/readme/CONTRIBUTORS.rst
new file mode 100644
index 0000000000..db6c44ec41
--- /dev/null
+++ b/auth_signup_verify_email/readme/CONTRIBUTORS.rst
@@ -0,0 +1,5 @@
+* Rafael Blasco <rafaelbn@antiun.com>
+* Jairo Llopis <yajo.sk8@gmail.com>
+* Simone Orsi <simone.orsi@camptocamp.com>
+* Alexandre Díaz <alexandre.diaz@tecnativa.com>
+* Eugene Molotov <molotov@it-projects.info>
diff --git a/auth_signup_verify_email/readme/DESCRIPTION.rst b/auth_signup_verify_email/readme/DESCRIPTION.rst
new file mode 100644
index 0000000000..0611813565
--- /dev/null
+++ b/auth_signup_verify_email/readme/DESCRIPTION.rst
@@ -0,0 +1,5 @@
+This module extends the functionality of public sign up to force users to
+provide a valid email address.
+
+To achieve this, users are not required to provide a password at
+sign up: they are asked for only at first login attempt.
diff --git a/auth_signup_verify_email/readme/INSTALL.rst b/auth_signup_verify_email/readme/INSTALL.rst
new file mode 100644
index 0000000000..647c3b7dcd
--- /dev/null
+++ b/auth_signup_verify_email/readme/INSTALL.rst
@@ -0,0 +1,2 @@
+* Install `email_validator <https://pypi.org/project/email-validator/>`_
+  with ``pip install email_validator`` or equivalent.
diff --git a/auth_signup_verify_email/readme/USAGE.rst b/auth_signup_verify_email/readme/USAGE.rst
new file mode 100644
index 0000000000..dbb9ad03ea
--- /dev/null
+++ b/auth_signup_verify_email/readme/USAGE.rst
@@ -0,0 +1,4 @@
+To use this module, you need to:
+
+* Log out.
+* `Sign up </web/signup>`_ with a valid email.
diff --git a/auth_signup_verify_email/static/description/icon.png b/auth_signup_verify_email/static/description/icon.png
new file mode 100644
index 0000000000..52e1b17dcb
Binary files /dev/null and b/auth_signup_verify_email/static/description/icon.png differ
diff --git a/auth_signup_verify_email/static/description/icon.svg b/auth_signup_verify_email/static/description/icon.svg
new file mode 100644
index 0000000000..ea6e7c2df5
--- /dev/null
+++ b/auth_signup_verify_email/static/description/icon.svg
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   height="835"
+   width="835"
+   version="1.0"
+   viewBox="0 0 834.99997 835.00004"
+   id="svg2">
+  <defs
+     id="defs4">
+    <filter
+       id="filter4153">
+      <feGaussianBlur
+         stdDeviation="81.084917"
+         id="feGaussianBlur4155" />
+    </filter>
+    <style
+       type="text/css"
+       id="style3386">
+    .str0 {stroke:#009846;stroke-width:52.92;stroke-linecap:round;stroke-linejoin:round}
+    .fil0 {fill:none}
+    .fil1 {fill:lime}
+  </style>
+  </defs>
+  <g
+     transform="translate(45.410818,275.93981)"
+     id="layer1">
+    <g
+       transform="translate(0.65940822,0)"
+       id="g3369">
+      <rect
+         id="rect3152"
+         style="fill:#c8c4b7;filter:url(#filter4153)"
+         transform="matrix(0.11047,-0.023735,0.022163,0.10315,300.37,-149.68913)"
+         height="3419.3"
+         width="5602.8999"
+         y="56.332001"
+         x="-2512.5" />
+      <rect
+         id="rect3162"
+         style="fill:#ffe680"
+         transform="matrix(0.9776883,-0.21006094,0.21006761,0.97768686,0,0)"
+         height="360.75027"
+         width="633.07739"
+         y="-92.742546"
+         x="52.823395" />
+      <ellipse
+         id="path4171"
+         style="fill:#ecca3e"
+         transform="matrix(0.98370743,-0.17977681,0.17978128,0.98370661,0,0)"
+         cx="352.75662"
+         cy="-51.803917"
+         rx="54.686268"
+         ry="51.564392" />
+      <g
+         id="g6179"
+         transform="translate(0,-242.03513)">
+        <circle
+           id="path2164"
+           style="fill:#00bf00"
+           transform="matrix(0.43582,-0.079648,0.075103,0.41094,140.95,-12.415)"
+           cx="404.38675"
+           cy="393.1416"
+           r="123.43465" />
+        <path
+           id="path2179"
+           d="m 509.34,405.88 -152.09,27.81 -31.84,143.87 c 17.67,2.7 36.12,2.74 54.84,-0.68 84.38,-15.43 141.36,-91.54 129.09,-171 z"
+           style="fill:#00d600"
+           transform="matrix(0.34629,0,0,0.34629,227.09,-36.051)" />
+        <path
+           id="path2162"
+           d="m 358.56,281.16 c -10.46,-0.11 -21.12,0.79 -31.84,2.75 -85.75,15.67 -143.34,94.01 -128.56,174.87 11.55,63.21 63.97,109.14 127.25,118.78 l 31.84,-143.87 152.09,-27.81 c -0.2,-1.3 -0.26,-2.59 -0.5,-3.88 C 495.91,331.25 431.83,281.89 358.56,281.16 Z"
+           style="fill:#00e600"
+           transform="matrix(0.34629,0,0,0.34629,227.09,-36.051)" />
+        <path
+           id="path2166"
+           d="m 294.21,361.94 -11.42,8.44 -21.06,15.75 c -8.59,18.28 -7.39,37.67 -2.01,58.27 13.96,53.44 53.71,79.56 109.79,73.19 28.71,-3.26 55.01,-12.92 71.14,-33.43 L 469.9,447.48 294.21,361.94 Z"
+           style="fill:#009900"
+           transform="matrix(0.34629,0,0,0.34629,227.09,-36.051)" />
+        <circle
+           id="path2160"
+           style="fill:#00bf00"
+           transform="matrix(0.34065,-0.062255,0.058702,0.3212,200.08,-8.6127)"
+           cx="404.38675"
+           cy="393.1416"
+           r="123.43465" />
+        <circle
+           id="path2174"
+           style="fill:#00e600"
+           transform="matrix(0.34065,-0.062255,0.058702,0.3212,203.09,-11.37)"
+           cx="404.38675"
+           cy="393.1416"
+           r="123.43465" />
+      </g>
+      <path
+         id="path6189"
+         style="fill:#2b1100"
+         d="m 521.62129,-135.53746 c -1.53981,0.44983 -2.76432,2.29649 -2.16712,4.73746 1.78416,7.27211 2.34342,14.76003 3.5071,22.14263 2.20474,9.991359 3.36942,20.139209 4.54214,30.284481 1.28608,10.747104 3.42252,21.354274 5.01884,32.046137 2.47121,10.269274 3.61305,20.787881 5.95855,31.079768 3.02289,9.3919723 4.18025,19.2407955 6.88198,28.70924 2.62047,6.480747 5.20394,12.92905 7.26703,19.6064 0.35087,5.126046 2.32091,10.10477 4.12738,14.435722 0.8636,5.342662 4.39532,9.111093 6.19275,13.772919 0.95947,4.647088 2.16951,8.611013 3.08832,13.076142 1.38525,2.383082 1.92589,4.868793 2.4191,7.538143 3.31888,17.744413 29.94621,11.335542 24.81806,-5.970074 -0.7845,-2.637919 -1.52276,-5.352725 -1.57457,-8.110544 -1.52743,-5.173945 -3.24901,-10.649013 -6.2985,-15.290187 -0.65499,-4.665025 -2.5317,-9.159584 -4.68165,-13.566457 -1.42439,-4.604258 -3.24491,-9.586642 -5.94439,-14.021033 -2.89222,-6.526503 -5.74683,-13.073937 -8.97975,-19.4467811 -4.27355,-8.068756 -8.21305,-16.1738019 -10.261,-25.1517949 -2.98068,-10.061457 -5.85689,-20.156441 -8.24863,-30.371441 -3.53974,-9.952955 -7.32604,-19.817925 -9.47034,-30.200975 -2.53015,-10.011027 -4.03464,-20.085285 -5.11261,-30.349605 -1.89266,-7.83118 -3.96428,-15.88858 -7.62585,-23.07232 -0.89339,-1.7343 -2.25714,-2.22738 -3.45684,-1.87783 z m 84.32167,-20.97048 c -0.91705,0.37407 -1.74406,1.52587 -2.4727,3.42615 -1.83655,4.7732 -2.12884,9.41425 -2.07837,14.43283 0.50016,5.61884 0.62926,11.24154 0.73167,16.86393 1.71305,8.37634 3.4637,16.73175 4.81829,25.178815 2.24626,10.811258 3.98484,21.670204 4.99588,32.665123 0.20969,8.193992 1.49069,16.301243 2.14118,24.460143 0.12664,5.366424 2.04846,10.360621 2.93964,15.623518 0.15482,5.233282 1.39732,10.347978 2.84174,15.0699037 1.51489,4.389072 1.55173,8.4813012 3.14518,13.0047124 0.58112,5.5396794 1.89758,11.4372679 3.90522,16.3950599 -0.67923,1.778045 1.01228,2.795285 1.5144,4.194218 5.88897,16.582801 28.89988,8.958931 23.60303,-7.822753 -0.10802,-0.364217 -0.029,-4.316351 -1.41726,-4.526773 -1.12649,-4.0350557 -3.19144,-7.9284973 -4.41773,-12.1088067 -0.14925,-5.492128 -1.69714,-10.5088213 -3.04897,-15.6327513 -0.88738,-4.173838 -2.13287,-9.021652 -3.33344,-13.59137 -1.36989,-5.180184 -1.54127,-10.603163 -3.70933,-15.536063 -2.82074,-7.187651 -5.19114,-14.546414 -7.43038,-21.938405 -2.1638,-11.023866 -3.7717,-22.110894 -5.55838,-33.202596 -1.71455,-8.242905 -2.53945,-16.558575 -3.32357,-24.940505 -1.63179,-5.38865 -2.745,-10.84622 -3.92159,-16.36322 -1.43213,-4.62837 -3.00118,-9.1862 -5.87104,-13.18476 -1.52426,-2.12574 -2.8738,-2.93361 -4.05347,-2.4664 z M 174.47092,-14.913155 c -1.18453,0.424453 -2.32263,0.993562 -3.39627,1.76358 -6.0211,2.809802 -12.40483,4.752065 -18.5045,7.4275284 -7.3291,3.6284394 -14.24016,8.2750471 -22.51053,9.4399727 -6.59149,1.689832 -12.55393,4.4808079 -18.46932,7.7885269 -6.70536,-7.2883511 -21.426469,3.410232 -14.797833,14.135862 4.876613,7.892951 7.750693,16.774246 10.984213,25.424955 3.66431,11.650334 7.08465,23.396691 10.62278,35.087515 3.74999,12.030583 6.40328,24.342205 9.71736,36.494945 3.67247,12.76459 5.2899,25.93161 6.96806,39.06141 1.30966,7.77008 1.21474,15.64522 1.30501,23.48752 13.38112,16.58061 21.07089,9.82265 35.7028,2.84013 6.67786,-4.15516 14.27827,-5.9383 21.59895,-8.48263 5.67791,-2.74398 11.78405,-3.63985 17.87791,-4.7977 3.48751,-0.87986 6.91579,-1.26206 10.65239,-1.50387 4.5522,0.17011 9.02857,0.39115 13.48437,1.01768 21.38629,3.0025 24.71975,-30.27918 3.12492,-30.39599 -5.52217,-0.0273 -11.01958,0.35416 -16.54343,0.2388 -6.4889,-0.22226 -13.11062,-1.64287 -19.30142,0.87569 -6.39986,2.45269 -12.28789,5.79595 -18.55485,8.56055 -8.60056,3.14121 -17.18604,6.43712 -25.67641,9.84434 -0.81649,0.47476 -1.51999,0.89553 -2.16517,1.27986 -0.81902,-2.20137 -1.56847,-4.44279 -2.15862,-6.72647 -3.3921,-12.97865 -7.2034,-25.84937 -9.49846,-39.09145 -0.91818,-5.06808 -1.93619,-10.113 -3.08134,-15.12597 1.07865,0.0439 2.23568,5.2e-4 3.46302,-0.17175 6.64566,-0.92718 12.97595,-3.12708 19.29372,-5.305236 4.43116,-1.554986 9.17573,-2.067087 13.69176,-2.479256 0.74949,0.167223 1.48756,0.329247 2.23706,0.49647 19.90666,4.487832 16.33267,-35.698236 -2.84762,-28.727507 -0.92013,0.339604 -1.82723,0.683891 -2.74656,1.023237 -7.20894,0.602698 -12.76822,4.310247 -19.03865,7.740768 -5.8648,2.653275 -11.89161,4.995111 -17.34498,8.447075 -0.50809,0.322606 -0.97211,0.666526 -1.41909,1.013841 -0.47672,-1.593229 -0.9663,-3.182332 -1.47436,-4.765503 -3.51847,-12.016241 -7.76356,-23.763842 -12.53085,-35.334998 -2.21294,-6.691309 -4.02663,-13.519605 -6.056,-20.252096 0.31563,-0.154473 0.64796,-0.323172 0.96579,-0.531537 4.76581,-3.000851 10.30647,-3.954574 15.71558,-5.14973 8.8958,-1.312453 17.32295,-4.389138 25.98244,-6.64512 6.34772,-0.184493 12.49137,-0.427595 18.82694,-1.503456 5.13715,-0.150564 9.59258,0.03288 14.63559,-1.9577909 18.53917,-7.3056932 11.10362,-33.5414981 -7.75426,-27.0908411 -3.5636,1.214526 -7.44808,1.29106 -10.98014,2.548645 z M 484.82959,-74.62368 c -0.40668,0.08619 -0.86685,0.42001 -1.49242,0.984191 -8.34032,7.54289 -6.68614,20.92858 -12.67702,30.323529 -5.33066,8.358716 16.41739,10.996928 13.94127,1.402895 -2.79321,-10.83074 5.51918,-20.642725 1.80742,-30.965954 -0.47087,-1.329184 -0.91313,-1.878653 -1.57925,-1.744661 z M 268.92138,38.408504 c -4.73218,1.882051 -8.12707,6.853971 -4.83796,12.73899 4.29124,7.681927 7.8442,15.742599 11.52348,23.727283 2.83775,9.477978 5.53402,18.957037 8.73053,28.337613 2.66547,7.22861 4.30516,14.76869 6.72953,22.07468 1.40825,4.13964 1.86077,8.53281 2.43851,12.70851 2.9357,20.9698 23.40248,13.62167 21.78156,-4.63219 -1.20411,-4.96746 -2.69683,-10.14369 -4.29838,-15.13429 -0.20524,-0.50144 -0.39183,-0.99999 -0.59707,-1.50143 0.36206,-3.48452 0.73216,-6.97162 1.02219,-10.45963 1.51061,-10.456818 0.94589,-21.027672 1.5494,-31.521361 0.29068,-4.259381 1.53308,-8.17711 3.13185,-11.978736 0.99259,1.932927 2.02495,4.127878 2.89845,6.684052 3.28535,10.265062 6.67805,20.477945 10.37325,30.611475 3.22023,7.74198 4.85819,15.91196 6.16983,24.14234 1.23487,11.02946 10.74937,8.0293 14.97473,0.64577 4.91302,2.93513 12.17311,-0.15705 7.39861,-7.82571 -2.89484,-5.81654 -5.68233,-11.68525 -8.08635,-17.712484 -0.0141,-2.308978 0.0759,-4.624795 0.23539,-6.945172 0.78099,-5.852704 2.53326,-11.440943 4.57424,-17.06865 1.06188,-7.573828 3.3372,-14.819083 5.22462,-22.223501 0.95327,-3.603343 2.21925,-7.00566 3.26171,-10.469206 0.78695,-1.38714 1.58193,-2.776859 2.40073,-4.147627 1.35298,5.735179 3.36237,11.250844 5.47305,16.778322 4.20705,8.524436 7.36679,17.376105 9.62009,26.607302 2.46212,8.224599 3.48751,16.750709 4.70578,25.214926 0.30358,6.24923 0.60953,11.09718 3.34249,16.35405 7.43048,14.31529 21.66474,9.58775 21.83497,-6.53738 0.052,-5.11351 -2.35737,-9.47258 -4.08769,-14.64347 -2.49325,-8.542574 -6.43077,-16.586207 -8.34797,-25.322509 -3.02199,-9.472037 -6.12177,-18.910248 -9.39031,-28.2943 -2.61844,-7.137337 -5.00671,-14.330813 -8.63349,-21.047059 -7.01865,-11.291862 -16.75994,-6.871586 -21.16955,3.611434 -0.14765,0.313304 -0.27922,0.62145 -0.41884,0.932175 l -0.0804,0.02579 c -1.08323,0.436266 -2.17192,0.883147 -3.25516,1.319413 -3.68114,5.267655 -5.35371,10.413708 -5.66071,17.080484 -1.84429,7.842643 -4.80271,15.307113 -6.31583,23.132118 0.21074,2.866369 0.19796,5.671508 0.0893,8.454219 -2.43983,-6.166429 -4.92529,-12.309349 -7.46702,-18.434215 -6.30605,-18.186305 -3.67579,-35.180674 -29.42305,-31.084095 -5.17827,4.055077 -8.42437,9.324943 -9.72994,15.780331 -1.20232,8.43439 -1.10465,16.859341 -1.30433,25.379716 -0.12069,2.192692 -0.21757,4.404336 -0.28488,6.597627 -1.60651,-3.597361 -3.0899,-7.22537 -4.37466,-10.952579 -2.43579,-8.667383 -6.00454,-16.749586 -8.79969,-25.26619 -2.10884,-6.405609 -8.18891,-7.618886 -12.92108,-5.736836 z M 423.07609,-0.3985905 C 416.25661,2.4369547 409.6459,4.9839039 405.27142,10.9084 c -6.99326,6.906727 -6.52867,16.171241 -4.873,25.142164 4.02458,10.276024 7.06356,20.850613 10.07267,31.470243 3.56513,10.308238 6.97162,20.481238 8.90913,31.214297 1.09791,5.630886 3.34215,10.911636 5.25432,16.290086 8.18698,17.3079 25.31255,11.81205 26.39374,-5.81094 0.34022,-7.72339 1.26469,-15.421537 2.52202,-23.049225 0.49234,-9.624791 -0.0429,-18.777993 1.65496,-28.319862 0.31818,1.378185 0.6312,2.740297 0.92816,4.107567 0.69993,6.130896 2.74075,11.937851 4.57293,17.785173 2.14607,5.941594 3.90154,11.964219 5.49856,18.073149 2.74563,2.699958 3.14194,6.393178 4.56385,9.553398 5.46829,12.206 22.94869,4.58415 17.32482,-7.554206 -1.46724,-3.163395 -3.93478,-5.908277 -4.46057,-9.480168 -3.0351,-4.734433 -5.22818,-9.579531 -6.0724,-15.220921 -1.3645,-5.660572 -2.81739,-11.292775 -4.62905,-16.827575 -1.45483,-6.411619 -2.66856,-12.900607 -4.6535,-19.1687 -2.95516,-8.76663 -3.24899,-16.836116 -9.00489,-20.298523 -0.35583,-0.639251 -0.72258,-1.257271 -1.12663,-1.881048 -0.48081,0.269529 -0.93204,0.520706 -1.35689,0.79887 -1.77954,-0.545787 -3.93601,-0.802196 -6.60921,-0.680043 6.56482,-3.214753 8.81954,-12.4300767 0.001,-16.2925137 -8.58989,-3.758447 -18.14689,-3.1556662 -27.10563,-1.1582128 z m 67.94622,-13.5791235 c -2.92237,0.920104 -5.08453,4.2643225 -3.93794,8.8868177 1.45566,5.8617816 3.11997,11.6831974 4.65857,17.5272253 3.10682,7.85815 3.54052,16.308224 5.94619,24.329334 3.55382,8.69861 4.00127,17.826805 4.31407,27.060255 -0.0184,5.687764 0.33808,11.024737 1.66917,16.332606 -0.71964,2.287401 1.38557,3.544168 2.08639,5.313673 6.05831,15.287493 25.18337,8.81314 22.08414,-7.335322 -0.24507,-1.23323 0.70092,-2.760052 -0.71915,-3.704849 -0.89686,-4.75582 -2.58203,-10.145067 -4.55297,-15.043726 -3.42692,-8.827975 -8.01485,-17.185857 -8.83282,-26.833355 -1.9076,-8.40255 -5.49937,-16.335538 -7.59955,-24.7028803 -2.27316,-6.0337712 -4.29659,-12.2008678 -7.37171,-17.8886377 -2.00048,-3.692532 -5.16758,-4.750348 -7.74439,-3.941141 z M 234.72198,72.625108 c -1.51114,0.51154 -3.06228,1.257518 -4.81385,2.262824 -11.43599,6.541926 2.11611,24.078172 11.40284,14.733543 4.44899,-4.476978 5.84325,-7.893871 7.06289,-14.064623 0.65353,-3.294414 0.52278,-3.536105 -2.82662,-3.808566 -4.41346,-0.356465 -7.51078,-0.257754 -10.82526,0.876822 z M 432.1914,16.957093 c 2.67414,-0.92022 5.15416,-0.953789 8.3272,0.288266 2.81697,1.099265 5.48807,1.163929 7.78013,0.517015 -1.98369,3.375582 -3.94768,7.613522 -3.83958,12.728837 0.53331,8.373787 0.17859,16.438666 -1.40103,24.71935 -0.73534,10.110521 -3.64899,18.81932 -6.68157,28.372907 -0.27872,2.004078 -0.52787,3.989804 -0.79052,5.988725 -4.14485,-8.35825 -7.45212,-17.144846 -10.19745,-26.058595 -2.49633,-9.933242 -4.72458,-19.970243 -5.50669,-30.196546 -0.009,-3.010908 0.0888,-5.772388 0.93268,-8.666963 2.29779,-1.871992 5.64948,-4.658358 8.60356,-6.501635 0.95842,-0.493718 1.88639,-0.889019 2.77327,-1.191361 z m 213.33976,36.211544 c -4.78969,1.537084 -8.28245,7.143166 -8.08888,16.060318 0.0556,2.659103 1.30325,4.69632 2.11167,7.10496 5.78942,17.128862 29.59324,9.489864 24.33422,-7.809212 -0.73609,-2.431851 -0.93099,-4.806917 -2.44116,-6.999221 -5.03148,-7.364594 -11.12615,-9.893929 -15.91585,-8.356845 z" />
+    </g>
+    <g
+       transform="matrix(0.08790947,0,0,0.08790947,335.9704,77.138302)"
+       id="g3399"
+       style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
+      <g
+         id="Layer_x0020_1">
+        <g
+           id="g3389">
+          <polygon
+             style="fill:none;stroke:#009846;stroke-width:52.91999817;stroke-linecap:round;stroke-linejoin:round"
+             points="4586,26 1411,3452 26,2802 1363,4869 "
+             class="fil0 str0"
+             id="polygon3391" />
+          <polygon
+             style="fill:#00ff00"
+             id="1"
+             points="4586,26 1411,3452 26,2802 1363,4869 "
+             class="fil1" />
+        </g>
+      </g>
+    </g>
+  </g>
+  <metadata
+     id="metadata19">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title></dc:title>
+        <dc:date>2007-02-06T06:13:53</dc:date>
+        <dc:description>Thumbtack note with message &quot;E-mail!&quot;</dc:description>
+        <dc:source>https://openclipart.org/detail/3040/thumbtack-note-email-by-zeimusu</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>zeimusu</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>bulletin</rdf:li>
+            <rdf:li>email</rdf:li>
+            <rdf:li>memo</rdf:li>
+            <rdf:li>note</rdf:li>
+            <rdf:li>thumbtack</rdf:li>
+            <rdf:li>thumbtack note</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/auth_signup_verify_email/static/description/index.html b/auth_signup_verify_email/static/description/index.html
new file mode 100644
index 0000000000..a134df704c
--- /dev/null
+++ b/auth_signup_verify_email/static/description/index.html
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
+<title>Verify email at signup</title>
+<style type="text/css">
+
+/*
+:Author: David Goodger (goodger@python.org)
+:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+  border: 0 }
+
+table.borderless td, table.borderless th {
+  /* Override padding for "table.docutils td" with "! important".
+     The right padding separates the table cells. */
+  padding: 0 0.5em 0 0 ! important }
+
+.first {
+  /* Override more specific margin styles with "! important". */
+  margin-top: 0 ! important }
+
+.last, .with-subtitle {
+  margin-bottom: 0 ! important }
+
+.hidden {
+  display: none }
+
+.subscript {
+  vertical-align: sub;
+  font-size: smaller }
+
+.superscript {
+  vertical-align: super;
+  font-size: smaller }
+
+a.toc-backref {
+  text-decoration: none ;
+  color: black }
+
+blockquote.epigraph {
+  margin: 2em 5em ; }
+
+dl.docutils dd {
+  margin-bottom: 0.5em }
+
+object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
+  overflow: hidden;
+}
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+  font-weight: bold }
+*/
+
+div.abstract {
+  margin: 2em 5em }
+
+div.abstract p.topic-title {
+  font-weight: bold ;
+  text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+  margin: 2em ;
+  border: medium outset ;
+  padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title, .code .error {
+  color: red ;
+  font-weight: bold ;
+  font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+   compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+  margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+  margin-top: 0.5em }
+*/
+
+div.dedication {
+  margin: 2em 5em ;
+  text-align: center ;
+  font-style: italic }
+
+div.dedication p.topic-title {
+  font-weight: bold ;
+  font-style: normal }
+
+div.figure {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+div.footer, div.header {
+  clear: both;
+  font-size: smaller }
+
+div.line-block {
+  display: block ;
+  margin-top: 1em ;
+  margin-bottom: 1em }
+
+div.line-block div.line-block {
+  margin-top: 0 ;
+  margin-bottom: 0 ;
+  margin-left: 1.5em }
+
+div.sidebar {
+  margin: 0 0 0.5em 1em ;
+  border: medium outset ;
+  padding: 1em ;
+  background-color: #ffffee ;
+  width: 40% ;
+  float: right ;
+  clear: right }
+
+div.sidebar p.rubric {
+  font-family: sans-serif ;
+  font-size: medium }
+
+div.system-messages {
+  margin: 5em }
+
+div.system-messages h1 {
+  color: red }
+
+div.system-message {
+  border: medium outset ;
+  padding: 1em }
+
+div.system-message p.system-message-title {
+  color: red ;
+  font-weight: bold }
+
+div.topic {
+  margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+  margin-top: 0.4em }
+
+h1.title {
+  text-align: center }
+
+h2.subtitle {
+  text-align: center }
+
+hr.docutils {
+  width: 75% }
+
+img.align-left, .figure.align-left, object.align-left, table.align-left {
+  clear: left ;
+  float: left ;
+  margin-right: 1em }
+
+img.align-right, .figure.align-right, object.align-right, table.align-right {
+  clear: right ;
+  float: right ;
+  margin-left: 1em }
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+table.align-center {
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+  text-align: left }
+
+.align-center {
+  clear: both ;
+  text-align: center }
+
+.align-right {
+  text-align: right }
+
+/* reset inner alignment in figures */
+div.align-right {
+  text-align: inherit }
+
+/* div.align-center * { */
+/*   text-align: left } */
+
+.align-top    {
+  vertical-align: top }
+
+.align-middle {
+  vertical-align: middle }
+
+.align-bottom {
+  vertical-align: bottom }
+
+ol.simple, ul.simple {
+  margin-bottom: 1em }
+
+ol.arabic {
+  list-style: decimal }
+
+ol.loweralpha {
+  list-style: lower-alpha }
+
+ol.upperalpha {
+  list-style: upper-alpha }
+
+ol.lowerroman {
+  list-style: lower-roman }
+
+ol.upperroman {
+  list-style: upper-roman }
+
+p.attribution {
+  text-align: right ;
+  margin-left: 50% }
+
+p.caption {
+  font-style: italic }
+
+p.credits {
+  font-style: italic ;
+  font-size: smaller }
+
+p.label {
+  white-space: nowrap }
+
+p.rubric {
+  font-weight: bold ;
+  font-size: larger ;
+  color: maroon ;
+  text-align: center }
+
+p.sidebar-title {
+  font-family: sans-serif ;
+  font-weight: bold ;
+  font-size: larger }
+
+p.sidebar-subtitle {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+p.topic-title {
+  font-weight: bold }
+
+pre.address {
+  margin-bottom: 0 ;
+  margin-top: 0 ;
+  font: inherit }
+
+pre.literal-block, pre.doctest-block, pre.math, pre.code {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+pre.code .ln { color: grey; } /* line numbers */
+pre.code, code { background-color: #eeeeee }
+pre.code .comment, code .comment { color: #5C6576 }
+pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
+pre.code .literal.string, code .literal.string { color: #0C5404 }
+pre.code .name.builtin, code .name.builtin { color: #352B84 }
+pre.code .deleted, code .deleted { background-color: #DEB0A1}
+pre.code .inserted, code .inserted { background-color: #A3D289}
+
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+span.interpreted {
+  font-family: sans-serif }
+
+span.option {
+  white-space: nowrap }
+
+span.pre {
+  white-space: pre }
+
+span.problematic {
+  color: red }
+
+span.section-subtitle {
+  /* font-size relative to parent (h1..h6 element) */
+  font-size: 80% }
+
+table.citation {
+  border-left: solid 1px gray;
+  margin-left: 1px }
+
+table.docinfo {
+  margin: 2em 4em }
+
+table.docutils {
+  margin-top: 0.5em ;
+  margin-bottom: 0.5em }
+
+table.footnote {
+  border-left: solid 1px black;
+  margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+  padding-left: 0.5em ;
+  padding-right: 0.5em ;
+  vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+  font-weight: bold ;
+  text-align: left ;
+  white-space: nowrap ;
+  padding-left: 0 }
+
+/* "booktabs" style (no vertical lines) */
+table.docutils.booktabs {
+  border: 0px;
+  border-top: 2px solid;
+  border-bottom: 2px solid;
+  border-collapse: collapse;
+}
+table.docutils.booktabs * {
+  border: 0px;
+}
+table.docutils.booktabs th {
+  border-bottom: thin solid;
+  text-align: left;
+}
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+  font-size: 100% }
+
+ul.auto-toc {
+  list-style-type: none }
+
+</style>
+</head>
+<body>
+<div class="document" id="verify-email-at-signup">
+<h1 class="title">Verify email at signup</h1>
+
+<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! This file is generated by oca-gen-addon-readme !!
+!! changes will be overwritten.                   !!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/server-auth/tree/14.0/auth_signup_verify_email"><img alt="OCA/server-auth" src="https://img.shields.io/badge/github-OCA%2Fserver--auth-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/server-auth-14-0/server-auth-14-0-auth_signup_verify_email"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/251/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
+<p>This module extends the functionality of public sign up to force users to
+provide a valid email address.</p>
+<p>To achieve this, users are not required to provide a password at
+sign up: they are asked for only at first login attempt.</p>
+<p><strong>Table of contents</strong></p>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#installation" id="id1">Installation</a></li>
+<li><a class="reference internal" href="#configuration" id="id2">Configuration</a></li>
+<li><a class="reference internal" href="#usage" id="id3">Usage</a></li>
+<li><a class="reference internal" href="#bug-tracker" id="id4">Bug Tracker</a></li>
+<li><a class="reference internal" href="#credits" id="id5">Credits</a><ul>
+<li><a class="reference internal" href="#authors" id="id6">Authors</a></li>
+<li><a class="reference internal" href="#contributors" id="id7">Contributors</a></li>
+<li><a class="reference internal" href="#maintainers" id="id8">Maintainers</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="installation">
+<h1><a class="toc-backref" href="#id1">Installation</a></h1>
+<ul class="simple">
+<li>Install <a class="reference external" href="https://pypi.org/project/email-validator/">email_validator</a>
+with <tt class="docutils literal">pip install email_validator</tt> or equivalent.</li>
+</ul>
+</div>
+<div class="section" id="configuration">
+<h1><a class="toc-backref" href="#id2">Configuration</a></h1>
+<p>To configure this module, you need to:</p>
+<ul class="simple">
+<li><a class="reference external" href="https://www.odoo.com/forum/help-1/question/how-to-configure-email-gateway-282#answer_290">Properly configure your outgoing email server(s)</a>.</li>
+<li>Go to <em>Settings &gt; General Settings -&gt; General settings</em>, search for
+the <em>Users</em> section and enable <em>Free sign up</em> in <em>Customer account</em>.</li>
+</ul>
+</div>
+<div class="section" id="usage">
+<h1><a class="toc-backref" href="#id3">Usage</a></h1>
+<p>To use this module, you need to:</p>
+<ul class="simple">
+<li>Log out.</li>
+<li><a class="reference external" href="/web/signup">Sign up</a> with a valid email.</li>
+</ul>
+</div>
+<div class="section" id="bug-tracker">
+<h1><a class="toc-backref" href="#id4">Bug Tracker</a></h1>
+<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/server-auth/issues">GitHub Issues</a>.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+<a class="reference external" href="https://github.com/OCA/server-auth/issues/new?body=module:%20auth_signup_verify_email%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
+<p>Do not contact contributors directly about support or help with technical issues.</p>
+</div>
+<div class="section" id="credits">
+<h1><a class="toc-backref" href="#id5">Credits</a></h1>
+<div class="section" id="authors">
+<h2><a class="toc-backref" href="#id6">Authors</a></h2>
+<ul class="simple">
+<li>Antiun Ingeniería S.L.</li>
+<li>Tecnativa</li>
+</ul>
+</div>
+<div class="section" id="contributors">
+<h2><a class="toc-backref" href="#id7">Contributors</a></h2>
+<ul class="simple">
+<li>Rafael Blasco &lt;<a class="reference external" href="mailto:rafaelbn&#64;antiun.com">rafaelbn&#64;antiun.com</a>&gt;</li>
+<li>Jairo Llopis &lt;<a class="reference external" href="mailto:yajo.sk8&#64;gmail.com">yajo.sk8&#64;gmail.com</a>&gt;</li>
+<li>Simone Orsi &lt;<a class="reference external" href="mailto:simone.orsi&#64;camptocamp.com">simone.orsi&#64;camptocamp.com</a>&gt;</li>
+<li>Alexandre Díaz &lt;<a class="reference external" href="mailto:alexandre.diaz&#64;tecnativa.com">alexandre.diaz&#64;tecnativa.com</a>&gt;</li>
+<li>Eugene Molotov &lt;<a class="reference external" href="mailto:molotov&#64;it-projects.info">molotov&#64;it-projects.info</a>&gt;</li>
+</ul>
+</div>
+<div class="section" id="maintainers">
+<h2><a class="toc-backref" href="#id8">Maintainers</a></h2>
+<p>This module is maintained by the OCA.</p>
+<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
+<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.</p>
+<p>This module is part of the <a class="reference external" href="https://github.com/OCA/server-auth/tree/14.0/auth_signup_verify_email">OCA/server-auth</a> project on GitHub.</p>
+<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
+</div>
+</div>
+</div>
+</body>
+</html>
diff --git a/auth_signup_verify_email/tests/__init__.py b/auth_signup_verify_email/tests/__init__.py
new file mode 100644
index 0000000000..f658c7d101
--- /dev/null
+++ b/auth_signup_verify_email/tests/__init__.py
@@ -0,0 +1,4 @@
+# Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from . import test_verify_email
diff --git a/auth_signup_verify_email/tests/test_verify_email.py b/auth_signup_verify_email/tests/test_verify_email.py
new file mode 100644
index 0000000000..8bb3060f68
--- /dev/null
+++ b/auth_signup_verify_email/tests/test_verify_email.py
@@ -0,0 +1,49 @@
+# Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from lxml.html import document_fromstring
+from mock import patch
+
+from odoo.tests.common import HttpCase
+from odoo.tools.misc import mute_logger
+
+from odoo.addons.mail.models import mail_template
+
+
+class UICase(HttpCase):
+    def setUp(self):
+        super().setUp()
+        if "website" in self.env:
+            # Enable public signup in website if it is installed; otherwise
+            # tests here would fail
+            current_website = self.env["website"].get_current_website()
+            current_website.auth_signup_uninvited = "b2c"
+        self.env["ir.config_parameter"].set_param("auth_signup.invitation_scope", "b2c")
+        self.data = {
+            "csrf_token": self.csrf_token(),
+            "name": "Somebody",
+        }
+
+    def html_doc(self, url="/web/signup", data=None, timeout=30):
+        """Get an HTML LXML document."""
+        with patch(mail_template.__name__ + ".MailTemplate.send_mail"):
+            resp = self.url_open(url, data=data, timeout=timeout)
+        return document_fromstring(resp.content)
+
+    def csrf_token(self):
+        """Get a valid CSRF token."""
+        doc = self.html_doc()
+        return doc.xpath("//input[@name='csrf_token']")[0].get("value")
+
+    def test_bad_email(self):
+        """Test rejection of bad emails."""
+        self.data["login"] = "bad email"
+        doc = self.html_doc(data=self.data)
+        self.assertTrue(doc.xpath('//p[@class="alert alert-danger"]'))
+
+    @mute_logger("odoo.addons.auth_signup_verify_email.controllers.main")
+    def test_good_email(self):
+        """Test acceptance of good emails."""
+        self.data["login"] = "good@example.com"
+        doc = self.html_doc(data=self.data)
+        self.assertTrue(doc.xpath('//p[@class="alert alert-success"]'))
diff --git a/auth_signup_verify_email/views/signup.xml b/auth_signup_verify_email/views/signup.xml
new file mode 100644
index 0000000000..49b44e7b0e
--- /dev/null
+++ b/auth_signup_verify_email/views/signup.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!-- Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
+     License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
+<odoo>
+    <template id="signup_fields" inherit_id="auth_signup.fields">
+        <xpath expr="//div[hasclass('field-password')]" position="attributes">
+            <attribute name="t-if">only_passwords</attribute>
+        </xpath>
+        <xpath expr="//div[hasclass('field-confirm_password')]" position="attributes">
+            <attribute name="t-if">only_passwords</attribute>
+        </xpath>
+        <xpath expr="//input[@name='login']" position="attributes">
+            <attribute name="type">email</attribute>
+        </xpath>
+    </template>
+</odoo>
diff --git a/requirements.txt b/requirements.txt
index fac284a3c3..dcb0cf3012 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,7 @@
 # generated from manifests external_dependencies
 cryptography
+email_validator
+lxml
 pyjwt
 pysaml2
 python-jose
diff --git a/setup/_metapackage/VERSION.txt b/setup/_metapackage/VERSION.txt
index db931d6471..9af973d7cd 100644
--- a/setup/_metapackage/VERSION.txt
+++ b/setup/_metapackage/VERSION.txt
@@ -1 +1 @@
-14.0.20220117.0
\ No newline at end of file
+14.0.20220121.0
\ No newline at end of file
diff --git a/setup/_metapackage/setup.py b/setup/_metapackage/setup.py
index 5f436ab2b0..fdf87abf17 100644
--- a/setup/_metapackage/setup.py
+++ b/setup/_metapackage/setup.py
@@ -19,6 +19,7 @@
         'odoo14-addon-auth_oidc',
         'odoo14-addon-auth_saml',
         'odoo14-addon-auth_session_timeout',
+        'odoo14-addon-auth_signup_verify_email',
         'odoo14-addon-auth_user_case_insensitive',
         'odoo14-addon-password_security',
         'odoo14-addon-user_log_view',
diff --git a/setup/auth_signup_verify_email/odoo/addons/auth_signup_verify_email b/setup/auth_signup_verify_email/odoo/addons/auth_signup_verify_email
new file mode 120000
index 0000000000..58daa4b4b6
--- /dev/null
+++ b/setup/auth_signup_verify_email/odoo/addons/auth_signup_verify_email
@@ -0,0 +1 @@
+../../../../auth_signup_verify_email
\ No newline at end of file
diff --git a/setup/auth_signup_verify_email/setup.py b/setup/auth_signup_verify_email/setup.py
new file mode 100644
index 0000000000..28c57bb640
--- /dev/null
+++ b/setup/auth_signup_verify_email/setup.py
@@ -0,0 +1,6 @@
+import setuptools
+
+setuptools.setup(
+    setup_requires=['setuptools-odoo'],
+    odoo_addon=True,
+)