-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
91 lines (71 loc) · 2.69 KB
/
Copy pathapp.py
File metadata and controls
91 lines (71 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
from flask import Flask, g, session, url_for, render_template
from config import MONGO_URI, SECRET_KEY
from pymongo import MongoClient
from routes.user_routes import user_bp
from routes.repository_routes import repository_bp
from routes.auth_routes import auth_bp, auth_required
from werkzeug.serving import make_ssl_devcert
import requests
app = Flask(__name__)
app.config['MONGO_URI'] = MONGO_URI
app.config['SECRET_KEY'] = SECRET_KEY
app.config['STRICT SLASHES'] = False
# Register Blueprints (Important: Register after app creation)
app.register_blueprint(user_bp)
app.register_blueprint(repository_bp)
app.register_blueprint(auth_bp)
@app.before_request
def before_request():
"""Connect to the database before each request."""
g.db = MongoClient(app.config['MONGO_URI'],
tlsAllowInvalidCertificates=True)['GV-db']
@app.teardown_request
def teardown_request(exception):
"""Close the database connection after each request."""
db = g.pop('db', None)
if db is not None:
db.client.close()
def get_user_data(access_token):
headers = {
'Authorization': f'token {access_token}',
'Accept': 'application/vnd.github.v3+json'
}
user_response = requests.get(
'https://api.github.com/user', headers=headers)
user_data = user_response.json()
return user_data
@app.route('/landing-page')
def landing_page():
return render_template('landing-page.html')
@app.route('/')
@auth_required
def index():
user_data = get_user_data(session['github_token'])
avatar_url = user_data['avatar_url'] or url_for('static', filename='default.jpg')
return render_template(
'index.html',
user_data=user_data,
avatar_url=avatar_url
)
# @app.route('/mock_login')
# def mock_login():
# from models.user import User
# # Replace with your actual test user data (from GitHub)
# mock_user = User.find(username='Senior_Man')
# if not mock_user:
# flash("Mock user not found in the database. Please create the user first.", "error")
# return jsonify({"user_not_found" : "Check database for test_user"})
# # Get the first element of mock_user if it exists
# session['user_id'] = str(mock_user[0]._id)
# session['github_token'] = 'mock_token1122e'
# print(session['user_id'])
# print(session['github_token'])
# print(session)
# flash("Mocked GitHub login successful", category="success")
# return redirect(url_for("index"))
if __name__ == '__main__':
# Generate a self-signed certificate (adjust paths as needed)
# cert, key = make_ssl_devcert('adhoc', host='localhost')
# context = (cert, key)
# app.run(ssl_context=context, debug=True)
app.run(debug=True)