from appwrite.client import Client
from appwrite.services.account import Account
from dotenv import load_dotenv
import os
app = Flask(__name__)
load_dotenv()
# Initialize the Appwrite client
client = Client()
client.set_endpoint(os.getenv('APPWRITE_ENDPOINT'))
client.set_project(os.getenv('APPWRITE_PROJECT_ID'))
client.set_key(os.getenv('APPWRITE_API_KEY_DevelopmentScopes'))
# Generate a random secret key for session management
secret_key = os.urandom(32)
app.secret_key = secret_key
@app.route('/')
def index():
return render_template("index.html")
@app.route('/app')
def home():
if 'user' in session:
return render_template("start.html")
else:
return redirect(url_for('login'))
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
email = request.form['email']
password = request.form['password']
account = Account(client)
try:
response = account.create_session(email=email, password=password)
session['user'] = response['userId']
return redirect(url_for('app'))
except Exception as e:
# Handle login failure here
return render_template('login.html', error='Invalid credentials')
elif 'user' in session:
return redirect(url_for('app'))
else:
return render_template('login.html')
@app.route('/logout')
def logout():
if 'user' in session:
account = Account(client)
account.delete_session(session['user'])
session.pop('user', None)
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True, port=8080)