Spaces:
Runtime error
Runtime error
File size: 3,442 Bytes
c716c3a 2b4c5dc bf64463 2d13d3d f9ec307 a969318 9419470 bfa1d96 d8b6060 315e45b d8b6060 9419470 d66b2f9 9419470 d66b2f9 9419470 c9d5619 9419470 99b914d b48a5db 9419470 d66b2f9 9419470 e93b1e1 c231ff0 d66b2f9 9419470 c22c067 9ddec7c 9419470 c9d5619 9419470 020fc51 f70d0c4 0d4285f 3c6ef2b 48576e1 3c6ef2b 05df094 0d4285f 3c6ef2b d351010 |
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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
import gradio as gr
import os
import requests
HUGGING_FACE_TOKEN=os.environ.get('HUGGING_FACE_TOKEN', None)
airtable_api_key = os.environ.get('AIRTABLE_API_KEY')
base_id = os.environ.get('AIRTABLE_BASE_ID')
users_table_name = os.environ.get('USERS_TABLE_NAME')
user_log_table_name = os.environ.get('USER_LOG_TABLE_NAME')
#App name for user login logging
app = os.environ.get('APP_NAME')
#Header for the Airtable requests
headers = {
"Authorization": f"Bearer {airtable_api_key}",
"Content-Type": "application/json",
"Accept": "application/json",
}
def log_login(username):
airtable_endpoint = f'https://api.airtable.com/v0/{base_id}/{user_log_table_name}'
# Organize data for Airtable
new_fields = {
'user_name': str(username),
'app': str(app)
}
data = {
'fields': new_fields
}
try:
# Post data to Airtable
response = requests.post(airtable_endpoint, headers=headers, json=data)
# Check for errors
response.raise_for_status()
except requests.exceptions.HTTPError as http_error:
# Handle the HTTP error (e.g., log it or display an error message)
print(f"HTTP error occurred: {http_error}")
except Exception as e:
# Handle exceptions, log errors, or raise them as needed
print(f"An error occurred: {str(e)}")
def login_auth(username, password):
airtable_endpoint = f'https://api.airtable.com/v0/{base_id}/{users_table_name}'
username_lcase = username.lower()
# Query the 'users' table to check for a match with the provided username and password
params = {
'filterByFormula': f'AND(user_name = "{username_lcase}", password = "{password}")'
}
response = requests.get(airtable_endpoint, headers=headers, params=params)
if response.status_code == 200:
data = response.json()
#If the matching user/password record is found:
if data.get('records'):
user_details = data['records'][0]['fields']
#Log that the user logged in
log_login(username_lcase)
#Set the global logged_in_user variable. This used in the append_to_at_qalog function to track what user asked the question
global logged_in_user,user_user_role, user_output_format, user_school
user_user_role = user_details.get('user_role')
user_output_format = user_details.get('output_format')
user_school = user_details.get('school_name', [None])[0]
logged_in_user = username_lcase
#print(username)
#print(username_lcase)
#print(user_school)
#print(user_output_format)
#print(user_user_role)
return True
print(f"Invalid user/password combination (Airtable)")
return False
iface = gr.load(src="spaces",name="dwipper/NILI-Mobile-Old",hf_token=HUGGING_FACE_TOKEN)
"""
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
if __name__ == "__main__":
demo.launch(auth=login_auth, auth_message= "Enter your username and password that you received from CIMS.AI. To request a login, please email 'info@cims.ai'")
"""
iface.launch(auth=login_auth, auth_message= "Enter your username and password that you received from CIMS.AI. To request a login, please email 'info@cims.ai'")
#iface.launch() |