Spaces:
Runtime error
Runtime error
File size: 3,871 Bytes
5317421 | 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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | 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()
|