def change_email_step2(request, uidb64, token, new_email):
bytes_uid = urlsafe_base64_decode(uidb64)
try:
uid = int(bytes_uid)
except ValueError:
raise SuspiciousOperation('change_email_step2 received invalid base64 user ID: {}'.format(
bytes_uid))
if uid != request.user.id:
raise PermissionDenied('UID mismatch - user is {}, request was for {}'.format(
request.user.id, uid))
user = get_object_or_404(models.User, pk=uid)
old_email = user.email
new_email = urlsafe_base64_decode(new_email).decode('utf8')
user.email = new_email
if not verify_token_generator.check_token(user, token):
raise Http404('token invalid')
if old_email == new_email:
messages.info(request, _('Your email address has already been changed.'))
else:
was_verified = user.email_verified
user.email_verified = True
user.email = new_email
user.save()
if was_verified:
_send_email_changed_email(request, user, old_email)
messages.success(request, _('Your email address has been changed successfully.'))
return redirect('index')
评论列表
文章目录