Commit d25240dcd7440a393db31e8089474135f449e34b

Authored by Luan
1 parent 86894a1f

Fixing xmpp password change

Showing 2 changed files with 18 additions and 6 deletions   Show diff stats
src/accounts/forms.py
... ... @@ -81,6 +81,7 @@ class ChangeXMPPPasswordForm(forms.ModelForm):
81 81  
82 82 def __init__(self, *args, **kwargs):
83 83 super(ChangeXMPPPasswordForm, self).__init__(*args, **kwargs)
  84 +
84 85 for field_name, field in self.fields.items():
85 86 # Adds form-control class to all form fields
86 87 field.widget.attrs.update({'class': 'form-control'})
... ... @@ -90,7 +91,13 @@ class ChangeXMPPPasswordForm(forms.ModelForm):
90 91 password2 = self.cleaned_data.get("password2")
91 92 if password1 and password2 and password1 != password2:
92 93 raise forms.ValidationError(
93   - self.error_messages['password_mismatch'],
  94 + _("Password mismatch"),
94 95 code='password_mismatch',
95 96 )
96 97 return password2
  98 +
  99 + def save(self, commit=True):
  100 + self.instance.password = self.cleaned_data['password2']
  101 + if commit:
  102 + self.instance.save()
  103 + return self.instance
... ...
src/accounts/views.py
... ... @@ -192,13 +192,18 @@ class ChangeXMPPPasswordView(UpdateView):
192 192 })
193 193  
194 194 def get_object(self, queryset=None):
195   - return get_object_or_404(XMPPAccount, user=self.request.user.pk)
  195 + obj = get_object_or_404(XMPPAccount, user=self.request.user.pk)
  196 + self.old_password = obj.password
  197 + return obj
196 198  
197 199 def form_valid(self, form):
198   - self.object = form.save()
  200 + response = super(ChangeXMPPPasswordView, self).form_valid(form)
199 201  
200   - xmpp_account = self.get_object()
201   - changed = xmpp.change_password(xmpp_account, password)
  202 + changed = xmpp.change_password(
  203 + self.object.jid,
  204 + self.old_password,
  205 + form.cleaned_data['password2']
  206 + )
202 207 if not changed:
203 208 raise Exception
204   - return super(ChangeXMPPPassword, self).form_valid(form)
  209 + return response
... ...