예제 #1
0
파일: login.py 프로젝트: twei55/Kotti
def set_password(context, request,
                 success_msg=u"You've reset your password successfully."):
    form = Form(SetPasswordSchema(), buttons=('submit',))
    rendered_form = None

    if 'submit' in request.POST:
        try:
            appstruct = form.validate(request.POST.items())
        except ValidationFailure, e:
            request.session.flash(u"There was an error.", 'error')
            rendered_form = e.render()
        else:
            token = appstruct['token']
            email = appstruct['email']
            user = _find_user(email)
            if (user is not None and
                validate_token(user, token) and
                token == user.confirm_token):
                password = appstruct['password']
                user.password = get_principals().hash_password(password)
                user.confirm_token = None
                headers = remember(request, user.name)
                location = (appstruct['continue_to'] or
                            resource_url(context, request))
                request.session.flash(success_msg, 'success')
                return HTTPFound(location=location, headers=headers)
            else:
                request.session.flash(
                    u"Your password reset token may have expired.", 'error')
예제 #2
0
def set_password(context,
                 request,
                 success_msg=_(u"You've reset your password successfully.")):
    form = Form(SetPasswordSchema(),
                buttons=(Button('submit', _(u'Submit')), ))
    rendered_form = None

    if 'submit' in request.POST:
        try:
            appstruct = form.validate(request.POST.items())
        except ValidationFailure, e:
            request.session.flash(_(u"There was an error."), 'error')
            rendered_form = e.render()
        else:
            token = appstruct['token']
            email = appstruct['email']
            user = _find_user(email)
            if (user is not None and validate_token(user, token)
                    and token == user.confirm_token):
                password = appstruct['password']
                user.password = get_principals().hash_password(password)
                user.confirm_token = None
                headers = remember(request, user.name)
                location = (appstruct['continue_to']
                            or resource_url(context, request))
                request.session.flash(success_msg, 'success')
                return HTTPFound(location=location, headers=headers)
            else:
                request.session.flash(
                    _(u"Your password reset token may have expired."), 'error')
예제 #3
0
파일: login.py 프로젝트: Kotti/Kotti
def set_password(context, request, success_msg=_(u"You have reset your password.")):
    """ Set password view.  Displays the set password form and handles its form
    submission.

    :param context: Current context
    :type context: :class:`kotti.resources.Content`

    :param request: Current request
    :type request: :class:`kotti.request.Request`

    :param success_msg: Message to display on successful submission handling
    :type success_msg: str or TranslationString

    :result: Redirect response or dictionary passed to the template for
             rendering.
    :rtype: pyramid.httpexceptions.HTTPFound or dict
    """

    form = Form(SetPasswordSchema(), buttons=(Button("submit", _(u"Set password")),))
    rendered_form = None

    if "submit" in request.POST:
        try:
            appstruct = form.validate(request.POST.items())
        except ValidationFailure as e:
            rendered_form = e.render()
        else:
            token = appstruct["token"]
            email = appstruct["email"]
            user = _find_user(email)
            if user is not None and validate_token(user, token) and token == user.confirm_token and user.active:
                password = appstruct["password"]
                user.password = get_principals().hash_password(password)
                user.confirm_token = None
                headers = remember(request, user.name)
                user.last_login_date = datetime.now()

                location = appstruct["continue_to"] or resource_url(context, request)
                request.session.flash(success_msg, "success")
                return HTTPFound(location=location, headers=headers)
            else:
                request.session.flash(_(u"Your password reset token may have expired."), "error")

    if rendered_form is None:
        rendered_form = form.render(request.params)

    api = template_api(
        context, request, page_title=_(u"Reset your password - ${title}.", mapping=dict(title=context.title))
    )

    return {"api": api, "form": rendered_form}
예제 #4
0
def set_password(context,
                 request,
                 success_msg=_(u"You've reset your password successfully.")):
    """
    Set password view.  Displays the set password form and handles its form
    submission.

    :param success_msg: Message to display on successful submission handling
    :type success_msg: str or TranslationString

    :result: Redirect response or dictionary passed to the template for
             rendering.
    :rtype: pyramid.httpexceptions.HTTPFound or dict
    """

    form = Form(SetPasswordSchema(),
                buttons=(Button('submit', _(u'Submit')), ))
    rendered_form = None

    if 'submit' in request.POST:
        try:
            appstruct = form.validate(request.POST.items())
        except ValidationFailure, e:
            request.session.flash(_(u"There was an error."), 'error')
            rendered_form = e.render()
        else:
            token = appstruct['token']
            email = appstruct['email']
            user = _find_user(email)
            if (user is not None and validate_token(user, token)
                    and token == user.confirm_token and user.active):
                password = appstruct['password']
                user.password = get_principals().hash_password(password)
                user.confirm_token = None
                headers = remember(request, user.name)
                user.last_login_date = datetime.now()

                location = (appstruct['continue_to']
                            or resource_url(context, request))
                request.session.flash(success_msg, 'success')
                return HTTPFound(location=location, headers=headers)
            else:
                request.session.flash(
                    _(u"Your password reset token may have expired."), 'error')
예제 #5
0
파일: login.py 프로젝트: geojeff/Kotti
def set_password(context, request,
                 success_msg=_(u"You have reset your password.")):
    """
    Set password view.  Displays the set password form and handles its form
    submission.

    :param success_msg: Message to display on successful submission handling
    :type success_msg: str or TranslationString

    :result: Redirect response or dictionary passed to the template for
             rendering.
    :rtype: pyramid.httpexceptions.HTTPFound or dict
    """

    form = Form(SetPasswordSchema(), buttons=(Button('submit', _(u'Submit')),))
    rendered_form = None

    if 'submit' in request.POST:
        try:
            appstruct = form.validate(request.POST.items())
        except ValidationFailure, e:
            request.session.flash(_(u"There was an error."), 'error')
            rendered_form = e.render()
        else:
            token = appstruct['token']
            email = appstruct['email']
            user = _find_user(email)
            if (user is not None and
                    validate_token(user, token) and
                    token == user.confirm_token and
                    user.active):
                password = appstruct['password']
                user.password = get_principals().hash_password(password)
                user.confirm_token = None
                headers = remember(request, user.name)
                user.last_login_date = datetime.now()

                location = (appstruct['continue_to'] or
                            resource_url(context, request))
                request.session.flash(success_msg, 'success')
                return HTTPFound(location=location, headers=headers)
            else:
                request.session.flash(
                    _(u"Your password reset token may have expired."), 'error')
예제 #6
0
파일: login.py 프로젝트: mujinjun/Kotti
def set_password(context, request, success_msg=_(u"You've reset your password successfully.")):
    form = Form(SetPasswordSchema(), buttons=(Button("submit", _(u"Submit")),))
    rendered_form = None

    if "submit" in request.POST:
        try:
            appstruct = form.validate(request.POST.items())
        except ValidationFailure, e:
            request.session.flash(_(u"There was an error."), "error")
            rendered_form = e.render()
        else:
            token = appstruct["token"]
            email = appstruct["email"]
            user = _find_user(email)
            if user is not None and validate_token(user, token) and token == user.confirm_token:
                password = appstruct["password"]
                user.password = get_principals().hash_password(password)
                user.confirm_token = None
                headers = remember(request, user.name)
                location = appstruct["continue_to"] or resource_url(context, request)
                request.session.flash(success_msg, "success")
                return HTTPFound(location=location, headers=headers)
            else:
                request.session.flash(_(u"Your password reset token may have expired."), "error")
예제 #7
0
def set_password(context,
                 request,
                 success_msg=_("You have reset your password.")):
    """ Set password view.  Displays the set password form and handles its form
    submission.

    :param context: Current context
    :type context: :class:`kotti.resources.Content`

    :param request: Current request
    :type request: :class:`kotti.request.Request`

    :param success_msg: Message to display on successful submission handling
    :type success_msg: str or TranslationString

    :result: Redirect response or dictionary passed to the template for
             rendering.
    :rtype: pyramid.httpexceptions.HTTPFound or dict
    """

    form = Form(SetPasswordSchema(),
                buttons=(Button('submit', _('Set password')), ))
    rendered_form = None

    if 'submit' in request.POST:
        try:
            appstruct = form.validate(list(request.POST.items()))
        except ValidationFailure as e:
            rendered_form = e.render()
        else:
            token = appstruct['token']
            email = appstruct['email']
            user = _find_user(email)
            if (user is not None and validate_token(user, token)
                    and token == user.confirm_token and user.active):
                password = appstruct['password']
                user.password = get_principals().hash_password(password)
                user.confirm_token = None
                headers = remember(request, user.name)
                user.last_login_date = datetime.now()

                location = (appstruct['continue_to']
                            or resource_url(context, request))
                request.session.flash(success_msg, 'success')
                return HTTPFound(location=location, headers=headers)
            else:
                request.session.flash(
                    _("Your password reset token may have expired."), 'error')

    if rendered_form is None:
        rendered_form = form.render(request.params)

    api = template_api(
        context,
        request,
        page_title=_("Reset your password - ${title}.",
                     mapping=dict(title=context.title)),
    )

    return {
        'api': api,
        'form': rendered_form,
    }