Spaces:
Sleeping
Sleeping
File size: 3,199 Bytes
cd702ea |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
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.") |