123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- from django.core.urlresolvers import reverse
- from django.shortcuts import render
- from django.utils.translation import ugettext as _
- from misago.users.decorators import deny_guests
- @deny_guests
- def index(request, *args, **kwargs):
- request.frontend_context.update({
- 'USERNAME_CHANGES_API': reverse('misago:api:usernamechange-list'),
- 'USER_OPTIONS': [
- {
- 'name': _("Forum options"),
- 'icon': 'settings',
- 'component': 'forum-options',
- },
- {
- 'name': _("Change username"),
- 'icon': 'card_membership',
- 'component': 'change-username',
- },
- {
- 'name': _("Change sign-in credentials"),
- 'icon': 'vpn_key',
- 'component': 'sign-in-credentials',
- },
- ]
- });
- return render(request, 'misago/options/noscript.html')
- # DEPRECATED VIEWS - DELETE AFTER USER CP IS DONE
- def change_username(request):
- namechanges = UsernameChanges(request.user)
- form = ChangeUsernameForm()
- if request.method == 'POST' and namechanges.left:
- form = ChangeUsernameForm(request.POST, user=request.user)
- if form.is_valid():
- try:
- form.change_username(changed_by=request.user)
- message = _("Your username has been changed.")
- messages.success(request, message)
- return redirect('misago:usercp_change_username')
- except IntegrityError:
- message = _("Error changing username. Please try again.")
- messages.error(request, message)
- return render(request, 'misago/usercp/change_username.html', {
- 'form': form,
- 'changes_left': namechanges.left,
- 'next_change_on': namechanges.next_on
- })
- def change_email_password(request):
- form = ChangeEmailPasswordForm()
- if request.method == 'POST':
- form = ChangeEmailPasswordForm(request.POST, user=request.user)
- if form.is_valid():
- new_email = ''
- new_password = ''
- # Store original data
- old_email = request.user.email
- old_password = request.user.password
- # Assign new creds to user temporarily
- if form.cleaned_data['new_email']:
- request.user.set_email(form.cleaned_data['new_email'])
- new_email = request.user.email
- if form.cleaned_data['new_password']:
- request.user.set_password(form.cleaned_data['new_password'])
- new_password = request.user.password
- request.user.email = old_email
- request.user.password = old_password
- credentials_token = cache_new_credentials(
- request.user, new_email, new_password)
- mail_subject = _("Confirm changes to %(user)s account "
- "on %(forum_title)s forums")
- subject_formats = {'user': request.user.username,
- 'forum_title': settings.forum_name}
- mail_subject = mail_subject % subject_formats
- if new_email:
- # finally override email before sending message
- request.user.email = new_email
- mail_user(request, request.user, mail_subject,
- 'misago/emails/change_email_password',
- {'credentials_token': credentials_token})
- message = _("E-mail was sent to %(email)s with a link that "
- "you have to click to confirm changes.")
- messages.info(request, message % {'email': request.user.email})
- return redirect('misago:usercp_change_email_password')
- return render(request, 'misago/usercp/change_email_password.html',
- {'form': form})
- def confirm_email_password_change(request, token):
- new_credentials = get_new_credentials(request.user, token)
- if not new_credentials:
- messages.error(request, _("Confirmation link is invalid."))
- else:
- changes_made = []
- if new_credentials['email']:
- request.user.set_email(new_credentials['email'])
- changes_made.extend(['email', 'email_hash'])
- if new_credentials['password']:
- request.user.password = new_credentials['password']
- update_session_auth_hash(request, request.user)
- changes_made.append('password')
- try:
- request.user.save(update_fields=changes_made)
- message = _("Changes in e-mail and password have been saved.")
- messages.success(request, message)
- except IntegrityError:
- messages.error(request, _("Confirmation link is invalid."))
- return redirect('misago:usercp_change_email_password')
|