def proceed_email_changed(request): try: with transaction.atomic(): token = request.GET['token'] logger.debug('Proceed change email with token %s', token) user, verification = utils.get_user_by_code( token, Verification.TypeChoices.email) new_ver = send_new_email_ver(request, user, verification.email) user.email = verification.email user.email_verification = new_ver user.save(update_fields=('email', 'email_verification')) verification.verified = True verification.save(update_fields=('verified', )) logger.info('Email has been change for token %s user %s(id=%d)', token, user.username, user.id) return render_to_response('email_changed.html', { 'text': 'Your email has been changed to {}.'.format(verification.email) }, context_instance=RequestContext(request)) except Exception as e: return render_to_response('email_changed.html', { 'text': 'Unable to change your email because {}'.format(e.message) }, context_instance=RequestContext(request))
def verify_token(request): token = request.POST.get('token', False) try: logger.debug('Rendering restore password page with token %s', token) user = utils.get_user_by_code(token, Verification.TypeChoices.password)[0] return HttpResponse(json.dumps({ 'message': settings.VALIDATION_IS_OK, 'restoreUser': user.username }), content_type='application/json') except ValidationError as e: return HttpResponse(json.dumps({ 'message': e.message, }), content_type='application/json')
def accept_token(request): """ Sends email verification token """ token = request.POST.get('token', False) logger.debug('Proceed Recover password with token %s', token) user, verification = utils.get_user_by_code( token, Verification.TypeChoices.password) password = request.POST.get('password') check_password(password) user.set_password(password) user.save(update_fields=('password', )) verification.verified = True verification.save(update_fields=('verified', )) logger.info('Password has been change for token %s user %s(id=%d)', token, user.username, user.id) return HttpResponse(settings.VALIDATION_IS_OK, content_type='text/plain')
def get(self, request): token = request.GET.get('token', False) logger.debug('Rendering restore password page with token %s', token) try: user = utils.get_user_by_code(token, Verification.TypeChoices.password)[0] response = { 'message': settings.VALIDATION_IS_OK, 'restore_user': user.username, 'token': token } except ValidationError as e: logger.debug('Rejecting verification token %s because %s', token, e) response = { 'message': "Unable to confirm email with token {} because {}".format( token, e) } return render_to_response('reset_password.html', response, context_instance=RequestContext(request))