def password_reset(request): """ Resets user's password """ error = None successful_reset = False if request.method == 'POST': email = request.GET.get('email', None) reset_code = request.GET.get('reset_code', None) form = PasswordReset(request.POST) if form.is_valid() and email and reset_code: password = form.cleaned_data['password'] try: Credential.password_reset(email, reset_code, password) successful_reset = True except TangleOnError as e: error = e.message else: form = PasswordReset() return render_response(request, 'app/password_reset.html', { 'form': form, 'error': error, 'successful_reset': successful_reset })
def login(request): """ User login for view for tangleon.com """ if request.method == 'POST': login_error = '' username = request.POST.get('username', None) password = request.POST.get('password', None) if username and password: # Avoding long password hash attacks user = Credential.authenticate( username, password) if len(password) < 50 else None if not user: login_error = '''Username and password didn't matched, if you forgot your password? <a href="/forgot_password/">Request new one</a>''' elif not user.is_active: login_error = '''Your account has been disabled. We apologize for any inconvenience! If this is a mistake please contact our <a href="mailto:[email protected]">support</a>.''' elif user.has_activated: FlashMessage.add_info('Welcome back, ' + user.username, user) login_user(request, user) url = request.GET.get('next', '/') return HttpResponseRedirect(url) else: return render_response( request, 'app/login.html', { 'username': username, 'send_activation_code': True, 'email': user.email }) return render_response(request, 'app/login.html', { 'username': username, 'login_error': login_error }) return render_response(request, 'app/login.html')
def forgot_password(request): if request.user.is_authenticated(): return HttpResponseRedirect('/') reset_email_send = None reset_email_error = None if request.method == 'POST': email = request.POST.get('email', None) if email: try: user, credential = Credential.generate_reset_code(email) msg_text = get_template( 'app/email/password_reset.html').render( Context({ 'domain': get_current_site(request).domain, 'user': user, 'reset_code': credential.reset_code })) msg = EmailMessage('tangleon.com password reset', msg_text, 'TangleOn <*****@*****.**>', [user.email]) msg.content_subtype = "html" msg.send() reset_email_send = True except TangleOnError as e: reset_email_error = e.message else: reset_email_error = 'Please enter your email address.' return render_response( request, 'app/forgot_password.html', { 'reset_email_send': reset_email_send, 'reset_email_error': reset_email_error })
def login(request): """ User login for view for tangleon.com """ if request.method == 'POST': login_error = '' username = request.POST.get('username', None) password = request.POST.get('password', None) if username and password: # Avoding long password hash attacks user = Credential.authenticate(username, password) if len(password) < 50 else None if not user: login_error = '''Username and password didn't matched, if you forgot your password? <a href="/forgot_password/">Request new one</a>''' elif not user.is_active: login_error = '''Your account has been disabled. We apologize for any inconvenience! If this is a mistake please contact our <a href="mailto:[email protected]">support</a>.''' elif user.has_activated: FlashMessage.add_info('Welcome back, ' + user.username, user) login_user(request, user) url = request.GET.get('next', '/') return HttpResponseRedirect(url) else: return render_response(request, 'app/login.html', { 'username': username, 'send_activation_code': True, 'email': user.email }) return render_response(request, 'app/login.html', { 'username': username, 'login_error': login_error }) return render_response(request, 'app/login.html')
def change_password(request): """ Updates user's password in database """ error = None if request.method == 'POST': form = ChangePassword(request.POST) if form.is_valid(): data = form.cleaned_data try: Credential.change_password(request.app_user, data['current_password'], data['password']) successfully_changed = True except TangleOnError as e: error = e.message else: form = ChangePassword() return render_response(request, 'app/change_password.html', locals())
def password_reset(request): """ Resets user's password """ error = None successful_reset = False if request.method == 'POST': email = request.GET.get('email', None) reset_code = request.GET.get('reset_code', None) form = PasswordReset(request.POST) if form.is_valid() and email and reset_code: password = form.cleaned_data['password'] try: Credential.password_reset(email, reset_code, password) successful_reset = True except TangleOnError as e: error = e.message else: form = PasswordReset() return render_response(request, 'app/password_reset.html', { 'form': form, 'error': error, 'successful_reset': successful_reset})
def forgot_password(request): if request.user.is_authenticated(): return HttpResponseRedirect('/') reset_email_send = None reset_email_error = None if request.method == 'POST': email = request.POST.get('email', None) if email: try: user, credential = Credential.generate_reset_code(email) msg_text = get_template('app/email/password_reset.html').render(Context({ 'domain': get_current_site(request).domain, 'user': user, 'reset_code' :credential.reset_code })) msg = EmailMessage('tangleon.com password reset', msg_text, 'TangleOn <*****@*****.**>', [user.email]) msg.content_subtype = "html" msg.send() reset_email_send = True except TangleOnError as e: reset_email_error = e.message else: reset_email_error = 'Please enter your email address.' return render_response(request, 'app/forgot_password.html', {'reset_email_send': reset_email_send, 'reset_email_error':reset_email_error})