Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Firebase Authentication to training/ Endpoints #926

Merged
merged 16 commits into from
Sep 3, 2023
Merged
25 changes: 25 additions & 0 deletions training/training/core/authenticator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from django.http import HttpRequest
alantao912 marked this conversation as resolved.
Show resolved Hide resolved
from ninja.security import HttpBearer
karkir0003 marked this conversation as resolved.
Show resolved Hide resolved
from cli import init_firebase
import firebase_admin.auth
alantao912 marked this conversation as resolved.
Show resolved Hide resolved
import logging

logger = logging.getLogger()


class FirebaseAuth(HttpBearer):
def authenticate(self, request, token):
app = init_firebase()
if token is None or not token:
return
try:
firebase_admin.auth.verify_id_token(token)
firebase_admin.delete_app(app)
except Exception as e:
logger.info(e)
return
return token


class Request(HttpRequest):
karkir0003 marked this conversation as resolved.
Show resolved Hide resolved
auth: str
11 changes: 9 additions & 2 deletions training/training/routes/datasets/default/columns.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from django.http import HttpRequest
from ninja import Router, Schema
from ninja.security import HttpBearer
karkir0003 marked this conversation as resolved.
Show resolved Hide resolved
from training.core.authenticator import FirebaseAuth, Request
from training.core.dataset import SklearnDatasetCreator
from training.routes.datasets.default.schemas import DefaultDatasetResponse
from training.routes.schemas import NotFoundError
Expand All @@ -10,9 +12,14 @@
@router.get(
"{name}/columns",
response={200: DefaultDatasetResponse, 404: NotFoundError},
auth=FirebaseAuth(),
)
def defaultDatasets(request: HttpRequest, name: str):
def defaultDatasets(request: Request, name: str):
karkir0003 marked this conversation as resolved.
Show resolved Hide resolved
if not name in SklearnDatasetCreator.DEFAULT_DATASETS:
return 404, {"message": "Dataset not found"}
dataset = SklearnDatasetCreator.getDefaultDataset(name)
return 200, {"data": dataset.columns.tolist(), "message": "Success"}
return 200, {
"data": dataset.columns.tolist(),
"message": "Success",
"token": request.auth,
alantao912 marked this conversation as resolved.
Show resolved Hide resolved
}
3 changes: 2 additions & 1 deletion training/training/routes/tabular/tabular.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@
from training.core.optimizer import getOptimizer
from training.core.trainer import ClassificationTrainer, RegressionTrainer
from training.routes.tabular.schemas import TabularParams
from training.core.authenticator import FirebaseAuth

router = Router()


@router.post("")
@router.post("", auth=FirebaseAuth())
def tabularTrain(request: HttpRequest, tabularParams: TabularParams):
if tabularParams.default:
dataCreator = SklearnDatasetCreator.fromDefault(
Expand Down