Init files
This commit is contained in:
0
auth/login/__init__.py
Normal file
0
auth/login/__init__.py
Normal file
0
auth/login/models/__init__.py
Normal file
0
auth/login/models/__init__.py
Normal file
27
auth/login/models/login.py
Normal file
27
auth/login/models/login.py
Normal file
@ -0,0 +1,27 @@
|
||||
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from databases.pgsql.database import Base
|
||||
|
||||
class User(Base):
|
||||
__tablename__ = "users"
|
||||
|
||||
id = Column(Integer, primary_key= True, index= True)
|
||||
email = Column(String, unique= True, index=True)
|
||||
phone = Column(String, unique= True, index=True)
|
||||
login = Column(String, unique= True, index=True)
|
||||
name = Column(String)
|
||||
surname = Column(String)
|
||||
hashed_password = Column(String)
|
||||
role_id = Column(Integer, ForeignKey("roles.id"))
|
||||
is_active = Column(Boolean, default=True)
|
||||
|
||||
class Role(Base):
|
||||
__tablename__ = "roles"
|
||||
|
||||
id = Column(Integer, primary_key=True, index= True)
|
||||
name = Column(String, index= True)
|
||||
description = Column(String , index= True)
|
||||
|
||||
|
||||
|
0
auth/login/repository/__init__.py
Normal file
0
auth/login/repository/__init__.py
Normal file
68
auth/login/repository/login.py
Normal file
68
auth/login/repository/login.py
Normal file
@ -0,0 +1,68 @@
|
||||
from sqlalchemy.orm import Session
|
||||
from fastapi import HTTPException, status
|
||||
from ..schemas import login as schemas
|
||||
from ..models import login as models
|
||||
from auth.hashing import Hash
|
||||
|
||||
def get_user(db: Session, user_id: int):
|
||||
return db.query(models.User).filter(models.User.id == user_id).first()
|
||||
|
||||
def get_user_by_email(db: Session, email: str):
|
||||
return db.query(models.User).filter(models.User.email == email).first()
|
||||
|
||||
def get_user_by_login(db: Session, login:str):
|
||||
return db.query(models.User).filter(models.User.login == login).first()
|
||||
|
||||
def get_user_by_phone(db: Session, phone: str):
|
||||
return db.query(models.User).filter(models.User.phone == phone).first()
|
||||
|
||||
def delete_user(db: Session, id: int):
|
||||
user = db.query(models.User).filter(models.User.id == id)
|
||||
if not user.first():
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=f"User with id {id} not found")
|
||||
user.delete(synchronize_session=False)
|
||||
db.commit()
|
||||
return 'done'
|
||||
|
||||
|
||||
def get_users(db: Session, skip: int = 0, limit: int =100):
|
||||
return db.query(models.User).offset(skip).limit(limit).all()
|
||||
|
||||
def create_user(db: Session, user: schemas.UserCreate):
|
||||
now_hashed_password = Hash.bcrypt(user.password)
|
||||
db_user = models.User(
|
||||
email=user.email,
|
||||
login = user.login,
|
||||
phone = user.phone,
|
||||
hashed_password = now_hashed_password,
|
||||
role_id = user.role_id
|
||||
)
|
||||
db.add(db_user)
|
||||
db.commit()
|
||||
db.refresh(db_user)
|
||||
return db_user
|
||||
|
||||
def get_roles(db: Session, skip: int =0, limit: int =100):
|
||||
return db.query(models.Role).offset(skip).limit(limit).all()
|
||||
|
||||
|
||||
def get_role(db: Session, id:int):
|
||||
return db.query(models.Role).filter(models.Role.id == id).first()
|
||||
|
||||
def delete_role(db: Session, id: int):
|
||||
role = db.query(models.Role).filter(models.Role.id == id)
|
||||
if not role.first():
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=f"Role with id {id} not found")
|
||||
role.delete(synchronize_session=False)
|
||||
db.commit()
|
||||
return 'done'
|
||||
|
||||
|
||||
def create_roles(db: Session, role: schemas.RoleCreate):
|
||||
db_role = models.Role(name = role.name, description= role.description)
|
||||
db.add(db_role)
|
||||
db.commit()
|
||||
db.refresh(db_role)
|
||||
return db_role
|
0
auth/login/schemas/__init__.py
Normal file
0
auth/login/schemas/__init__.py
Normal file
41
auth/login/schemas/login.py
Normal file
41
auth/login/schemas/login.py
Normal file
@ -0,0 +1,41 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
class RoleBase(BaseModel):
|
||||
name: str
|
||||
description: Optional[str] = None
|
||||
|
||||
class RoleCreate(RoleBase):
|
||||
pass
|
||||
|
||||
class Role(RoleBase):
|
||||
id: int
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
|
||||
class UserBase(BaseModel):
|
||||
email: str
|
||||
login: str
|
||||
role_id: int
|
||||
phone: Optional[str] = None
|
||||
name: Optional[str] = None
|
||||
surname: Optional[str] = None
|
||||
|
||||
class UserCreate(UserBase):
|
||||
password: str
|
||||
|
||||
class User(UserBase):
|
||||
id: int
|
||||
is_active: bool
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
token_type: str
|
||||
|
||||
|
||||
class TokenData(BaseModel):
|
||||
email: Optional[str] = None
|
Reference in New Issue
Block a user