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
14 changes: 14 additions & 0 deletions training/training/core/authenticator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from ninja.security import HttpBearer
karkir0003 marked this conversation as resolved.
Show resolved Hide resolved
import firebase_admin
karkir0003 marked this conversation as resolved.
Show resolved Hide resolved


class FirebaseAuth(HttpBearer):
def authenticate(self, request, token):
if token is None or not token:
return
try:
firebase_admin.auth.verify_id_token(token)
except Exception as e:
print(e)
alantao912 marked this conversation as resolved.
Show resolved Hide resolved
return
return token
9 changes: 8 additions & 1 deletion training/training/routes/datasets/default/columns.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
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.dataset import SklearnDatasetCreator
from training.routes.datasets.default.schemas import DefaultDatasetResponse
from training.routes.schemas import NotFoundError
from core.authenticator import FirebaseAuth
alantao912 marked this conversation as resolved.
Show resolved Hide resolved

router = Router()


@router.get(
"{name}/columns",
response={200: DefaultDatasetResponse, 404: NotFoundError},
auth=FirebaseAuth(),
)
def defaultDatasets(request: HttpRequest, name: str):
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 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