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.

52 lines
2.0 KiB

  1. # -*- coding: utf-8 -*-
  2. # © 2015 Antiun Ingeniería, S.L.
  3. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  4. import logging
  5. from openerp import _, http
  6. from openerp.addons.auth_signup.controllers.main import AuthSignupHome
  7. _logger = logging.getLogger(__name__)
  8. class SignupVerifyEmail(AuthSignupHome):
  9. @http.route()
  10. def web_auth_signup(self, *args, **kw):
  11. if (http.request.params.get("login") and
  12. not http.request.params.get("password")):
  13. return self.passwordless_signup(http.request.params)
  14. else:
  15. return super(SignupVerifyEmail, self).web_auth_signup(*args, **kw)
  16. def passwordless_signup(self, values):
  17. qcontext = self.get_auth_signup_qcontext()
  18. # Check good format of e-mail
  19. from validate_email import validate_email
  20. if not validate_email(values.get("login", "")):
  21. qcontext["error"] = _("That does not seem to be an email address.")
  22. return http.request.render("auth_signup.signup", qcontext)
  23. elif not values.get("email"):
  24. values["email"] = values.get("login")
  25. # Remove password
  26. values["password"] = False
  27. sudo_users = (http.request.env["res.users"]
  28. .with_context(create_user=True).sudo())
  29. try:
  30. sudo_users.signup(values, qcontext.get("token"))
  31. sudo_users.reset_password(values.get("login"))
  32. except Exception as error:
  33. # Duplicate key or wrong SMTP settings, probably
  34. _logger.exception(error)
  35. http.request.env.cr.rollback()
  36. # Agnostic message for security
  37. qcontext["error"] = _(
  38. "Something went wrong, please try again later or contact us.")
  39. return http.request.render("auth_signup.signup", qcontext)
  40. qcontext["message"] = _("Check your email to activate your account!")
  41. return http.request.render("auth_signup.reset_password", qcontext)