# app.py from flask import Flask, render_template, request, redirect, url_for, session, flash import requests.auth from lib.datetime import filter_accounts_current_month from lib.reqs import (get_urls, get_user_accounts) import requests import base64 from flask import Flask from config import DevelopmentConfig # or ProductionConfig app = Flask(__name__) app.config.from_object(DevelopmentConfig) # Use DevelopmentConfig or ProductionConfig as needed @app.route('/') def home(): # If the user is logged in, redirect to a protected page like /accounts if session.get('logged_in'): base_url = app.config['BASE_URL'] # Access base_url from the config all_accounts = get_user_accounts(base_url, session['auth_credentials']) current_month_accounts = filter_accounts_current_month(all_accounts) return render_template('home.html', username=session['username'], accounts=get_user_accounts(base_url, session['auth_credentials']), current_month_accounts=current_month_accounts) return render_template('index.html') @app.route('/login', methods=['POST']) def login(): username = request.form['username'] password = request.form['password'] # Encode the username and password in Base64 credentials = f"{username}:{password}" encoded_credentials = base64.b64encode(credentials.encode()).decode() base_url = app.config['BASE_URL'] # Access base_url from the config login_url = f"{base_url}/Login" # Construct the full URL # Send GET request to the external login API with Basic Auth response = requests.get( login_url, auth=requests.auth.HTTPBasicAuth(username, password) ) # Check if login was successful if response.status_code == 200 and response.json().get("auth") == "Success": # Set session variable to indicate the user is logged in session['logged_in'] = True session['username'] = username session['auth_credentials'] = encoded_credentials return redirect(url_for('home')) # Redirect to the Accounts page else: # Show error on the login page error = "Invalid username or password. Please try again." return render_template('index.html', error=error) @app.route('/urls', methods=['GET']) def urls(): # Check if the user is logged in if not session.get('logged_in'): return redirect(url_for('home')) # Placeholder content for Accounts page base_url = app.config['BASE_URL'] # Access base_url from the config return render_template('urls.html', urls=get_urls(base_url, session['auth_credentials'])) @app.route('/accounts', methods=['GET']) def user_accounts(): # Check if the user is logged in if not session.get('logged_in'): return redirect(url_for('home')) # Placeholder content for Accounts page base_url = app.config['BASE_URL'] # Access base_url from the config return render_template('user_accounts.html', username=session['username'], user_accounts=get_user_accounts(base_url, session['auth_credentials'])) if __name__ == '__main__': app.run(debug=app.config['DEBUG'], host=app.config['HOST'], port=app.config['PORT'])