Beispiel #1
0
def password_change(request):
    template_name = 'accounts/password-change.html'
    url = settings.API_BASE_URL + '/accounts/password/change/'

    if request.POST:
        log.debug("POST dictionary contains :: " + str(request.POST))
        password1 = request.POST.get('password1')
        password2 = request.POST.get('password2')
        api_data = {
            'new_password1': password1,
            'new_password2': password2,
        }
        results = csrf_request(request=request,
                               request_type='POST',
                               url=url,
                               api_data=api_data,
                               is_authenticated=True)
        log.debug("password change returned :: " + str(results))
        if results is not None:
            if results.status_code == 200:
                return redirect('password-change-done')
            else:
                return handle_error(request, results.status_code)
        else:
            # TODO is this the right template to send this to?
            return handle_error(request, results.status_code)
    else:
        return render(request, template_name)
Beispiel #2
0
def register(request):
    template_name = 'accounts/register.html'
    url = settings.API_BASE_URL + '/accounts/register/'

    if request.POST:
        log.debug("POST dictionary contains :: " + str(request.POST))

        email = request.POST.get('email')
        password = request.POST.get('password')

        api_data = {'username': email,
                    'email': email,
                    'password': password}

        results = csrf_request(request=request, request_type='POST', url=url, api_data=api_data, is_authenticated=False)
        log.debug("register returned :: " + str(results))
        if results is not None:
            if results.status_code == 200:
                return redirect('login')
            else:
                return handle_error(request, results.status_code)
        else:
            # TODO is this the right template to send this to?
            return handle_error(request, results.status_code)
    else:
        return render(request, template_name)
Beispiel #3
0
def password_reset_confirm(request):
    template_name = 'accounts/password-reset-confirm.html'
    reset_template_name = 'accounts/password-reset.html'
    url = settings.API_BASE_URL + '/accounts/password/reset/confirm/'

    if request.POST:
        password1 = request.POST.get('password1')
        password2 = request.POST.get('password2')
        api_data = {
            'new_password1': password1,
            'new_password2': password2,
        }
        results = csrf_request(request=request,
                               request_type='POST',
                               url=url,
                               api_data=api_data)

        if results is not None:
            if results.status_code == 200:
                return redirect('password-reset-done')
            else:
                return handle_error(request, results.status_code)
        else:
            # TODO is this the right template to send this to?
            return render(request, reset_template_name)
    else:
        return render(request, template_name)
Beispiel #4
0
def password_reset_token(request):
    reset_template_name = 'accounts/password-reset.html'
    url = settings.API_BASE_URL + '/accounts/password/reset/confirm/'

    if request.GET:
        token = request.GET.get('token')
        uid = request.GET.get('uid')
        api_data = {
            'token': token,
            'uid': uid,
        }
        results = csrf_request(request=request,
                               request_type='POST',
                               url=url,
                               api_data=api_data)

        if results is not None:
            if results.status_code == 200:
                return redirect('password-reset-confirm')
            else:
                return handle_error(request, results.status_code)
        else:
            # TODO is this the right template to send this to?
            return render(request, reset_template_name)
    else:
        return redirect('password-reset')
Beispiel #5
0
    def is_valid_token(self):
        url = settings.API_BASE_URL + '/api-token-verify/'

        try:
            token = None
            session_objects = Session.objects.all()
            for objects in session_objects:
                if not token:
                    # log.debug("Examining session with pk :" + str(objects.pk))
                    # log.debug("Object :: " + str(objects.session_data))
                    session_data = objects.get_decoded()
                    # log.debug("Session data :: " + str(session_data))
                    token = session_data['token']

            api_data = {'token': token}

            response = csrf_request(request=None, url=url, api_data=api_data,
                                    request_type='POST',
                                    is_authenticated=False)
            log.debug("get_user_from_token returned response " + str(response))
            if response.status_code is 200:
                return True
            else:
                return False
        except Exception as e:
            log.debug("Exception in is_valid_token =  " + str(e))
            pass

        return False
Beispiel #6
0
    def is_valid_token(self):
        url = settings.API_BASE_URL + '/api-token-verify/'

        try:
            token = None
            session_objects = Session.objects.all()
            for objects in session_objects:
                if not token:
                    # log.debug("Examining session with pk :" + str(objects.pk))
                    # log.debug("Object :: " + str(objects.session_data))
                    session_data = objects.get_decoded()
                    # log.debug("Session data :: " + str(session_data))
                    token = session_data['token']

            api_data = {'token': token}

            response = csrf_request(request=None,
                                    url=url,
                                    api_data=api_data,
                                    request_type='POST',
                                    is_authenticated=False)
            log.debug("get_user_from_token returned response " + str(response))
            if response.status_code is 200:
                return True
            else:
                return False
        except Exception as e:
            log.debug("Exception in is_valid_token =  " + str(e))
            pass

        return False
Beispiel #7
0
def register(request):
    template_name = 'accounts/register.html'
    url = settings.API_BASE_URL + '/accounts/register/'

    if request.POST:
        log.debug("POST dictionary contains :: " + str(request.POST))

        email = request.POST.get('email')
        password = request.POST.get('password')

        api_data = {'username': email, 'email': email, 'password': password}

        results = csrf_request(request=request,
                               request_type='POST',
                               url=url,
                               api_data=api_data,
                               is_authenticated=False)
        log.debug("register returned :: " + str(results))
        if results is not None:
            if results.status_code == 200:
                return redirect('login')
            else:
                return handle_error(request, results.status_code)
        else:
            # TODO is this the right template to send this to?
            return handle_error(request, results.status_code)
    else:
        return render(request, template_name)
Beispiel #8
0
def verify_email(request):
    template_name = 'accounts/verify.html'
    url = settings.API_BASE_URL + '/accounts/verify-email/'

    if request.GET:
        key = request.GET.get('key')

        api_data = {
            'key': key,
        }
        results = csrf_request(request=request,
                               request_type='POST',
                               url=url,
                               api_data=api_data)

        if results is not None:
            if results.status_code == 200:
                return render(request, template_name)
            else:
                return handle_error(request, results.status_code)
        else:
            # TODO is this the right template to send this to?
            return handle_error(request, results.status_code)
    else:
        return redirect('login')
Beispiel #9
0
    def get_user_from_token(self, token, request):
        url = settings.API_BASE_URL + '/accounts/user/token/'

        api_data = {'token': token}

        try:
            response = csrf_request(request=request,
                                    url=url,
                                    api_data=api_data,
                                    request_type='POST',
                                    is_authenticated=True)
            # log.debug("get_user_from_token returned response " + str(response))
            if response.status_code is 200:
                objects = response.json()

                user_data = objects['user']

                user_data = json.loads(user_data)

                # log.debug(" user_data :: " + str(user_data))

                try:
                    user = User.objects.get(username=user_data['username'])

                    # update the permissions on the user in case they have changed
                    user.is_staff = user_data['is_staff']
                    user.is_active = user_data['is_active']
                    user.is_superuser = user_data['is_superuser']
                    user.save()

                except User.DoesNotExist:
                    # Create a new user. Note that we can set password
                    # to anything, because it won't be checked; the password
                    # from settings.py will.
                    user = User(username=user_data['username'],
                                password='******')
                    user.is_staff = user_data['is_staff']
                    user.is_active = user_data['is_active']
                    user.is_superuser = user_data['is_superuser']
                    user.save()

                return user

        except Exception as e:
            log.debug("Exception in get_user_from_token =  " + str(e))
            pass

        return None
Beispiel #10
0
 def authenticate(self, username=None, password=None, request=None):
     url = settings.API_BASE_URL + '/login/'
     api_data = {'username': username,
                 'password': password,
                 }
     response = csrf_request(request=request, url=url, request_type='POST', api_data=api_data,
                             is_authenticated=False)
     #log.debug("Authenticate returned response " + str(response.status_code))
     if response.status_code is 200:
         content = response.json()
         #log.debug("Authenticate returned " + str(response.text))
         if request:
             request.session['token'] = content['token']
             # log.debug("Token returned from authenticate :: " + str(request.session['token']))
         return self.get_user_from_token(content['token'], request)
     return None
Beispiel #11
0
    def get_user_from_token(self, token, request):
        url = settings.API_BASE_URL + '/accounts/user/token/'

        api_data = {'token': token}

        try:
            response = csrf_request(request=request, url=url, api_data=api_data,
                                    request_type='POST',
                                    is_authenticated=True)
            # log.debug("get_user_from_token returned response " + str(response))
            if response.status_code is 200:
                objects = response.json()

                user_data = objects['user']

                user_data = json.loads(user_data)

                # log.debug(" user_data :: " + str(user_data))

                try:
                    user = User.objects.get(username=user_data['username'])

                    # update the permissions on the user in case they have changed
                    user.is_staff = user_data['is_staff']
                    user.is_active = user_data['is_active']
                    user.is_superuser = user_data['is_superuser']
                    user.save()

                except User.DoesNotExist:
                    # Create a new user. Note that we can set password
                    # to anything, because it won't be checked; the password
                    # from settings.py will.
                    user = User(username=user_data['username'], password='******')
                    user.is_staff = user_data['is_staff']
                    user.is_active = user_data['is_active']
                    user.is_superuser = user_data['is_superuser']
                    user.save()

                return user

        except Exception as e:
            log.debug("Exception in get_user_from_token =  " + str(e))
            pass

        return None
Beispiel #12
0
def password_reset(request):
    template_name = 'accounts/password-reset.html'
    url = settings.API_BASE_URL + '/accounts/password/reset/'

    if request.POST:
        email = request.POST.get('email')
        api_data = {'email': email}
        results = csrf_request(request=request, request_type='POST', url=url, api_data=api_data)

        if results is not None:
            if results.status_code == 200:
                return redirect(settings.LOGIN_REDIRECT_URL)
            else:
                return handle_error(request, results.status_code)
        else:
            return HttpResponseRedirect('login')
    else:
        return render(request, template_name)
Beispiel #13
0
def verify_email(request):
    template_name = 'accounts/verify.html'
    url = settings.API_BASE_URL + '/accounts/verify-email/'

    if request.GET:
        key = request.GET.get('key')

        api_data = {'key': key, }
        results = csrf_request(request=request, request_type='POST', url=url, api_data=api_data)

        if results is not None:
            if results.status_code == 200:
                return render(request, template_name)
            else:
                return handle_error(request, results.status_code)
        else:
            # TODO is this the right template to send this to?
            return handle_error(request, results.status_code)
    else:
        return redirect('login')
Beispiel #14
0
 def authenticate(self, username=None, password=None, request=None):
     url = settings.API_BASE_URL + '/login/'
     api_data = {
         'username': username,
         'password': password,
     }
     response = csrf_request(request=request,
                             url=url,
                             request_type='POST',
                             api_data=api_data,
                             is_authenticated=False)
     #log.debug("Authenticate returned response " + str(response.status_code))
     if response.status_code is 200:
         content = response.json()
         #log.debug("Authenticate returned " + str(response.text))
         if request:
             request.session['token'] = content['token']
             # log.debug("Token returned from authenticate :: " + str(request.session['token']))
         return self.get_user_from_token(content['token'], request)
     return None
Beispiel #15
0
def password_reset_token(request):
    reset_template_name = 'accounts/password-reset.html'
    url = settings.API_BASE_URL + '/accounts/password/reset/confirm/'

    if request.GET:
        token = request.GET.get('token')
        uid = request.GET.get('uid')
        api_data = {'token': token,
                    'uid': uid, }
        results = csrf_request(request=request, request_type='POST', url=url, api_data=api_data)

        if results is not None:
            if results.status_code == 200:
                return redirect('password-reset-confirm')
            else:
                return handle_error(request, results.status_code)
        else:
            # TODO is this the right template to send this to?
            return render(request, reset_template_name)
    else:
        return redirect('password-reset')
Beispiel #16
0
def password_reset(request):
    template_name = 'accounts/password-reset.html'
    url = settings.API_BASE_URL + '/accounts/password/reset/'

    if request.POST:
        email = request.POST.get('email')
        api_data = {'email': email}
        results = csrf_request(request=request,
                               request_type='POST',
                               url=url,
                               api_data=api_data)

        if results is not None:
            if results.status_code == 200:
                return redirect(settings.LOGIN_REDIRECT_URL)
            else:
                return handle_error(request, results.status_code)
        else:
            return HttpResponseRedirect('login')
    else:
        return render(request, template_name)
Beispiel #17
0
def password_change(request):
    template_name = 'accounts/password-change.html'
    url = settings.API_BASE_URL + '/accounts/password/change/'

    if request.POST:
        log.debug("POST dictionary contains :: " + str(request.POST))
        password1 = request.POST.get('password1')
        password2 = request.POST.get('password2')
        api_data = {'new_password1': password1,
                    'new_password2': password2, }
        results = csrf_request(request=request, request_type='POST', url=url, api_data=api_data, is_authenticated=True)
        log.debug("password change returned :: " + str(results))
        if results is not None:
            if results.status_code == 200:
                return redirect('password-change-done')
            else:
                return handle_error(request, results.status_code)
        else:
            # TODO is this the right template to send this to?
            return handle_error(request, results.status_code)
    else:
        return render(request, template_name)
Beispiel #18
0
def password_reset_confirm(request):
    template_name = 'accounts/password-reset-confirm.html'
    reset_template_name = 'accounts/password-reset.html'
    url = settings.API_BASE_URL + '/accounts/password/reset/confirm/'

    if request.POST:
        password1 = request.POST.get('password1')
        password2 = request.POST.get('password2')
        api_data = {'new_password1': password1,
                    'new_password2': password2, }
        results = csrf_request(request=request, request_type='POST', url=url, api_data=api_data)

        if results is not None:
            if results.status_code == 200:
                return redirect('password-reset-done')
            else:
                return handle_error(request, results.status_code)
        else:
            # TODO is this the right template to send this to?
            return render(request, reset_template_name)
    else:
        return render(request, template_name)