import os import hashlib import streamlit as st import textflowsms as tf # Function to ensure phone number is correctly formatted def format_phone_number(phone_number): if len(phone_number) == 10 and not phone_number.startswith('+'): return '+1' + phone_number return phone_number # Initialize session state variables if they don't exist if 'phone_number' not in st.session_state: st.session_state['phone_number'] = '+19522583980' # Default phone number if 'password' not in st.session_state: st.session_state['password'] = '' if 'hash' not in st.session_state: st.session_state['hash'] = '' # Function to hash a password def hash_password(password): return hashlib.sha256(password.encode()).hexdigest()[:6] # Function to append to the log file or create it if it doesn't exist def append_to_log(phone_number): if not os.path.exists('LoggedConfirmations.txt'): with open('LoggedConfirmations.txt', 'w') as log_file: log_file.write(f"{phone_number}\n") else: with open('LoggedConfirmations.txt', 'a') as log_file: log_file.write(f"{phone_number}\n") # Mobile Phone field with emoji user_phone_input = st.sidebar.text_input("📱 Mobile Phone", value=st.session_state.get('phone_number', '')) # Password field with emoji password_input = st.sidebar.text_input("🔑 Set Password", type='password') # Button to save the phone number and password if st.sidebar.button('💾 Save Settings'): st.session_state['phone_number'] = format_phone_number(user_phone_input) st.session_state['password'] = hash_password(password_input) st.sidebar.success("Settings saved successfully!") # Function to send verification SMS def send_verification_sms(): # Load the API key from an environment variable api_key = os.getenv('API_KEY') tf.useKey(api_key) #tf.sendSMS("+19522583980", "Test 2") base_url = "https://huggingface.co/spaces/awacke1/RT-SMS-Phone-Verify" # Correct the sendSMS function call #phone=st.session_state['phone_number'] phone=user_phone_input st.write('Sending SMS to phone number ' + phone) hashmessage=f"Verify here: {base_url}?hash={st.session_state['password']}" st.write('Hash message: ' + hashmessage) result = tf.sendSMS(phone, hashmessage) if(result.ok): print(result.data) st.sidebar.success("Verification link sent via SMS") else: print(result.message) # Check if the hash parameter is provided query_params = st.experimental_get_query_params() if 'hash' in query_params: st.session_state['hash'] = query_params['hash'][0] append_to_log(st.session_state['phone_number']) st.write("✅ User has authenticated using text") # Show verification button if hash is not in session if not st.session_state['hash']: if st.sidebar.button('📨 Send Verify Request'): send_verification_sms() # Display history log st.write("## 📜 Verification History") if os.path.exists('LoggedConfirmations.txt'): with open('LoggedConfirmations.txt', 'r') as log_file: history = log_file.read() st.text(history) else: st.write("No verification history found.")