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))
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))
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('/')
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)
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
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('/')
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('/')
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')
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)
def post_logout(request, cookies): # Clear Cookies cookies.set(User.EMAIL_COOKIE_KEY, '') cookies.set(User.AUTH_TOKEN_COOKIE_KEY, '') return Response.redirect('/login')
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())