Upload 2 files
Browse files- compliance_client.py +53 -57
compliance_client.py
CHANGED
|
@@ -231,15 +231,21 @@ class ComplianceClient:
|
|
| 231 |
return False
|
| 232 |
|
| 233 |
def _show_demo_login(self) -> bool:
|
| 234 |
-
"""Muestra formulario de login por SMS cuando OAuth no está configurado"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 235 |
st.markdown("""
|
| 236 |
### 🔐 Iniciar sessió (Verificació per SMS)
|
| 237 |
|
| 238 |
-
Per continuar, necessitas identificar-te
|
| 239 |
""")
|
| 240 |
|
| 241 |
-
#
|
| 242 |
-
with st.expander("📋
|
| 243 |
st.markdown("""
|
| 244 |
### **Condicions d'ús del sistema Veureu (provisional)**
|
| 245 |
|
|
@@ -260,15 +266,9 @@ class ComplianceClient:
|
|
| 260 |
- Pot exercir en qualsevol moment el seu dret a revocar el consentiment mitjançant el botó "Revocar permisos", el que eliminarà el material audiovisual i deixarà constància de la revocació en el registre.
|
| 261 |
- Accepta que, fins a la validació interna del material per part de l'equip Dive, el vídeo romandrà en estat "pendent de validació" i no serà utilitzat públicament.
|
| 262 |
""")
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
st.session_state.sms_step = 'phone'
|
| 267 |
-
st.session_state.sms_code = None
|
| 268 |
-
st.session_state.sms_phone = None
|
| 269 |
-
|
| 270 |
-
if st.session_state.sms_step == 'phone':
|
| 271 |
-
st.markdown("#### 📱 Introdueix el teu número de telèfon")
|
| 272 |
|
| 273 |
# Selector de país y número de teléfono
|
| 274 |
col_country, col_phone = st.columns([1, 3])
|
|
@@ -282,64 +282,60 @@ class ComplianceClient:
|
|
| 282 |
], format_func=lambda x: x[0])[1]
|
| 283 |
|
| 284 |
with col_phone:
|
| 285 |
-
phone_number = st.text_input("Número de telèfon", placeholder="600 123 000
|
| 286 |
|
| 287 |
# Checkbox para aceptar términos
|
| 288 |
-
accept_terms = st.checkbox("✅ Accepto
|
| 289 |
|
|
|
|
|
|
|
| 290 |
if st.button("📤 Enviar codi SMS", type="primary", disabled=not (phone_number and accept_terms)):
|
| 291 |
full_phone = f"{country_code}{phone_number}"
|
| 292 |
if self._send_sms_code(full_phone):
|
| 293 |
st.session_state.sms_step = 'verify'
|
| 294 |
st.session_state.sms_phone = full_phone
|
| 295 |
st.success(f"✅ Codis enviat a {full_phone}")
|
| 296 |
-
|
| 297 |
else:
|
| 298 |
st.error("❌ Error enviant el codi. Torna-ho a intentar.")
|
| 299 |
-
|
| 300 |
-
elif st.session_state.sms_step == 'verify':
|
| 301 |
-
st.markdown(f"#### 🔓 Introdueix el codi de verificació enviat a {st.session_state.sms_phone}")
|
| 302 |
-
if st.session_state.sms_code:
|
| 303 |
-
st.info(f"💡 **Mode demo**: El codi és '{st.session_state.sms_code}'")
|
| 304 |
-
|
| 305 |
-
col_code, col_resend = st.columns([2, 1])
|
| 306 |
-
with col_code:
|
| 307 |
-
verification_code = st.text_input("Codi de 6 dígits", max_chars=6, placeholder="000000")
|
| 308 |
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
|
| 312 |
-
|
| 313 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 314 |
st.rerun()
|
|
|
|
| 315 |
else:
|
| 316 |
-
st.error("❌
|
| 317 |
-
|
| 318 |
-
if st.button("🔓 Verificar codi", type="primary"):
|
| 319 |
-
if verification_code == st.session_state.sms_code:
|
| 320 |
-
# Crear sesión autenticada
|
| 321 |
-
demo_token = f"sms_token_{int(time.time())}"
|
| 322 |
-
st.session_state.auth_token = demo_token
|
| 323 |
-
st.session_state.current_user = {
|
| 324 |
-
"email": f"user@{st.session_state.sms_phone.replace('+', '')}.sms",
|
| 325 |
-
"name": "Usuario SMS",
|
| 326 |
-
"phone": st.session_state.sms_phone
|
| 327 |
-
}
|
| 328 |
-
st.success("✅ Sessió iniciada correctament")
|
| 329 |
-
# Resetear estado SMS
|
| 330 |
-
st.session_state.sms_step = 'phone'
|
| 331 |
-
st.session_state.sms_code = None
|
| 332 |
-
st.session_state.sms_phone = None
|
| 333 |
-
st.rerun()
|
| 334 |
-
return True
|
| 335 |
-
else:
|
| 336 |
-
st.error(f"❌ Codi incorrecte. El codi correcte és: {st.session_state.sms_code}")
|
| 337 |
-
|
| 338 |
-
if st.button("❌ Cancel·lar"):
|
| 339 |
-
st.session_state.sms_step = 'phone'
|
| 340 |
-
st.session_state.sms_code = None
|
| 341 |
-
st.session_state.sms_phone = None
|
| 342 |
-
st.rerun()
|
| 343 |
|
| 344 |
return False
|
| 345 |
|
|
|
|
| 231 |
return False
|
| 232 |
|
| 233 |
def _show_demo_login(self) -> bool:
|
| 234 |
+
"""Muestra formulario de login por SMS en ventana desplegable cuando OAuth no está configurado"""
|
| 235 |
+
# Inicializar estado SMS si no existe
|
| 236 |
+
if 'sms_step' not in st.session_state:
|
| 237 |
+
st.session_state.sms_step = 'phone'
|
| 238 |
+
st.session_state.sms_code = None
|
| 239 |
+
st.session_state.sms_phone = None
|
| 240 |
+
|
| 241 |
st.markdown("""
|
| 242 |
### 🔐 Iniciar sessió (Verificació per SMS)
|
| 243 |
|
| 244 |
+
Per continuar, necessitas identificar-te i acceptar les condicions d'ús.
|
| 245 |
""")
|
| 246 |
|
| 247 |
+
# Ventana desplegable con términos, teléfono y aceptación
|
| 248 |
+
with st.expander("📋 Identificació i Acceptació de Condicions", expanded=False):
|
| 249 |
st.markdown("""
|
| 250 |
### **Condicions d'ús del sistema Veureu (provisional)**
|
| 251 |
|
|
|
|
| 266 |
- Pot exercir en qualsevol moment el seu dret a revocar el consentiment mitjançant el botó "Revocar permisos", el que eliminarà el material audiovisual i deixarà constància de la revocació en el registre.
|
| 267 |
- Accepta que, fins a la validació interna del material per part de l'equip Dive, el vídeo romandrà en estat "pendent de validació" i no serà utilitzat públicament.
|
| 268 |
""")
|
| 269 |
+
|
| 270 |
+
st.markdown("---")
|
| 271 |
+
st.markdown("#### 📱 Dades d'identificació")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 272 |
|
| 273 |
# Selector de país y número de teléfono
|
| 274 |
col_country, col_phone = st.columns([1, 3])
|
|
|
|
| 282 |
], format_func=lambda x: x[0])[1]
|
| 283 |
|
| 284 |
with col_phone:
|
| 285 |
+
phone_number = st.text_input("Número de telèfon", placeholder="600 123 000", max_chars=15)
|
| 286 |
|
| 287 |
# Checkbox para aceptar términos
|
| 288 |
+
accept_terms = st.checkbox("✅ Accepto les condicions d'ús i la política de privadesa", key="sms_accept_terms")
|
| 289 |
|
| 290 |
+
# Botón para enviar código
|
| 291 |
+
sms_sent = False
|
| 292 |
if st.button("📤 Enviar codi SMS", type="primary", disabled=not (phone_number and accept_terms)):
|
| 293 |
full_phone = f"{country_code}{phone_number}"
|
| 294 |
if self._send_sms_code(full_phone):
|
| 295 |
st.session_state.sms_step = 'verify'
|
| 296 |
st.session_state.sms_phone = full_phone
|
| 297 |
st.success(f"✅ Codis enviat a {full_phone}")
|
| 298 |
+
sms_sent = True
|
| 299 |
else:
|
| 300 |
st.error("❌ Error enviant el codi. Torna-ho a intentar.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 301 |
|
| 302 |
+
# Si se envió el SMS, mostrar campo para verificar código
|
| 303 |
+
if sms_sent or st.session_state.sms_step == 'verify':
|
| 304 |
+
st.markdown("#### 🔓 Verificació del codi")
|
| 305 |
+
if st.session_state.sms_code:
|
| 306 |
+
st.info(f"💡 **Mode demo**: El codi és '{st.session_state.sms_code}'")
|
| 307 |
+
|
| 308 |
+
col_code, col_resend = st.columns([2, 1])
|
| 309 |
+
with col_code:
|
| 310 |
+
verification_code = st.text_input("Codi de 6 dígits", max_chars=6, placeholder="000000")
|
| 311 |
+
|
| 312 |
+
with col_resend:
|
| 313 |
+
st.markdown("<br>", unsafe_allow_html=True)
|
| 314 |
+
if st.button("🔄 Reenviar", key="resend_in_expander"):
|
| 315 |
+
if self._send_sms_code(st.session_state.sms_phone):
|
| 316 |
+
st.success("✅ Nou codi enviat")
|
| 317 |
+
else:
|
| 318 |
+
st.error("❌ Error enviant el codi")
|
| 319 |
+
|
| 320 |
+
if st.button("🔓 Verificar i continuar", type="primary"):
|
| 321 |
+
if verification_code == st.session_state.sms_code:
|
| 322 |
+
# Crear sesión autenticada
|
| 323 |
+
demo_token = f"sms_token_{int(time.time())}"
|
| 324 |
+
st.session_state.auth_token = demo_token
|
| 325 |
+
st.session_state.current_user = {
|
| 326 |
+
"email": f"user@{st.session_state.sms_phone.replace('+', '')}.sms",
|
| 327 |
+
"name": "Usuario SMS",
|
| 328 |
+
"phone": st.session_state.sms_phone
|
| 329 |
+
}
|
| 330 |
+
st.success("✅ Sessió iniciada correctament")
|
| 331 |
+
# Resetear estado SMS
|
| 332 |
+
st.session_state.sms_step = 'phone'
|
| 333 |
+
st.session_state.sms_code = None
|
| 334 |
+
st.session_state.sms_phone = None
|
| 335 |
st.rerun()
|
| 336 |
+
return True
|
| 337 |
else:
|
| 338 |
+
st.error(f"❌ Codi incorrecte. El codi correcte és: {st.session_state.sms_code}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 339 |
|
| 340 |
return False
|
| 341 |
|