You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

55 lines
2.0 KiB

# -*- coding: utf-8 -*-
# © 2015 Antiun Ingeniería, S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
from openerp import _, http
from openerp.addons.auth_signup.controllers.main import AuthSignupHome
_logger = logging.getLogger(__name__)
try:
from validate_email import validate_email
except ImportError:
_logger.debug("Cannot import `validate_email`.")
class SignupVerifyEmail(AuthSignupHome):
@http.route()
def web_auth_signup(self, *args, **kw):
if (http.request.params.get("login") and
not http.request.params.get("password")):
return self.passwordless_signup(http.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
if not validate_email(values.get("login", "")):
qcontext["error"] = _("That does not seem to be an email address.")
return http.request.render("auth_signup.signup", qcontext)
elif not values.get("email"):
values["email"] = values.get("login")
# Remove password
values["password"] = False
sudo_users = (http.request.env["res.users"]
.with_context(create_user=True).sudo())
try:
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)
http.request.env.cr.rollback()
# Agnostic message for security
qcontext["error"] = _(
"Something went wrong, please try again later or contact us.")
return http.request.render("auth_signup.signup", qcontext)
qcontext["message"] = _("Check your email to activate your account!")
return http.request.render("auth_signup.reset_password", qcontext)