Skip to content

Commit 91e60ac

Browse files
committed
Added Vercel.json and IOView app
1 parent ffc6eb0 commit 91e60ac

20 files changed

Lines changed: 248 additions & 1 deletion

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,5 @@ cython_debug/
172172
# and can be added to the global gitignore or merged into this file. For a more nuclear
173173
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
174174
#.idea/
175+
Envs/
176+
firebaseS/

IOLGenv2_BackEnd/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
'ACGen',
5757
'IOLGen',
5858
'home',
59+
'ioview',
5960
]
6061

6162
MIDDLEWARE = [

ioview/Afirestore_sync.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# ioview/firestore_sync.py
2+
import firebase_admin
3+
from firebase_admin import credentials, firestore
4+
5+
cred = credentials.Certificate("firebase/ioview-firebase-adminsdk.json")
6+
firebase_admin.initialize_app(cred)
7+
8+
db = firestore.client()

ioview/__init__.py

Whitespace-only changes.

ioview/admin.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.contrib import admin
2+
from .models import IOVProject, Tag
3+
4+
# Register your models here.
5+
admin.site.register(IOVProject)
6+
admin.site.register(Tag)

ioview/apps.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from django.apps import AppConfig
2+
3+
4+
class IoviewConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'ioview'
7+
8+
def ready(self):
9+
import ioview.signals

ioview/firebase/__init__.py

Whitespace-only changes.

ioview/firebase/firebase_init.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import os
2+
import firebase_admin
3+
from firebase_admin import credentials
4+
5+
# Get the full path to the JSON file relative to this file's location
6+
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
7+
CRED_PATH = os.path.join(BASE_DIR, 'ioview-firebase-adminsdk.json')
8+
9+
cred = credentials.Certificate(CRED_PATH)
10+
default_app = firebase_admin.initialize_app(cred)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"type": "service_account",
3+
"project_id": "ioview-28a3f",
4+
"private_key_id": "5c20b7007188246adcb32f56d5fdc7b14574031a",
5+
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCeXsEYTJ0XYMlW\nLYPjff0JOWM0rgRSLC/CQ9gxDbKxX9U4N7inCiUQNP67HH6oomNG8E2hX73QQ8lP\ntCaPamOscLrAgNP4mKaFyzFHnM2QpOVz6GxFTpGaJbZur4ulUKC9Hkv5RwRutBB3\n9WjTJ0y1wWEzjWQAi/eFX/mAWrpJvwnRcSi2sTWo0j+eKgd+ilhByEL0Fa3wg7r1\ns4VY5FcsrbYLmlR7wB0AeeYZozscHNY4Mi6FN0m0vOZdVN16+geyq3r75VBfQFRs\njQ/M1VP3bm+D0DSWt/CxEX7iA2KZxTusn/JIVGrsRy68q2BI/e5mwad/D0kxMPQj\nT8IMIEgjAgMBAAECggEAH3XdUBFwJ4O/m1IBYEDX8mwnDAEBtL04Y5QMr3n0JI5Q\nEhHnqa83O6f7bnozoxZXOHFmSod1cpj0tdOo0VamJExknPc6pKjWc7+ws3Qv1esb\n9dGXKJF6FTAmtIhE6ntA4zDQkN2NwNweZWYoA8JL19Npls8grYcgjatKKjhbx2hO\ns5+ygd2IQxt72SCDwjky3WoSoEhNUXk4udtgV3qXWJF1bBdMyTmh/URGh49k2PGu\nBkzdWnzAWQZ8r+sz2KbX6mi7dI19+88f/gpf7E0kflPPSAL3VKkGF9NggvlRUMTy\nUinkJUqHP83n+7+IZLzoD+m51C8Y/ggHlthxWbTDsQKBgQDZdITSt4zLnw1yaZvw\nA6OYNoK7820FkPEg/dGTNxf7kq3BAKGEaVlTM5sq9pyPUr0J0Kr1QD90AUg5OAUT\nxhpnqhJhjigvFyuUfKDBuDeA9PczJV+TPrv0xC99WurRkHK49AjNrLM3KdLIF8ul\n5jsVkhi5vc6CjWMivKXGtH466QKBgQC6cSEmUjNMCeRIqSwrXXdBiUbnK4vl0460\nQca6QEIqa3rLswCpNNL+IIN+/TvziEcF4aQizoNAseLMSOywKpr89WnPpTXzvB0X\nTJcafVzwQoEJNTNaEhLHbTKy2M0rtVWEcwQ6+0KSCjQ5Jjr74Ts2LV3Mn6E45v50\nFIdUq8VrKwKBgDdjY3WcxSMUZ0NuPQb8lk3uDIy9K1bQnWqu3BPoY5ZzvQg9Feb5\nQoRbz7k4yZYEGByI5xLDA6aTsQbKCxkHS7B99GKe6ANenn4a5IOTXafePZzsdxS1\nVQC6e/ItF0S7y0zq89cXlyqE36iRzxB5vTD4Xo3pF9HPG6I8dOlRDhoJAoGAEnLh\nWd5mbw7HhR0gXsYn59dCqdtYQ4y0oUek94cmRPZPt1pmJVgxzK3A9U7voMCKbp2O\nVVdkC4HOtHI+4YvFvGQ4bTCm7xBdPJH6ncdr6+ZYyGV4SGBjdVJr4uCrJLkT1kBf\nWcrFIphZ5JHQ4l2+MzU4A+iD1pKc+TWS0qEQrvMCgYA7zW/yf7YR2r+q4h1BKCqY\nzJgBH72BCwj8H9oLv4TK5v5Cm/hQgq/aFhbXkyWVxADh8v+ipoWJjLv7xrEr2H4s\nYoF6vbZxAcJXhAxXiyw9Sdndt6ea47B7/r1/3mjdQx2Ta/AgFB3zIAscLZyGXlYc\ngaAPE7gNEQ6h+UaIW3eYAw==\n-----END PRIVATE KEY-----\n",
6+
"client_email": "firebase-adminsdk-fbsvc@ioview-28a3f.iam.gserviceaccount.com",
7+
"client_id": "108302090891809840949",
8+
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
9+
"token_uri": "https://oauth2.googleapis.com/token",
10+
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
11+
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-fbsvc%40ioview-28a3f.iam.gserviceaccount.com",
12+
"universe_domain": "googleapis.com"
13+
}

ioview/firebase_users.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
from firebase_admin import auth, firestore
2+
from django.contrib.auth import get_user_model
3+
from .firebase.firebase_init import default_app # Ensure Firebase is initialized
4+
from ioview.models import UserAccess
5+
6+
User = get_user_model()
7+
db = firestore.client()
8+
9+
def sync_user_to_firebase(user):
10+
"""Ensure the user exists in Firebase Auth"""
11+
try:
12+
# Try to update if user exists
13+
auth.update_user(
14+
uid=str(user.id),
15+
email=user.email,
16+
display_name=f"{user.first_name} {user.last_name}",
17+
)
18+
print(f"✔ Updated Firebase user: {user.email}")
19+
except auth.UserNotFoundError:
20+
# Create if user doesn't exist
21+
auth.create_user(
22+
uid=str(user.id),
23+
email=user.email,
24+
password="TempPass123!", # Firebase requires a password
25+
display_name=f"{user.first_name} {user.last_name}",
26+
)
27+
print(f"✔ Created Firebase user: {user.email}")
28+
29+
def push_user_access_to_firestore(user):
30+
"""Push allowed projects and username to Firestore"""
31+
try:
32+
access = UserAccess.objects.get(email=user.email)
33+
db.collection("users").document(str(user.id)).set({
34+
"email": user.email,
35+
"username": user.username,
36+
"allowed_projects": [str(p.id) for p in access.allowed_projects.all()],
37+
})
38+
print(f"✔ Access pushed to Firestore for {user.username}")
39+
except UserAccess.DoesNotExist:
40+
print(f"⚠ No UserAccess found for: {user.email}")

0 commit comments

Comments
 (0)