File size: 2,741 Bytes
8c881ff
b07fa5c
 
 
8c881ff
 
 
 
 
 
 
b07fa5c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c881ff
b07fa5c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c881ff
 
 
 
 
 
 
b07fa5c
 
 
8c881ff
b07fa5c
 
 
 
 
 
 
 
 
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
import streamlit as st
import json
import os
from cryptography.fernet import Fernet

# Initialize session state
if 'username' not in st.session_state:
    st.session_state.username = ''
if 'scratch_pad' not in st.session_state:
    st.session_state.scratch_pad = ''

# Load or create user history file
history_file = 'user_history.json'
if not os.path.exists(history_file):
    with open(history_file, 'w') as file:
        json.dump({}, file)

# Load user history
with open(history_file, 'r') as file:
    user_history = json.load(file)

# Generate encryption key
key = Fernet.generate_key()
fernet = Fernet(key)

def save_session(username, password):
    st.session_state.username = username
    st.session_state.scratch_pad = st.session_state.scratch_pad
    encrypted_password = fernet.encrypt(password.encode()).decode()
    user_history[username] = encrypted_password
    with open(history_file, 'w') as file:
        json.dump(user_history, file)

def register_user(username, password):
    if username not in user_history:
        save_session(username, password)
        st.success("User registered successfully!")
    else:
        st.warning("Username already exists. Please choose a different username.")

def login_user(username, password):
    if username in user_history:
        encrypted_password = user_history[username]
        decrypted_password = fernet.decrypt(encrypted_password.encode()).decode()
        if password == decrypted_password:
            save_session(username, password)
            st.success("Logged in successfully!")
        else:
            st.error("Invalid password. Please try again.")
    else:
        st.warning("Username not found. Please register first.")

def reset_password(username):
    if username in user_history:
        new_password = Fernet.generate_password(8).decode()
        save_session(username, new_password)
        st.success(f"Password reset successful. Your new password is: {new_password}")
    else:
        st.warning("Username not found.")

st.title("Welcome to My App")

if st.session_state.username:
    st.subheader(f"Welcome back, {st.session_state.username}!")
    scratch_pad = st.text_area("Scratch Pad", value=st.session_state.scratch_pad, height=200)
    if st.button("πŸ’Ύ Save"):
        save_session(st.session_state.username, '')
    if st.button("πŸ”‘ Reset Password"):
        reset_password(st.session_state.username)
else:
    username = st.text_input("Username:")
    password = st.text_input("Password:", type="password")
    col1, col2 = st.columns(2)
    with col1:
        if st.button("πŸ”‘ Login"):
            login_user(username, password)
    with col2:
        if st.button("πŸ“ Register"):
            register_user(username, password)