saleslogin15 / app.py
nagasurendra's picture
Update app.py
4ee4ce0 verified
raw
history blame
3.53 kB
import bcrypt
import gradio as gr
from simple_salesforce import Salesforce
# Salesforce Connection
sf = Salesforce(username='surendra@sathkrutha.com',
password='Lavanyanaga@123',
security_token='z7Wvk6mys7n8XjqbYKf3bwBh7')
# Hash the password before saving
def hash_password(password):
return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
# Verify hashed password
def verify_password(plain_password, hashed_password):
return bcrypt.checkpw(plain_password.encode('utf-8'), hashed_password.encode('utf-8'))
# Signup function
def signup(name, email, phone, password):
try:
hashed_password = hash_password(password) # Encrypt the password
sf.User_Login__c.create({
'Name__c': name.strip(),
'Email__c': email.strip(),
'Phone__c': phone.strip(),
'Password3__c': hashed_password # Store the hashed password
})
return "Signup successful! You can now login."
except Exception as e:
return f"Error during signup: {str(e)}"
# Login function
def login(email, password):
try:
email = email.strip()
password = password.strip()
# Query Salesforce for user details
query = f"SELECT Name__c, Email__c, Phone__c, Password3__c FROM User_Login__c WHERE Email__c = '{email}'"
result = sf.query(query)
if len(result['records']) == 0:
return "Invalid email or password.", None, None, None
user = result['records'][0]
stored_password = user['Password3__c']
print(f"Entered Email: {email}")
print(f"Entered Password: {password}")
print(f"Stored Hashed Password: {stored_password}")
# Verify the entered password with the stored hash
if verify_password(password, stored_password):
print("Password matched!")
return "Login successful!", user['Name__c'], user['Email__c'], user['Phone__c']
else:
print("Password did not match!")
return "Invalid email or password.", None, None, None
except Exception as e:
print(f"Error during login: {str(e)}")
return f"Error during login: {str(e)}", None, None, None
# Gradio Signup Page
def signup_page(name, email, phone, password):
response = signup(name, email, phone, password)
return response
signup_interface = gr.Interface(
fn=signup_page,
inputs=[
gr.Textbox(label="Name"),
gr.Textbox(label="Email"),
gr.Textbox(label="Phone"),
gr.Textbox(label="Password", type="password"),
],
outputs=gr.Textbox(label="Signup Status"),
title="Signup Page"
)
# Gradio Login Page
def login_page(email, password):
login_status, name, email, phone = login(email, password)
if login_status == "Login successful!":
return login_status, name, email, phone
else:
return login_status, "Error", "Error", "Error"
login_interface = gr.Interface(
fn=login_page,
inputs=[
gr.Textbox(label="Email"),
gr.Textbox(label="Password", type="password"),
],
outputs=[
gr.Textbox(label="Login Status"),
gr.Textbox(label="Name"),
gr.Textbox(label="Email"),
gr.Textbox(label="Phone"),
],
title="Login Page"
)
# Combine Pages in Gradio
with gr.Blocks() as app:
with gr.Tab("Signup"):
signup_interface.render()
with gr.Tab("Login"):
login_interface.render()
# Launch Gradio App
app.launch()