AIdeaText commited on
Commit
f2961bd
verified
1 Parent(s): ea38b7e

Update modules/auth/auth.py

Browse files
Files changed (1) hide show
  1. modules/auth/auth.py +6 -34
modules/auth/auth.py CHANGED
@@ -23,7 +23,6 @@ from datetime import datetime, timezone
23
 
24
  logger = logging.getLogger(__name__)
25
 
26
- #####################################################################
27
  def clean_and_validate_key(key):
28
  """Limpia y valida la clave de CosmosDB"""
29
  key = key.strip()
@@ -44,7 +43,7 @@ if not endpoint or not key:
44
 
45
  key = clean_and_validate_key(key)
46
 
47
- #####################################################################
48
  def authenticate_user(username, password):
49
  """Autentica un usuario y registra el inicio de sesi贸n"""
50
  try:
@@ -78,7 +77,6 @@ def authenticate_user(username, password):
78
  logger.error(f"Error durante la autenticaci贸n del usuario: {str(e)}")
79
  return False, None
80
 
81
- #####################################################################
82
  def authenticate_student(username, password):
83
  """Autentica un estudiante"""
84
  success, role = authenticate_user(username, password)
@@ -86,7 +84,6 @@ def authenticate_student(username, password):
86
  return True, role
87
  return False, None
88
 
89
- #####################################################################
90
  def authenticate_admin(username, password):
91
  """Autentica un administrador"""
92
  success, role = authenticate_user(username, password)
@@ -94,7 +91,6 @@ def authenticate_admin(username, password):
94
  return True, role
95
  return False, None
96
 
97
- #####################################################################
98
  def register_student(username, password, additional_info=None):
99
  """Registra un nuevo estudiante"""
100
  try:
@@ -102,7 +98,6 @@ def register_student(username, password, additional_info=None):
102
  logger.warning(f"Estudiante ya existe: {username}")
103
  return False
104
 
105
- # Aqu铆 est谩 el problema - debemos hashear la contrase帽a ANTES de pasarla
106
  hashed_password = hash_password(password)
107
 
108
  # Asegurarse que additional_info tenga el rol correcto
@@ -110,7 +105,6 @@ def register_student(username, password, additional_info=None):
110
  additional_info = {}
111
  additional_info['role'] = 'Estudiante'
112
 
113
- # Pasar la contrase帽a hasheada, no la original
114
  success = create_student_user(username, hashed_password, additional_info)
115
  if success:
116
  logger.info(f"Nuevo estudiante registrado: {username}")
@@ -123,8 +117,6 @@ def register_student(username, password, additional_info=None):
123
  logger.error(f"Error al registrar estudiante: {str(e)}")
124
  return False
125
 
126
-
127
- #####################################################################
128
  def update_student_info(username, new_info):
129
  """Actualiza la informaci贸n de un estudiante"""
130
  try:
@@ -143,7 +135,6 @@ def update_student_info(username, new_info):
143
  logger.error(f"Error en actualizaci贸n: {str(e)}")
144
  return False
145
 
146
- #####################################################################
147
  def delete_student(username):
148
  """Elimina un estudiante"""
149
  try:
@@ -159,7 +150,6 @@ def delete_student(username):
159
  logger.error(f"Error en eliminaci贸n: {str(e)}")
160
  return False
161
 
162
- #####################################################################
163
  def logout():
164
  """Cierra la sesi贸n del usuario"""
165
  try:
@@ -178,31 +168,13 @@ def logout():
178
  finally:
179
  st.session_state.clear()
180
 
181
- ########################################################
182
  def hash_password(password):
183
- """Hashea una contrase帽a usando bcrypt"""
184
- try:
185
- # Usar 12 rondas para el salt
186
- hashed = bcrypt.hashpw(
187
- password.encode('utf-8'),
188
- bcrypt.gensalt(rounds=12)
189
- ).decode('utf-8')
190
-
191
- # Verificar que el hash tenga el formato correcto
192
- if not hashed.startswith('$2b$12$'):
193
- logger.error(f"Hash generado con formato incorrecto: {hashed[:10]}...")
194
- raise ValueError("Hash generado con formato incorrecto")
195
-
196
- logger.info(f"Contrase帽a hasheada exitosamente. Hash comienza con: {hashed[:10]}...")
197
- return hashed
198
-
199
- except Exception as e:
200
- logger.error(f"Error hasheando contrase帽a: {str(e)}")
201
- raise
202
- ########################################################
203
 
204
-
205
- #####################################################################
206
  def verify_password(stored_password, provided_password):
207
  """Verifica una contrase帽a"""
208
  return bcrypt.checkpw(
 
23
 
24
  logger = logging.getLogger(__name__)
25
 
 
26
  def clean_and_validate_key(key):
27
  """Limpia y valida la clave de CosmosDB"""
28
  key = key.strip()
 
43
 
44
  key = clean_and_validate_key(key)
45
 
46
+
47
  def authenticate_user(username, password):
48
  """Autentica un usuario y registra el inicio de sesi贸n"""
49
  try:
 
77
  logger.error(f"Error durante la autenticaci贸n del usuario: {str(e)}")
78
  return False, None
79
 
 
80
  def authenticate_student(username, password):
81
  """Autentica un estudiante"""
82
  success, role = authenticate_user(username, password)
 
84
  return True, role
85
  return False, None
86
 
 
87
  def authenticate_admin(username, password):
88
  """Autentica un administrador"""
89
  success, role = authenticate_user(username, password)
 
91
  return True, role
92
  return False, None
93
 
 
94
  def register_student(username, password, additional_info=None):
95
  """Registra un nuevo estudiante"""
96
  try:
 
98
  logger.warning(f"Estudiante ya existe: {username}")
99
  return False
100
 
 
101
  hashed_password = hash_password(password)
102
 
103
  # Asegurarse que additional_info tenga el rol correcto
 
105
  additional_info = {}
106
  additional_info['role'] = 'Estudiante'
107
 
 
108
  success = create_student_user(username, hashed_password, additional_info)
109
  if success:
110
  logger.info(f"Nuevo estudiante registrado: {username}")
 
117
  logger.error(f"Error al registrar estudiante: {str(e)}")
118
  return False
119
 
 
 
120
  def update_student_info(username, new_info):
121
  """Actualiza la informaci贸n de un estudiante"""
122
  try:
 
135
  logger.error(f"Error en actualizaci贸n: {str(e)}")
136
  return False
137
 
 
138
  def delete_student(username):
139
  """Elimina un estudiante"""
140
  try:
 
150
  logger.error(f"Error en eliminaci贸n: {str(e)}")
151
  return False
152
 
 
153
  def logout():
154
  """Cierra la sesi贸n del usuario"""
155
  try:
 
168
  finally:
169
  st.session_state.clear()
170
 
 
171
  def hash_password(password):
172
+ """Hashea una contrase帽a"""
173
+ return bcrypt.hashpw(
174
+ password.encode('utf-8'),
175
+ bcrypt.gensalt()
176
+ ).decode('utf-8')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
 
 
 
178
  def verify_password(stored_password, provided_password):
179
  """Verifica una contrase帽a"""
180
  return bcrypt.checkpw(