181 lines
4.8 KiB
Python
181 lines
4.8 KiB
Python
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) |