Skip to content

Commit

Permalink
Adiciona comentarios
Browse files Browse the repository at this point in the history
  • Loading branch information
nYCSTs committed Dec 11, 2023
1 parent 7ff89b6 commit 8a66a9a
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/controller/authController.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,15 +152,19 @@ async def update_user_password(data: authSchema.ResetPasswordUpdate, db: Session
if not user:
raise HTTPException(status_code=404, detail=errorMessages.USER_NOT_FOUND)

# Valida a senha informada
if data.password and not security.validate_password(data.password):
raise HTTPException(status_code=400, detail=errorMessages.INVALID_PASSWORD)

# Verifica se o usuario possui um reset code. Se não possuir, a solicitação é invalida e deve ser bloqueada
if not user.password_reset_code:
raise HTTPException(status_code=401, detail=errorMessages.INVALID_REQUEST)


# Verifica se o código corresponde
if data.code != user.password_reset_code:
raise HTTPException(status_code=400, detail=errorMessages.INVALID_RESET_PASSWORD_CODE)

# Faz procedimento de hash da senha e atualiza usuario
hashed_password = security.get_password_hash(data.password)
updated_user = userRepository.update_password(db, user, hashed_password)

Expand Down
3 changes: 3 additions & 0 deletions src/controller/userController.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ async def delete_user(user_id: int, db: Session = Depends(get_db), token: dict =

@user.patch("/role/{user_id}", response_model=userSchema.User)
def update_role(user_id: int, db: Session = Depends(get_db), token: dict = Depends(security.verify_token)):
# Obtem email do usuario a partir de token.
# Verifica se o usuário é ADMIN
user = userRepository.get_user_by_email(db, email=token['email'])
if user.role != enumeration.UserRole.ADMIN.value:
raise HTTPException(status_code=401, detail=errorMessages.NO_PERMISSION)
Expand All @@ -81,6 +83,7 @@ def update_role(user_id: int, db: Session = Depends(get_db), token: dict = Depen
if not user:
raise HTTPException(status_code=404, detail=errorMessages.USER_NOT_FOUND)

# Obtem o valor da outra role e atribui a outra role para o usuario. Caso ele seja um USER => ADMIN, caso seja ADMIN => USER
new_role = enumeration.UserRole.ADMIN.value if user.role == enumeration.UserRole.USER.value else enumeration.UserRole.USER.value
user = userRepository.update_user_role(db, db_user=user, role=new_role)

Expand Down
19 changes: 19 additions & 0 deletions src/repository/userRepository.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,25 @@
from domain import userSchema
from model import userModel

# Obtem usuario a partir do seu ID
def get_user(db: Session, user_id: int):
return db.query(userModel.User).filter(userModel.User.id == user_id).first()

# Obtem usuario a partir do Email
def get_user_by_email(db: Session, email: str):
return db.query(userModel.User).filter(userModel.User.email == email).first()

'''
Obtem lista de usuarios. Possui filtragem:
Filtros:
name: filtrar por nome do usuario
email: filtrar por email do usuario
name_or_email: filtragem que aceita tanto nome quanto email (OR)
connection: filtragem pelo vinculo do usuario
Também aceita offset e limit. Para offset pula a quantidade informada,
para o limit, controla a quantidade de usuarios retornada
'''
def get_users(db: Session, users_filter: userSchema.UserListFilter):
query = db.query(userModel.User)

Expand All @@ -26,15 +39,20 @@ def get_users(db: Session, users_filter: userSchema.UserListFilter):
if (users_filter.connection):
query = query.filter(userModel.User.connection == users_filter.connection)

# Realiza o count para retornar para o front para realizar paginação
total_count = query.count()
# Ordena a lista de usuarios por ordem alfabetica pelo nome
query = query.order_by(userModel.User.name.asc())

# Realiza a delimitação por offset
if (users_filter.offset):
query = query.offset(users_filter.offset)

# Realiza a limitação por quantidade retornada
if (users_filter.limit):
query = query.limit(users_filter.limit)

# Retorna todos os usuarios filtrados, dentro de eventuais limitações (offset ou limit) e o total (geral)
return { "users": query.all(), "total": total_count }

def create_user(db: Session, name, connection, email, password, activation_code):
Expand All @@ -44,6 +62,7 @@ def create_user(db: Session, name, connection, email, password, activation_code)
db.refresh(db_user)
return db_user

# Cria um usuario por login social. Essa criação é especial pois o usuario criado por rede social não possui SENHA
def create_user_social(db: Session, name, email):
db_user = userModel.User(
name=name,
Expand Down

0 comments on commit 8a66a9a

Please sign in to comment.