app.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # app.py
  2. from flask import Flask, render_template, request, redirect, url_for, session, flash
  3. import requests.auth
  4. from lib.datetime import filter_accounts_current_month
  5. from lib.reqs import (get_urls, get_user_accounts)
  6. import requests
  7. import base64
  8. from flask import Flask
  9. from config import DevelopmentConfig # or ProductionConfig
  10. app = Flask(__name__)
  11. app.config.from_object(DevelopmentConfig) # Use DevelopmentConfig or ProductionConfig as needed
  12. @app.route('/')
  13. def home():
  14. # If the user is logged in, redirect to a protected page like /accounts
  15. if session.get('logged_in'):
  16. base_url = app.config['BASE_URL'] # Access base_url from the config
  17. all_accounts = get_user_accounts(base_url, session['auth_credentials'])
  18. current_month_accounts = filter_accounts_current_month(all_accounts)
  19. return render_template('home.html', username=session['username'], accounts=get_user_accounts(base_url, session['auth_credentials']), current_month_accounts=current_month_accounts)
  20. return render_template('index.html')
  21. @app.route('/login', methods=['POST'])
  22. def login():
  23. username = request.form['username']
  24. password = request.form['password']
  25. # Encode the username and password in Base64
  26. credentials = f"{username}:{password}"
  27. encoded_credentials = base64.b64encode(credentials.encode()).decode()
  28. base_url = app.config['BASE_URL'] # Access base_url from the config
  29. login_url = f"{base_url}/Login" # Construct the full URL
  30. # Send GET request to the external login API with Basic Auth
  31. response = requests.get(
  32. login_url,
  33. auth=requests.auth.HTTPBasicAuth(username, password)
  34. )
  35. # Check if login was successful
  36. if response.status_code == 200 and response.json().get("auth") == "Success":
  37. # Set session variable to indicate the user is logged in
  38. session['logged_in'] = True
  39. session['username'] = username
  40. session['auth_credentials'] = encoded_credentials
  41. return redirect(url_for('home')) # Redirect to the Accounts page
  42. else:
  43. # Show error on the login page
  44. error = "Invalid username or password. Please try again."
  45. return render_template('index.html', error=error)
  46. @app.route('/urls', methods=['GET'])
  47. def urls():
  48. # Check if the user is logged in
  49. if not session.get('logged_in'):
  50. return redirect(url_for('home'))
  51. # Placeholder content for Accounts page
  52. base_url = app.config['BASE_URL'] # Access base_url from the config
  53. return render_template('urls.html', urls=get_urls(base_url, session['auth_credentials']))
  54. @app.route('/accounts', methods=['GET'])
  55. def user_accounts():
  56. # Check if the user is logged in
  57. if not session.get('logged_in'):
  58. return redirect(url_for('home'))
  59. # Placeholder content for Accounts page
  60. base_url = app.config['BASE_URL'] # Access base_url from the config
  61. return render_template('user_accounts.html', username=session['username'], user_accounts=get_user_accounts(base_url, session['auth_credentials']))
  62. if __name__ == '__main__':
  63. app.run(debug=app.config['DEBUG'], host=app.config['HOST'], port=app.config['PORT'])