Esempio n. 1
0
    def get(self, request):
        token = self.request.session['auth_token']

        account = wrapper.Authemail()
        response = account.logout(token=token)

        self.request.session.flush()

        return HttpResponseRedirect(reverse('landing_page'))
Esempio n. 2
0
    def get(self, request, format=None):
        code = request.GET.get('code', '')

        account = wrapper.Authemail()
        response = account.signup_verify(code=code)

        # Handle other error responses from API
        if 'detail' in response:
            return HttpResponseRedirect(reverse('signup_not_verified_page'))

        return HttpResponseRedirect(reverse('signup_verified_page'))
Esempio n. 3
0
    def get_context_data(self, **kwargs):
        context = super(HomeView, self).get_context_data(**kwargs)

        token = self.request.session['auth_token']

        account = wrapper.Authemail()
        response = account.users_me(token=token)

        context['email'] = response['email']

        return context
Esempio n. 4
0
    def form_valid(self, form):
        email = form.cleaned_data['email']

        account = wrapper.Authemail()
        response = account.password_reset(email=email)

        # Handle other error responses from API
        if 'detail' in response:
            form.add_error(None, response['detail'])
            return self.form_invalid(form)

        return super(PasswordResetView, self).form_valid(form)
Esempio n. 5
0
    def form_valid(self, form):
        token = self.request.session['auth_token']
        password = form.cleaned_data['password']

        account = wrapper.Authemail()
        response = account.password_change(token=token, password=password)

        # Handle other error responses from API
        if 'detail' in response:
            form.add_error(None, response['detail'])
            return self.form_invalid(form)

        return super(PasswordChangeView, self).form_valid(form)
Esempio n. 6
0
    def get_context_data(self, **kwargs):
        context = super(HomeView, self).get_context_data(**kwargs)

        token = self.request.session['auth_token']

        account = wrapper.Authemail()
        account.users_me(token=token)

        context['first_name'] = account.first_name
        context['last_name'] = account.last_name
        context['email'] = account.email

        return context
Esempio n. 7
0
    def get_context_data(self, **kwargs):
        context = super(UsersMeChangeView, self).get_context_data(**kwargs)

        token = self.request.session['auth_token']

        account = wrapper.Authemail()
        account.users_me(token=token)

        context['first_name'] = account.first_name
        context['last_name'] = account.last_name
        context['date_of_birth'] = account.date_of_birth

        return context
Esempio n. 8
0
    def form_valid(self, form):
        code = self.request.session['password_reset_code']
        password = form.cleaned_data['password']

        account = wrapper.Authemail()
        response = account.password_reset_verified(code=code, password=password)

        # Handle other error responses from API
        if 'detail' in response:
            form.add_error(None, response['detail'])
            return self.form_invalid(form)

        return super(PasswordResetVerifiedView, self).form_valid(form)
Esempio n. 9
0
    def get(self, request, format=None):
        code = request.GET.get('code', '')

        account = wrapper.Authemail()
        account.base_uri = "%s/api" % settings.SERVER_URL
        response = account.password_reset_verify(code=code)

        # Handle other error responses from API
        if 'detail' in response:
            return HttpResponseRedirect(
                reverse('password_reset_not_verified_page'))

        request.session['password_reset_code'] = code

        return HttpResponseRedirect(reverse('password_reset_verified_page'))
Esempio n. 10
0
    def form_valid(self, form):
        email = form.cleaned_data['email']
        password = form.cleaned_data['password']

        account = wrapper.Authemail()
        response = account.login(email=email, password=password)

        if 'token' in response:
            self.request.session['auth_token'] = response['token']
        else:
            # Handle other error responses from API
            if 'detail' in response:
                form.add_error(None, response['detail'])
            return self.form_invalid(form)

        return super(LoginView, self).form_valid(form)
Esempio n. 11
0
    def get(self, request):

        # clear notification
        user = request.user
        user.notification_id = ""
        user.save()

        token = self.request.session['auth_token']

        account = wrapper.Authemail()
        account.base_uri = "%s/api" % settings.SERVER_URL
        response = account.logout(token=token)

        self.request.session.flush()

        return HttpResponseRedirect(reverse('landing_page'))
Esempio n. 12
0
    def form_valid(self, form):
        token = self.request.session['auth_token']
        code = self.request.session['email_change_code']
        email = form.cleaned_data['email']

        account = wrapper.Authemail()
        response = account.email_change_verified(token=token,
                                                 code=code,
                                                 email=email)

        # Handle other error responses from API
        if 'detail' in response:
            form.add_error(None, response['detail'])
            return self.form_invalid(form)

        return super(EmailChangeVerifiedView, self).form_valid(form)
Esempio n. 13
0
    def form_valid(self, form):
        first_name = form.cleaned_data['first_name']
        last_name = form.cleaned_data['last_name']
        email = form.cleaned_data['email']
        password = form.cleaned_data['password']

        account = wrapper.Authemail()
        response = account.signup(first_name=first_name, last_name=last_name,
                                  email=email, password=password)

        # Handle other error responses from API
        if 'detail' in response:
            form.add_error(None, response['detail'])
            return self.form_invalid(form)

        return super(SignupView, self).form_valid(form)
Esempio n. 14
0
    def form_valid(self, form):
        code = self.request.session['password_reset_code']
        password = form.cleaned_data['password']

        m = hashlib.md5()
        m.update(password.encode('utf-8'))
        encryptedPassword = m.hexdigest()

        account = wrapper.Authemail()
        account.base_uri = "%s/api" % settings.SERVER_URL
        response = account.password_reset_verified(code=code,
                                                   password=encryptedPassword)

        # Handle other error responses from API
        if 'detail' in response:
            form.add_error(None, response['detail'])
            return self.form_invalid(form)

        return super(PasswordResetVerifiedView, self).form_valid(form)
Esempio n. 15
0
    def post(self, request, format=None):
        # print("SignIn - Email")
        password_provided = "password" in request.data
        spacer_name_provided = "user_name" in request.data

        # print("password provided? %s" % password_provided)
        # print("space name provided? %s" % spacer_name_provided)

        try:
            user = SpaceoutUser.objects.get(email=request.data["id"])
            # user exist, trying to login
            has_spacer_name = user.user_name != None and user.user_name != ''
            has_password = user.hasPassword()

            # print("has spacer name? %s" % has_spacer_name)
            # print("has password? %s" % has_password)

            if has_password:
                if password_provided:

                    if not user.is_verified:
                        return Response(
                            {
                                'code':
                                4,
                                'debug':
                                'Please check your email and click the link to verify your email addresss.\n Then tap the button below to continue.'
                            },
                            status=status.HTTP_200_OK)

                    # password was provided, login!
                    if user.is_verified:
                        if has_spacer_name:
                            if is_null_or_empty(request.data["id"]):
                                return Response(
                                    {'details': 'signin_password_empty'},
                                    status=status.HTTP_400_BAD_REQUEST)
                            if is_null_or_empty(request.data["password"]):
                                return Response(
                                    {'details': 'signin_password_empty'},
                                    status=status.HTTP_400_BAD_REQUEST)

                            # delete old signup code
                            try:
                                signup_code = SignupCode.objects.get(user=user)
                                signup_code.delete()
                            except SignupCode.DoesNotExist:
                                pass

                            # Login
                            account = wrapper.Authemail()
                            account.base_uri = "%s/api" % settings.SERVER_URL
                            response = account.login(
                                email=request.data["id"],
                                password=request.data["password"])

                            if 'token' in response:
                                response['code'] = 0
                                response['debug'] = 'Logged in'
                                user.signin_method = SpaceoutUser.SIGNIN_EMAIL
                                user.save()
                                return Response(response,
                                                status=status.HTTP_200_OK)
                            else:
                                # not authorized
                                return Response(
                                    status=status.HTTP_401_UNAUTHORIZED)
                        else:
                            if spacer_name_provided:

                                if is_null_or_empty(request.data["id"]):
                                    return Response(
                                        {'details': 'signin_password_empty'},
                                        status=status.HTTP_400_BAD_REQUEST)
                                if is_null_or_empty(request.data["password"]):
                                    return Response(
                                        {'details': 'signin_password_empty'},
                                        status=status.HTTP_400_BAD_REQUEST)

                                # Login
                                account = wrapper.Authemail()
                                account.base_uri = "%s/api" % settings.SERVER_URL
                                response = account.login(
                                    email=request.data["id"],
                                    password=request.data["password"])
                                if 'token' in response:
                                    # save spacer name
                                    try:
                                        spacer = SpaceoutUser.objects.get(
                                            user_name=request.data["user_name"]
                                        )
                                        return Response(
                                            {
                                                'code':
                                                6,
                                                'debug':
                                                "signin_spacername_already_exist"
                                            },
                                            status=status.HTTP_200_OK)
                                    except SpaceoutUser.DoesNotExist:

                                        if is_null_or_empty(
                                                request.data["user_name"]):
                                            return Response(
                                                {
                                                    'details':
                                                    'signin_spacername_empty'
                                                },
                                                status=status.
                                                HTTP_400_BAD_REQUEST)

                                        user.user_name = request.data[
                                            "user_name"]
                                        user.signin_method = SpaceoutUser.SIGNIN_EMAIL

                                        user.save()

                                        response['code'] = 0
                                        response['debug'] = 'Logged in'
                                        return Response(
                                            response,
                                            status=status.HTTP_200_OK)
                                else:
                                    # not authorized
                                    return Response(
                                        status=status.HTTP_401_UNAUTHORIZED)
                            else:
                                # user has spacer name
                                return Response(
                                    {
                                        'code':
                                        5,
                                        'spacer_suggestion':
                                        generate_random_name(user.email),
                                        'debug':
                                        "Create your Spacer Name (or use our suggestion) to finish creating your account"
                                    },
                                    status=status.HTTP_200_OK)
                    else:
                        # user not verified
                        return Response(
                            {
                                'code':
                                4,
                                'debug':
                                "Please check your email and click the link to verify your email addresss.\n Then tap the button below to continue."
                            },
                            status=status.HTTP_200_OK)
                else:
                    # no password provided
                    return Response(
                        {
                            'code': 2,
                            'debug': "Email Sign In, enter your password"
                        },
                        status=status.HTTP_200_OK)
            else:
                # user has no password, ask for a password
                return Response(
                    {
                        'code':
                        3,
                        'debug':
                        "An account already exists for this email address.\n Please sign in using a method used before.\n (Once signied in, you can add a password in Account Settings menu.)"
                    },
                    status=status.HTTP_200_OK)

        except SpaceoutUser.DoesNotExist:
            # user do not exist, trying to sign up
            if password_provided:
                if is_null_or_empty(request.data["id"]):
                    return Response({'details': 'signin_password_empty'},
                                    status=status.HTTP_400_BAD_REQUEST)
                if is_null_or_empty(request.data["password"]):
                    return Response({'details': 'signin_password_empty'},
                                    status=status.HTTP_400_BAD_REQUEST)

                new_user = SpaceoutUser.objects.create_user(
                    email=request.data["id"])
                new_user.set_password(request.data["password"])
                new_user.play_intro = True
                new_user.save()

                send_signup_email(new_user, request)

                return Response(
                    {
                        'code':
                        4,
                        'debug':
                        'Please check your email and click the link to verify your email addresss.\n Then tap the button below to continue.'
                    },
                    status=status.HTTP_200_OK)

            return Response(
                {
                    'code':
                    1,
                    'debug':
                    'No account exists for this email address.\n Enter a new password to create a new account!'
                },
                status=status.HTTP_200_OK)