Skip to content

Commit

Permalink
Merge branch 'Senac-SOR-ADS:main' into Modulo-WEB
Browse files Browse the repository at this point in the history
  • Loading branch information
XlouPx authored Dec 5, 2024
2 parents f6da818 + 8e49e8b commit 1e037c7
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 9 deletions.
13 changes: 10 additions & 3 deletions App/controller/login.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,24 @@ def cadastrarLogin(idPessoa, cpf_cnpj, email, cargo):
return login_model.cadastrar(idPessoa, cpf_cnpj, email, cargo)

# =================== atualizar ===================
def atualizarCadastro(idLogin, novoEmail, novoCargo):
"""Atualiza o email e o cargo de um usuário."""
def atualizarCadastro(idLogin, novoEmail, novoAcesso, novaSenha):
"""Atualiza o email, cargo e acesso de um usuário."""
try:
login_model = Login()
if login_model.atualizar(idLogin, novoEmail, novoCargo):
if login_model.atualizar(idLogin, novoEmail, novoAcesso, novaSenha):
print('login alterado.')
return {"success": "Email e cargo atualizados com sucesso."}
return {"error": "Falha ao atualizar email e cargo."}

except Exception as e:
return {"error": f"Erro: {str(e)}"}

# =================== listar ===================
def listarLogins() -> dict:
logins = Login.buscar_todos()
lista = {i[2]:i[0] for i in logins}
return lista

# =================== buscar Id ===================
def buscarLoginId(idPessoa):
"""Busca uma pessoa pelo ID e retorna suas informações de login."""
Expand Down
21 changes: 16 additions & 5 deletions App/model/login.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@


class Login:
__banco = ConexaoBD()

def __init__(self, email=None, senha=None, nivel_acesso='user') -> None:
self.__email = email
self.__senha = senha
self.__idLogin = None
self.__idPessoa = None
self.__nivelAcesso = nivel_acesso
self.__banco = ConexaoBD()

def getIdLogin(self):
return self.__idLogin
Expand Down Expand Up @@ -70,19 +71,19 @@ def cadastrar(self, idPessoa, cpf_cnpj, email, cargo):
self.__banco.desconectar()

# =================== atualizar ===================
def atualizar(self, idLogin, email, cargo):
def atualizar(self, idLogin, email, acesso, senha):
"""Atualiza o email e o nível de acesso do usuário no banco de dados."""
senha = Criptografia.criptografarSenha(senha)

nivelAcesso = 'admin' if cargo == 'Administrador' else 'user'
try:
self.__banco.conectar()

query_update = '''
UPDATE login
SET email = %s, nivelAcesso = %s
SET email = %s, nivelAcesso = %s, senha = %s
WHERE idLogin = %s
'''
self.__banco.alterarDados(query_update, (email, nivelAcesso, idLogin))
self.__banco.alterarDados(query_update, (email, acesso, senha, idLogin))
return True
except Exception as e:
print(f"Erro ao atualizar login: {e}")
Expand All @@ -108,6 +109,16 @@ def buscar(self, idLogin):
return True
return False

# =================== consultar ===================
@classmethod
def buscar_todos(cls):
"""Busca todos os logins"""
cls.__banco.conectar()
query = "SELECT * FROM login"
resultado = cls.__banco.buscarTodos(query)
cls.__banco.desconectar()
return resultado

# =================== buscar por Id ===================
@classmethod
def pesquisar_id(cls, idLogin):
Expand Down
49 changes: 48 additions & 1 deletion App/view/editarLogin.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,56 @@
from PyQt5.QtWidgets import QWidget
from PyQt5.uic import loadUi
from PyQt5.QtCore import pyqtSlot
from App.controller.login import listarLogins, buscarLoginId, atualizarCadastro
from App.controller.utils import validarInputs
from App.model.criptografia import Criptografia

class EditarLogin(QWidget):
def __init__(self):
super().__init__()
loadUi('App/view/ui/editarLogin.ui',self)

#btn editar login = btnEditarLogin
#btn editar login = btnEditarLogin
self.dicionarioLogins = listarLogins()
self.popularJanela()
self.alterarLogin.currentIndexChanged.connect(self.popularCampos)

@pyqtSlot()
def on_btnEditarLogin_clicked(self):
dados = self.getValores()
if validarInputs(dados):
atualizarCadastro(dados[0], dados[1], dados[3], dados[2])

def popularJanela(self):
self.comboboxLogin()
self.popularCampos()

def comboboxLogin(self):
logins = self.dicionarioLogins.keys()
self.alterarLogin.addItems(logins)

def popularCampos(self):
key = self.getKey()
dados = buscarLoginId(key)
self.email.setText(dados.get('email'))
self.setNivelAcesso()

def getKey(self):
nome = self.alterarLogin.currentText()
key = self.dicionarioLogins.get(nome)
return key

def getValores(self):
email = self.email.text()
senha = self.senha.text()
nivelAcesso = self.nivelAcesso.currentText()
nome = self.alterarLogin.currentText()
idLogin = self.dicionarioLogins.get(nome)

return (idLogin, email, senha, nivelAcesso)

def setNivelAcesso(self):
key = self.getKey()
dados = buscarLoginId(key)
self.nivelAcesso.setCurrentText(dados.get('nivelAcesso'))

0 comments on commit 1e037c7

Please sign in to comment.