def reset_password(email, ln=None): """Reset user password.""" from datetime import timedelta from invenio.config import CFG_SITE_SUPPORT_EMAIL, CFG_SITE_NAME, \ CFG_SITE_NAME_INTL, CFG_WEBSESSION_RESET_PASSWORD_EXPIRE_IN_DAYS # create the reset key if ln is None: ln = g.ln from invenio.modules.access.mailcookie import mail_cookie_create_pw_reset reset_key = mail_cookie_create_pw_reset(email, cookie_timeout=timedelta( days=CFG_WEBSESSION_RESET_PASSWORD_EXPIRE_IN_DAYS)) if reset_key is None: return False # reset key could not be created # load the email template import invenio.legacy.template websession_templates = invenio.legacy.template.load('websession') # finally send the email from invenio.ext.email import send_email from invenio.base.i18n import _ if not send_email(CFG_SITE_SUPPORT_EMAIL, email, "%s %s" % (_("Password reset request for"), CFG_SITE_NAME_INTL.get(ln, CFG_SITE_NAME)), websession_templates. tmpl_account_reset_password_email_body( email, reset_key, request.remote_addr, ln)): return False # mail could not be sent return True # password reset email send successfully
def send_reset_password_email(email): """Reset password by sending a email with the unique link.""" reset_key = mail_cookie_create_pw_reset( email, cookie_timeout=timedelta( days=cfg['CFG_WEBSESSION_RESET_PASSWORD_EXPIRE_IN_DAYS'])) if not reset_key: raise AccountSecurityError( _('Something goes wrong when the cookie has been generated')) email_text = render_template('accounts/email_reset_password.html', reset_key=reset_key, email=email) return send_email(fromaddr=cfg['CFG_SITE_SUPPORT_EMAIL'], subject=_("Password reset request for %(website)s", website=cfg['CFG_SITE_URL']), toaddr=email, content=email_text)
def send_reset_password_email(email): """Reset password by sending a email with the unique link.""" reset_key = mail_cookie_create_pw_reset( email, cookie_timeout=timedelta( days=cfg['CFG_WEBSESSION_RESET_PASSWORD_EXPIRE_IN_DAYS'])) if not reset_key: raise AccountSecurityError( _('Something goes wrong when the cookie has been generated') ) email_text = render_template( 'accounts/email_reset_password.html', reset_key=reset_key, email=email ) return send_email( fromaddr=cfg['CFG_SITE_SUPPORT_EMAIL'], subject=_("Password reset request for %(website)s", website=cfg['CFG_SITE_URL']), toaddr=email, content=email_text )
def send_email(self, req, form): # set all the declared query fields as local variables args = wash_urlargd(form, {'p_email': (str, None)}) uid = webuser.getUid(req) # load the right message language _ = gettext_set_language(args['ln']) if uid == -1 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return webuser.page_not_authorized(req, "../youraccount/send_email", navmenuid='youraccount') user_prefs = webuser.get_user_preferences(webuser.emailUnique(args['p_email'])) if user_prefs: if user_prefs['login_method'] in CFG_EXTERNAL_AUTHENTICATION and \ CFG_EXTERNAL_AUTHENTICATION[user_prefs['login_method']] is not None: eMsg = _("Cannot send password reset request since you are using external authentication system.") return page(title=_("Your Account"), body=webaccount.perform_emailMessage(eMsg, args['ln']), description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%(x_name)s, personalize", x_name=CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME)), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated='', navmenuid='youraccount') try: reset_key = mail_cookie_create_pw_reset(args['p_email'], cookie_timeout=timedelta(days=CFG_WEBSESSION_RESET_PASSWORD_EXPIRE_IN_DAYS)) except InvenioWebAccessMailCookieError: reset_key = None if reset_key is None: eMsg = _("The entered email address does not exist in the database.") return page(title=_("Your Account"), body=webaccount.perform_emailMessage(eMsg, args['ln']), description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%(x_name)s, personalize", x_name=CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME)), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated='', navmenuid='youraccount') ip_address = req.remote_host or req.remote_ip if not send_email(CFG_SITE_SUPPORT_EMAIL, args['p_email'], "%s %s" % (_("Password reset request for"), CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME)), websession_templates.tmpl_account_reset_password_email_body( args['p_email'],reset_key, ip_address, args['ln'])): eMsg = _("The entered email address is incorrect, please check that it is written correctly (e.g. [email protected]).") return page(title=_("Incorrect email address"), body=webaccount.perform_emailMessage(eMsg, args['ln']), description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%(x_name)s, personalize", x_name=CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME)), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated='', navmenuid='youraccount') return page(title=_("Reset password link sent"), body=webaccount.perform_emailSent(args['p_email'], args['ln']), description="%s Personalize, Main page" % CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME), keywords=_("%(x_name)s, personalize", x_name=CFG_SITE_NAME_INTL.get(args['ln'], CFG_SITE_NAME)), uid=uid, req=req, secure_page_p = 1, language=args['ln'], lastupdated='', navmenuid='youraccount')