示例#1
0
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
示例#2
0
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
示例#3
0
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)
示例#4
0
文件: utils.py 项目: dset0x/invenio
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
    )
示例#5
0
    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')