forked from mirrors/bookwyrm
Change password for logged in users
This commit is contained in:
parent
9bc6d7d6b6
commit
2b681286f4
4 changed files with 69 additions and 10 deletions
|
@ -25,6 +25,8 @@ class CustomForm(ModelForm):
|
|||
input_type = visible.field.widget.input_type
|
||||
if isinstance(visible.field.widget, Textarea):
|
||||
input_type = 'textarea'
|
||||
visible.field.widget.attrs['cols'] = None
|
||||
visible.field.widget.attrs['rows'] = None
|
||||
visible.field.widget.attrs['class'] = css_classes[input_type]
|
||||
|
||||
class LoginForm(CustomForm):
|
||||
|
@ -96,7 +98,9 @@ class ReplyForm(CustomForm):
|
|||
class EditUserForm(CustomForm):
|
||||
class Meta:
|
||||
model = models.User
|
||||
fields = ['avatar', 'name', 'summary', 'manually_approves_followers']
|
||||
fields = [
|
||||
'avatar', 'name', 'email', 'summary', 'manually_approves_followers'
|
||||
]
|
||||
help_texts = {f: None for f in fields}
|
||||
|
||||
|
||||
|
|
|
@ -1,11 +1,51 @@
|
|||
{% extends 'layout.html' %}
|
||||
{% block content %}
|
||||
<div class="block">
|
||||
<h2 class="title">Edit Profile</h2>
|
||||
<form name="avatar" action="/edit_profile/" method="post" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
<button class="button is-primary" type="submit">Update profile</button>
|
||||
</form>
|
||||
<div class="block columns">
|
||||
<div class="column is-half">
|
||||
<form name="edit-profile" action="/edit_profile/" method="post" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<h2 class="title">Profile</h2>
|
||||
<p class="block">
|
||||
<label class="label" for="id_avatar">Avatar:</label>
|
||||
{{ form.avatar }}
|
||||
</p>
|
||||
<p class="block">
|
||||
<label class="label" for="id_name">Display name:</label>
|
||||
{{ form.name }}
|
||||
</p>
|
||||
<p class="block">
|
||||
<label class="label" for="id_summary">Summary:</label>
|
||||
{{ form.summary }}
|
||||
</p>
|
||||
<p class="block">
|
||||
<label class="label" for="id_email">Email address:</label>
|
||||
{{ form.email }}
|
||||
</p>
|
||||
<p class="block">
|
||||
<label class="checkbox label" for="id_manually_approve_followers">
|
||||
Manually approve followers:
|
||||
{{ form.manually_approves_followers }}
|
||||
</label>
|
||||
</p>
|
||||
<button class="button is-primary" type="submit">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="column is-half">
|
||||
<div class="block">
|
||||
<h2 class="title">Change password</h2>
|
||||
<form name="edit-profile" action="/change-password/" method="post" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<p class="block">
|
||||
<label class="label" for="id_password">New password:</label>
|
||||
<input type="password" name="password" maxlength="128" class="input" required="" id="id_password">
|
||||
</p>
|
||||
<p class="block">
|
||||
<label class="label" for="id_confirm_password">Confirm password:</label>
|
||||
<input type="password" name="confirm-password" maxlength="128" class="input" required="" id="id_confirm_password">
|
||||
</p>
|
||||
<button class="button is-primary" type="submit">Change password</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -85,6 +85,7 @@ urlpatterns = [
|
|||
re_path(r'^user-register/?$', actions.register),
|
||||
re_path(r'^reset-password-request/?$', actions.password_reset_request),
|
||||
re_path(r'^reset-password/?$', actions.password_reset),
|
||||
re_path(r'^change-password/?$', actions.password_change),
|
||||
|
||||
re_path(r'^edit_profile/?$', actions.edit_profile),
|
||||
|
||||
|
|
|
@ -106,9 +106,8 @@ def password_reset_request(request):
|
|||
return TemplateResponse(request, 'password_reset_request.html', data)
|
||||
|
||||
|
||||
|
||||
def password_reset(request):
|
||||
''' allow a user to change their password '''
|
||||
''' allow a user to change their password through an emailed token '''
|
||||
try:
|
||||
reset_code = models.PasswordReset.objects.get(
|
||||
code=request.POST.get('reset-code')
|
||||
|
@ -133,6 +132,21 @@ def password_reset(request):
|
|||
return redirect('/')
|
||||
|
||||
|
||||
@login_required
|
||||
def password_change(request):
|
||||
''' allow a user to change their password '''
|
||||
new_password = request.POST.get('password')
|
||||
confirm_password = request.POST.get('confirm-password')
|
||||
|
||||
if new_password != confirm_password:
|
||||
return redirect('/user-edit')
|
||||
|
||||
request.user.set_password(new_password)
|
||||
request.user.save()
|
||||
login(request, request.user)
|
||||
return redirect('/user-edit')
|
||||
|
||||
|
||||
@login_required
|
||||
def edit_profile(request):
|
||||
''' les get fancy with images '''
|
||||
|
|
Loading…
Reference in a new issue