Spaces:
Runtime error
Runtime error
| import streamlit_authenticator as stauth | |
| import streamlit as st | |
| import datetime | |
| import re | |
| from deta import Deta | |
| #connection à la base de données | |
| DETA_KEY = 'a0g7cbwrktt_Ab7FowYD12RqcUzHPpM1B2oMovRqj17o' | |
| deta = Deta(DETA_KEY) | |
| db = deta.Base('StreamlitAuth') | |
| def insert_user(username, email, password): | |
| """ | |
| Inserts Users into the DB | |
| :param email: | |
| :param username: | |
| :param password: | |
| :return User Upon successful Creation: | |
| """ | |
| date_joined = str(datetime.datetime.now()) | |
| return db.put({'key': email, 'username': username, 'password':password, 'date_joined': date_joined}) | |
| def fetch_users(): | |
| """ | |
| Fetch Users | |
| :return Dictionary of Users: | |
| """ | |
| users = db.fetch() | |
| return users.items | |
| def get_user_emails(): | |
| """ | |
| Fetch User Emails | |
| :return List of user emails: | |
| """ | |
| users = db.fetch() | |
| emails = [] | |
| for user in users.items: | |
| emails.append(user['key']) | |
| return emails | |
| def get_usernames(): | |
| """ | |
| Fetch Usernames | |
| :return List of user usernames: | |
| """ | |
| users = db.fetch() | |
| usernames = [] | |
| for user in users.items: | |
| usernames.append(user['key']) | |
| return usernames | |
| def validate_email(email): | |
| """ | |
| Check Email Validity | |
| :param email: | |
| :return True if email is valid else False: | |
| """ | |
| pattern = "^[a-zA-Z0-9-_]+@[a-zA-Z0-9]+\.[a-z]{1,3}$" #tesQQ12@gmail.com | |
| if re.match(pattern, email): | |
| return True | |
| return False | |
| def validate_username(username): | |
| """ | |
| Checks Validity of userName | |
| :param username: | |
| :return True if username is valid else False: | |
| """ | |
| pattern = "^[a-zA-Z0-9]*$" | |
| if re.match(pattern, username): | |
| return True | |
| return False | |
| #fonction d'authentification pour l'inscription | |
| def sign_up(): | |
| with st.form(key='signup', clear_on_submit=True): | |
| st.subheader(':green[Sign Up]') | |
| email = st.text_input(':blue[Email]', placeholder='Enter Your Email') | |
| username = st.text_input(':blue[Username]', placeholder='Enter Your Username') | |
| password1 = st.text_input(':blue[Password]', placeholder='Enter Your Password', type='password') | |
| password2 = st.text_input(':blue[Confirm Password]', placeholder='Confirm Your Password', type='password') | |
| #condition pour l'authentification | |
| if email: | |
| if validate_email(email): | |
| if email not in get_user_emails(): | |
| if validate_username(username): | |
| if username not in get_usernames(): | |
| if len(username) >= 2: | |
| if len(password1) >= 6: | |
| if password1 == password2: | |
| # Add User to DB | |
| hashed_password = stauth.Hasher([password2]).generate() | |
| insert_user(email, username, hashed_password[0]) | |
| st.success('Account created successfully!!') | |
| st.balloons() | |
| else: | |
| st.warning('Passwords Do Not Match') | |
| else: | |
| st.warning('Password is too Short') | |
| else: | |
| st.warning('Username Too short') | |
| else: | |
| st.warning('Username Already Exists') | |
| else: | |
| st.warning('Invalid Username') | |
| else: | |
| st.warning('Email Already exists!!') | |
| else: | |
| st.warning('Invalid Email') | |
| btn1, bt2, btn3, btn4, btn5 = st.columns(5) | |
| with btn3: | |
| st.form_submit_button('Sign Up') | |
| # sign_uo() | |