from flask import Flask, render_template, request, jsonify, redirect, url_for, session from utils import ( user_add, is_person, verify_password, get_user_data, get_all_users, delete_user ) import json app = Flask(__name__) app.secret_key = 'twoj_sekretny_klucz_zmien_to_w_produkcji' # Potrzebne dla sesji @app.route('/') def root(): return render_template('index.html') @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': name = request.form.get('username') password = request.form.get('password') confirm_password = request.form.get('confirm_password') # Walidacja if not name or not password: return "Wszystkie pola są wymagane!", 400 if password != confirm_password: return "Hasła nie są identyczne!", 400 if len(password) < 4: return "Hasło musi mieć co najmniej 4 znaki!", 400 if is_person(name): return "Użytkownik już istnieje!", 400 # Dodaj użytkownika user_add(name, password) return redirect(url_for('login')) return render_template('register.html') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': name = request.form.get('username') password = request.form.get('password') if not name or not password: return "Wszystkie pola są wymagane!", 400 if not is_person(name): return "Użytkownik nie istnieje!", 404 if verify_password(name, password): # Zapisz w sesji że użytkownik jest zalogowany session['username'] = name return redirect(url_for('dashboard')) else: return "Złe hasło!", 401 return render_template('login.html') @app.route('/dashboard') def dashboard(): # Sprawdź czy użytkownik jest zalogowany if 'username' not in session: return redirect(url_for('login')) user_data = get_user_data(session['username']) return render_template('dashboard.html', user=user_data) @app.route('/logout') def logout(): session.pop('username', None) return redirect(url_for('root')) @app.route('/api/passwd/', methods=['GET']) def api_get_password(name): """API endpoint do pobierania hasła (tylko JSON)""" if not is_person(name): return jsonify({"error": "Brak osoby"}), 404 user_data = get_user_data(name) if user_data: return jsonify({ "user": user_data["user"], "password": user_data["password"], "status": "success" }) else: return jsonify({"error": "Brak hasła"}), 404 @app.route('/api/users', methods=['GET']) def api_get_all_users(): """API endpoint do pobierania wszystkich użytkowników""" users = get_all_users() return jsonify({ "count": len(users), "users": users }) @app.route('/api/check/', methods=['GET']) def api_check_user(name): """API endpoint do sprawdzania czy użytkownik istnieje""" exists = is_person(name) return jsonify({ "user": name, "exists": bool(exists), "code": exists }) @app.route('/api/register', methods=['POST']) def api_register(): """API endpoint do rejestracji (JSON)""" data = request.get_json() if not data: return jsonify({"error": "Brak danych JSON"}), 400 name = data.get('username') password = data.get('password') if not name or not password: return jsonify({"error": "Username i password są wymagane"}), 400 if is_person(name): return jsonify({"error": "Użytkownik już istnieje"}), 409 user_add(name, password) return jsonify({"message": f"Użytkownik {name} zarejestrowany"}), 201 @app.route('/api/login', methods=['POST']) def api_login(): """API endpoint do logowania (JSON)""" data = request.get_json() if not data: return jsonify({"error": "Brak danych JSON"}), 400 name = data.get('username') password = data.get('password') if not name or not password: return jsonify({"error": "Username i password są wymagane"}), 400 if not is_person(name): return jsonify({"error": "Użytkownik nie istnieje"}), 404 if verify_password(name, password): return jsonify({ "message": "Zalogowano pomyślnie", "user": name, "status": "success" }) else: return jsonify({"error": "Złe hasło"}), 401 @app.route('/debug/users') def debug_users(): """Debug endpoint - pokazuje wszystkich użytkowników""" if 'username' not in session: return redirect(url_for('login')) users = get_all_users() return jsonify(users) @app.route("/css/") def css(): return render_template("index_css.html") if __name__ == '__main__': app.run(port=2500)