Skip to content

Commit

Permalink
Draft: Authentication Service Model and Views
Browse files Browse the repository at this point in the history
  • Loading branch information
OscarMoya committed Jun 13, 2024
1 parent c07fe17 commit b886682
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 0 deletions.
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ jinja2==3.1.3
pyyaml==6.0.1
pytest
types-requests
passlib
2 changes: 2 additions & 0 deletions src/data/database.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
from typing import Any, Generator
from sqlmodel import SQLModel, create_engine, Session
from sqlalchemy_utils import database_exists, create_database
from sqlalchemy.ext.declarative import declarative_base
import constants

Base = declarative_base()

def create_tables(db_engine) -> None:
from models.turnilo_dashboard import TurniloDashboard
Expand Down
14 changes: 14 additions & 0 deletions src/models/authentication.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from sqlalchemy import Column, Integer, String, Boolean

from data.database import Base


class User(Base):
__tablename__ = "users"

id = Column(Integer, primary_key=True, index=True)
tenant_id = Column(Integer, index=True) # Not sure about this one
email = Column(String, unique=True, index=True)
hashed_password = Column(String)
is_active = Column(Boolean, default=True)
oauth_provider = Column(String, default=None)
Empty file added src/services/authentication.py
Empty file.
Empty file added src/views/__init__.py
Empty file.
25 changes: 25 additions & 0 deletions src/views/authentication.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from pydantic import BaseModel
from passlib.context import CryptContext

from models.authentication import User as UserModel

pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")


def get_password_hash(password) -> str:
return pwd_context.hash(password)


class UserRequest(BaseModel):
email: str
password: str

def to_model(self, tenant_id: int, oauth_provider: str) -> UserModel:
return UserModel(
tenant_id=tenant_id,
email=self.email,
hashed_password=get_password_hash(self.password), # TODO: Interline gibberish for extra protection
oauth_provider=oauth_provider,
)


0 comments on commit b886682

Please sign in to comment.