Exemplo n.º 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))
Exemplo n.º 2
0
def get_equation(number_terms):
    if request.args.get('signs') is None:
        return Response.failure("Parameter `signs` is not provided.")

    signs = request.args.get('signs').split(",")
    try:
        equation = Generator().generate(number_terms, signs)
        return Response.success(str(equation))
    except Exception as error:
        return Response.failure(format(error))
Exemplo n.º 3
0
    def post_login(request, cookies):
        email = request.get('email', [''])[0]  # Returns the first email value.
        password = request.get('password', [''])[0]

        login_success = Auth.attempt_login(email, password, cookies)

        # If was not logged in, make them login again
        if not login_success:
            return Response.redirect('/login')

        return Response.redirect('/')
Exemplo n.º 4
0
def get_multiple_equation(count, number_terms):
    i = 0
    error: str = None
    data: [str] = []
    while i < count:
        equation_response = get_equation(number_terms)
        response_object = json.loads(equation_response)
        if "error" in response_object:
            error = response_object["error"]
            break
        data.append(response_object["data"])
        i += 1

    if error is not None:
        return Response.failure(error)

    return Response.success(data)
Exemplo n.º 5
0
    def run (environ, cookies):
        """
        Checks if user is authenticated. If so, returns none, otherwise redirects
        to login.

        @return Response of None
        """
        # If not authrorized, redirect, otherwize do nothing, continue route
        response = Response.redirect ('/login')
        if Auth.is_authorized (cookies):
            response = None

        return response
Exemplo n.º 6
0
    def post_remove_friend(request, cookies):
        """
        Removes a friend or rejects a friend request. A negative reject action is
        made by one user for another user.
        """
        this_user_email = cookies.get(User.EMAIL_COOKIE_KEY)
        related_user_email = request.get('user_email', [''])[0]
        this_user_status = 'rejected'

        FriendController.update_friend_status(this_user_email,
                                              related_user_email,
                                              this_user_status)

        return Response.redirect('/')
Exemplo n.º 7
0
    def post_add_friend(request, cookies):
        """
        Adds a friend or accepts a friend request. A positive accept action is
        made by one user for another user.
        """
        this_user_email = cookies.get(User.EMAIL_COOKIE_KEY)
        related_user_email = request.get('user_email', [''])[0]
        this_user_status = 'accepted'

        FriendController.update_friend_status(this_user_email,
                                              related_user_email,
                                              this_user_status)

        return Response.redirect('/')
Exemplo n.º 8
0
 def run(self):
     """
     Runs the validation on current rule 
     """
     response = self.create_request().getresponse()        
     Response(
         self._configuration, 
         self._logger, 
         self.rules['response']
     ).validate_response(
         json.loads(
             response.read().decode(
                 self._configuration['encoding']
             )
         )
     )
     print('complete')
Exemplo n.º 9
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)
Exemplo n.º 10
0
 def post_logout(request, cookies):
     # Clear Cookies
     cookies.set(User.EMAIL_COOKIE_KEY, '')
     cookies.set(User.AUTH_TOKEN_COOKIE_KEY, '')
     return Response.redirect('/login')
Exemplo n.º 11
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())