This commit is contained in:
neon
2026-04-02 10:33:23 -04:00
parent b9a752df87
commit 0433641ebb
15 changed files with 736 additions and 0 deletions

181
app.py Normal file
View File

@@ -0,0 +1,181 @@
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/<name>', 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/<name>', 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)