danmia
This commit is contained in:
181
app.py
Normal file
181
app.py
Normal 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)
|
||||
Reference in New Issue
Block a user