Skip to content

hit #13

Description

@lerimarpaes-cloud

import hashlib
from fastapi import Header, Depends

... (código anterior)

class User(Base):
tablename = "users"
id = Column(Integer, primary_key=True)
username = Column(String, unique=True)
password_hash = Column(String)

Base.metadata.create_all(engine)

Utilitário para Senha

def hash_password(password: str):
return hashlib.sha256(password.encode()).hexdigest()

Dependência de Segurança

def get_current_user(auth_token: str = Header(None)):
if not auth_token:
raise HTTPException(status_code=401, detail="Token ausente")
session = Session()
user = session.query(User).filter_by(username=auth_token).first() # Simplificado para o exemplo
if not user:
raise HTTPException(status_code=401, detail="Usuário inválido")
return user

@app.post("/auth/register")
def register(username: str, password: str):
session = Session()
new_user = User(username=username, password_hash=hash_password(password))
session.add(new_user)
session.commit()
return {"status": "Usuário criado"}

@app.post("/auth/login")
def login(username: str, password: str):
session = Session()
user = session.query(User).filter_by(username=username, password_hash=hash_password(password)).first()
if not user:
raise HTTPException(status_code=401, detail="Credenciais incorretas")
return {"token": user.username} # Em produção, use um JWT real

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions