Логин Python Flask
У меня есть функции входа и выхода пользователей на Flask. Я хочу записывать эти события в .txt файл и отображать их на веб-странице в виде таблицы. У меня уже реализована запись логов но есть сложности с отображением этих логов на веб-странице audit_logs.html.
Также мне нужно реализовать запись событий входа пользователя. Нужна помощь в решение проблемы и настройке записи логов как для входа, так и для выхода пользователей?
def parse_logs(log_file_path):
logs = []
with open(log_file_path, 'r') as log_file:
for line in log_file:
parts = line.strip().split(', ')
if len(parts) == 3:
log_entry = {
'user': parts[0],
'action': parts[1],
'timestamp': parts[2]
}
logs.append(log_entry)
else:
print(f"Ignoring line with unexpected format: {line}")
return logs
audit_logs
:
@app.route('/audit_logs')
def audit_logs():
home_dir = os.path.expanduser('~')
log_file_path = os.path.join(home_dir, "/var/www/basic-flask-app/audit_logs.txt")
logs = parse_logs(log_file_path)
logs = reversed(logs)
return render_template('audit_logs.html', logs=logs)
logout
:
@app.route('/logout')
def logout():
action = 'logged out'
home_dir = os.path.expanduser("/var/www/basic-flask-app/")
log_file_path = os.path.join(home_dir, "audit_logs.txt")
log_entry = f"{session['username']}, {action.capitalize()}, {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n"
with open(log_file_path, 'a') as log_file:
log_file.write(log_entry)
session.clear()
return render_template('login.html')
login
:
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
conn = create_connection()
cursor = conn.cursor()
cursor.execute(
"SELECT password FROM users_table WHERE username=?", (username,))
stored_password_hash = cursor.fetchone()
if stored_password_hash:
if hash_password(password) == stored_password_hash[0]:
session['username'] = username
session['last_activity'] = time.time()
return redirect(url_for('main'))
else:
return "Invalid username or password"
else:
return "Invalid username or password"
conn.close()