示例#1
0
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
    })
示例#2
0
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')
示例#3
0
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
        })
示例#4
0
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')
示例#5
0
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())
示例#6
0
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())
示例#7
0
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})
示例#8
0
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})