ajout de lalogique du premier inscrit admin
parent
2c544badfc
commit
013b52cf53
|
|
@ -75,14 +75,11 @@ class AuthService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def create_user(user: UserCreate, db):
|
async def create_user(user: UserCreate, db):
|
||||||
query = select(users_table).where(users_table.c.email == user.email)
|
result = await db.execute(select(users_table))
|
||||||
result = await db.execute(query)
|
users = result.fetchall()
|
||||||
existing_user = result.fetchone()
|
role = "admin" if len(users) == 0 else user.role
|
||||||
if existing_user:
|
|
||||||
raise HTTPException(status_code=400, detail="Email already registered")
|
|
||||||
|
|
||||||
hashed_password = AuthService.get_password_hash(user.password)
|
hashed_password = AuthService.get_password_hash(user.password)
|
||||||
|
|
||||||
query = insert(users_table).values(
|
query = insert(users_table).values(
|
||||||
email=user.email,
|
email=user.email,
|
||||||
full_name=user.full_name,
|
full_name=user.full_name,
|
||||||
|
|
@ -90,18 +87,19 @@ class AuthService:
|
||||||
date_of_birth=user.date_of_birth,
|
date_of_birth=user.date_of_birth,
|
||||||
organization=user.organization,
|
organization=user.organization,
|
||||||
hashed_password=hashed_password,
|
hashed_password=hashed_password,
|
||||||
role="user"
|
role=role
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
result = await db.execute(query)
|
result = await db.execute(query)
|
||||||
await db.commit()
|
await db.commit()
|
||||||
user_id = result.inserted_primary_key[0]
|
user_id = result.inserted_primary_key[0]
|
||||||
return await AuthService.get_current_user(db=db)
|
return {"id": user_id, "email": user.email, "role": role}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await db.rollback()
|
await db.rollback()
|
||||||
raise HTTPException(status_code=500, detail=f"Could not create user: {str(e)}")
|
raise HTTPException(status_code=500, detail=f"Could not create user: {str(e)}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def admin_required(token: str = Depends(oauth2_scheme), db: AsyncSession = Depends(get_db)):
|
async def admin_required(token: str = Depends(oauth2_scheme), db: AsyncSession = Depends(get_db)):
|
||||||
credentials_exception = HTTPException(
|
credentials_exception = HTTPException(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue