from meutils.pipe import * import streamlit as st import streamlit_authenticator as stauth from streamlit_authenticator import Authenticate from streamlit_option_menu import option_menu # https://github.com/mkhorasani/Streamlit-Authenticator st.set_page_config(page_title="Platform tester", page_icon=":rainbow:", layout="centered", initial_sidebar_state="auto") # 如下代码数据,可以来自数据库 hashed_passwords = stauth.Hasher(['123', '456']).generate() print(hashed_passwords) _ = f""" credentials: usernames: nesc: email: nesc@gmail.com name: nesc password: {hashed_passwords[0]} # To be replaced with hashed password jsmith: email: jsmith@gmail.com name: John Smith password: 123 # To be replaced with hashed password rbriggs: email: rbriggs@gmail.com name: Rebecca Briggs password: 456 # To be replaced with hashed password x: email: jsmith@gmail.com name: x password: xxx # To be replaced with hashed password cookie: expiry_days: 30 key: some_signature_key name: some_cookie_name preauthorized: emails: - melsby@gmail.com """ config = yaml.load(_) authenticator = Authenticate( config['credentials'], config['cookie']['name'], config['cookie']['key'], config['cookie']['expiry_days'], config['preauthorized'] ) name, authentication_status, username = authenticator.login('Login', 'main') if authentication_status: authenticator.logout('Logout', 'main') st.write(f'Welcome *{name}*') st.title('Some content') elif authentication_status == False: st.error('Username/password is incorrect') elif authentication_status == None: st.warning('Please enter your username and password') if authentication_status: try: if authenticator.reset_password(username, 'Reset password'): st.success('Password modified successfully') except Exception as e: st.error(e) try: if authenticator.register_user('Register user', preauthorization=False): st.success('User registered successfully') except Exception as e: st.error(e) try: username_forgot_pw, email_forgot_password, random_password = authenticator.forgot_password('Forgot password') if username_forgot_pw: st.success('New password sent securely') # Random password to be transferred to user securely elif username_forgot_pw == False: st.error('Username not found') except Exception as e: st.error(e)