Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions auth_signup_verify_email/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3

======================
Verify email at signup
======================

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.

Installation
============

* Install `email_validator <https://pypi.python.org/pypi/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/es_ES/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.

.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/149/11.0

* Drop support for ``validate_email`` in favor of ``email_validator``.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues
<https://github.com/OCA/server-tools/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smash it by providing detailed and welcomed feedback.


Credits
=======

Icon
----

* https://openclipart.org/detail/3040/thumbtack-note-email
* https://openclipart.org/detail/202732/check-mark

Contributors
------------

* Rafael Blasco <rafaelbn@antiun.com>
* Jairo Llopis <yajo.sk8@gmail.com>
* Simone Orsi <simone.orsi@camptocamp.com>

Maintainer
----------

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

This module is maintained by the OCA.

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.

To contribute to this module, please visit https://odoo-community.org.
4 changes: 4 additions & 0 deletions auth_signup_verify_email/__init__.py
Original file line number Diff line number Diff line change
@@ -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
26 changes: 26 additions & 0 deletions auth_signup_verify_email/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 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": "11.0.1.0.1",
"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,
}
4 changes: 4 additions & 0 deletions auth_signup_verify_email/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -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
75 changes: 75 additions & 0 deletions auth_signup_verify_email/controllers/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Copyright 2015 Antiun Ingeniería, S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

import logging
from odoo import _
from odoo.http import request, route
from odoo.addons.auth_signup.controllers.main import AuthSignupHome

_logger = logging.getLogger(__name__)

from email_validator import validate_email, EmailSyntaxError, \
EmailUndeliverableError


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(request.params)
else:
return super(SignupVerifyEmail, self).web_auth_signup(*args, **kw)

def passwordless_signup(self, values):
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.lang

# 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)
39 changes: 39 additions & 0 deletions auth_signup_verify_email/i18n/auth_signup_verify_email.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * auth_signup_verify_email
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.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:85
#, 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:95
#, 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:90
#, 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:56
#, python-format
msgid "That does not seem to be an email address."
msgstr ""

45 changes: 45 additions & 0 deletions auth_signup_verify_email/i18n/de.po
Original file line number Diff line number Diff line change
@@ -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:85
#, 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:95
#, 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:90
#, 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:56
#, python-format
msgid "That does not seem to be an email address."
msgstr "Das schein keine Email-Adresse zu sein."
44 changes: 44 additions & 0 deletions auth_signup_verify_email/i18n/es.po
Original file line number Diff line number Diff line change
@@ -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:85
#, 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:95
#, 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:90
#, 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:56
#, python-format
msgid "That does not seem to be an email address."
msgstr "Eso no parece una dirección de email válida."
44 changes: 44 additions & 0 deletions auth_signup_verify_email/i18n/fr.po
Original file line number Diff line number Diff line change
@@ -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:85
#, 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:95
#, 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:90
#, 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:56
#, python-format
msgid "That does not seem to be an email address."
msgstr "Veuillez fournir une adresse email valide."
Loading