Initial commit — multi-tenant filtering, port constraints, chart bbox

This commit is contained in:
2026-05-04 22:41:09 -04:00
parent c3b07be67e
commit fcf1d2787a
1102 changed files with 7353 additions and 1166 deletions
+27 -8
View File
@@ -100,11 +100,12 @@ class TokenResponse(BaseModel):
role: str
class UserCreate(BaseModel):
username: str
nombre: str
email: Optional[str] = None
password: str
role: str = "USER"
username: str
nombre: str
email: Optional[str] = None
password: str
role: str = "USER"
company_id: Optional[str] = None
@router.post("/login", response_model=TokenResponse)
def login(form: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)):
@@ -121,11 +122,25 @@ def login(form: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get
@router.get("/me")
def me(user: User = Depends(get_current_user)):
return {"username": user.username, "nombre": user.nombre, "role": user.role}
return {
"username": user.username,
"nombre": user.nombre,
"role": user.role,
"company_id": getattr(user, "company_id", None),
}
@router.get("/users", dependencies=[Depends(require_superadmin)])
def list_users(db: Session = Depends(get_db)):
return db.query(User).all()
users = db.query(User).all()
return [
{
"id": u.id, "username": u.username, "nombre": u.nombre,
"email": u.email, "role": u.role, "activo": u.activo,
"company_id": getattr(u, "company_id", None),
"ultimo_login": u.ultimo_login.isoformat() if u.ultimo_login else None,
}
for u in users
]
@router.post("/users", dependencies=[Depends(require_superadmin)])
def create_user(data: UserCreate, db: Session = Depends(get_db)):
@@ -138,10 +153,12 @@ def create_user(data: UserCreate, db: Session = Depends(get_db)):
email=data.email,
hashed_pw=hash_password(data.password),
role=data.role,
company_id=data.company_id,
)
db.add(user)
db.commit()
return {"ok": True, "username": user.username, "role": user.role}
return {"ok": True, "username": user.username, "role": user.role,
"company_id": user.company_id}
@router.put("/users/{username}", dependencies=[Depends(require_superadmin)])
def update_user(username: str, data: dict, db: Session = Depends(get_db)):
@@ -158,6 +175,8 @@ def update_user(username: str, data: dict, db: Session = Depends(get_db)):
user.activo = data["activo"]
if "password" in data and data["password"]:
user.hashed_pw = hash_password(data["password"])
if "company_id" in data:
user.company_id = data["company_id"] or None
db.commit()
return {"ok": True}