Exemple #1
0
    def post_signup(request, cookies):
        email = request.get('email', [''])[0]  # Returns the first email value.
        password = request.get('password', [''])[0]

        if password is None or email is None:
            return Response.okDisplay("Bad Parameters Sent!")

        if len(password) < MIN_PASSWORD_STR_LENGTH:
            return Response.okDisplay(
                View('views/signup-error-password.html').get())

        password_hash = Auth.hash_password(password)
        email_verification_token_bytes = secrets.token_bytes(
            SECURE_TOKEN_NUM_BYTES)

        with psycopg2.connect(POSTGRES_DB_CONNECT) as conn:
            with conn.cursor() as curs:
                try:
                    curs.execute(
                        "CALL create_user (%s, %s, %s)",
                        (email, password_hash, email_verification_token_bytes))
                    # TODO: SEND VERIFICATION EMAIL HERE
                except psycopg2.Error:
                    # Debug.print (str(e))
                    pass  # Continue regardless of signup error

        # Regardless of actual user creation, we always report the same page so nobody can tell
        # what emails have accounts.
        return Response.okDisplay(
            View('views/signup-success.html').get().format(user_email=email))
Exemple #2
0
    def get(request, cookies):

        user_email = cookies.get(User.EMAIL_COOKIE_KEY)
        friend_requests = []
        friend_list = {}
        potential_friend_list = []

        # Get related friend data from DB
        with psycopg2.connect(POSTGRES_DB_CONNECT) as conn:
            with conn.cursor() as curs:
                try:
                    # Friend Requests
                    curs.execute("SELECT * FROM get_user_friend_requests (%s)",
                                 [user_email])
                    Debug.print(str(curs))
                    for record in curs:
                        if len(record) >= 2:
                            friend_requests.append(record[1])

                    # Friend List
                    curs.execute("SELECT * FROM get_user_friends (%s)",
                                 [user_email])
                    Debug.print(str(curs))
                    for record in curs:
                        if len(record) >= 4:
                            friend_list[record[1]] = {
                                'latitude': record[2],
                                'longitude': record[3]
                            }

                    # Potential Friends
                    curs.execute(
                        "SELECT * FROM get_user_potential_friends (%s)",
                        [user_email])
                    for record in curs:
                        if len(record) >= 2:
                            potential_friend_list.append(record[1])

                except psycopg2.Error as e:
                    Debug.print(str(e))
                    pass  # Continue regardless of error

        # GET FRIEND REQUESTS FROM DB
        # friend_requests = ['*****@*****.**', '*****@*****.**',
        #                    '*****@*****.**', '*****@*****.**']

        # # GET FRIEND LIST AND LOCATIONS FROM DB
        # friend_list = {
        #                 '*****@*****.**':
        #                     {
        #                         'latitude': '8393.53324',
        #                         'longitude': '3920134.4'
        #                     },
        #                     '*****@*****.**':
        #                     {
        #                         'latitude': '74344.44',
        #                         'longitude': '32442.4'
        #                     },
        #                     '*****@*****.**':
        #                     {
        #                         'latitude': '74344.44',
        #                         'longitude': '32442.4'
        #                     }
        #                 }

        # # GET USER LIST AND LOCATIONS FROM DB
        # user_list = ['wut', 'hey', 'omg', 'okay']

        friend_request_html = View("views/friend-request.html").get()
        friend_list_html = View("views/friend-list.html").get()
        potential_friend_list_html = View("views/user-list.html").get()

        friend_list_html_filled = []
        for friend_email, location in friend_list.items():
            friend_list_html_filled.append(
                friend_list_html.format(user_email=friend_email,
                                        latitude=location['latitude'],
                                        longitude=location['longitude']))

        main_page = View(f"views/index.html").get()
        main_page = main_page.format(
            user_email=user_email,
            friend_requests=''.join(
                map(friend_request_html.format, friend_requests)),
            friend_list=''.join(friend_list_html_filled),
            potential_friend_list=''.join(
                map(potential_friend_list_html.format, potential_friend_list)))

        return Response.okDisplay(main_page)
Exemple #3
0
 def get(request, cookies):
     # If already authorized, redirect to main page
     if Auth.is_authorized(cookies):
         return Response.redirect('/')
     else:
         return Response.okDisplay(View('views/login.html').get())