server-tx part : web UI, PDF generator & transfer to RX server

This commit is contained in:
2025-05-15 14:34:08 +03:00
parent d969addd18
commit e1780fad99
32 changed files with 1272 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
from flask import Blueprint
m_auth = Blueprint(
'auth',
__name__,
template_folder='templates'
)
from . import views
@@ -0,0 +1,21 @@
{% extends "general.html" %}
{% block title %}Авторизация{% endblock %}
{% block header %}Авторизация на платформе{% endblock %}
{% block content %}
<div class="card">
<h2>Авторизация</h2>
<form action="session/login" method="POST">
<div class="form-group">
<label for="username">Логин</label>
<input type="text" id="username" name="username" required>
</div>
<div class="form-group">
<label for="password">Пароль</label>
<input type="password" id="password" name="password" required>
</div>
<button type="submit" class="button">Авторизация</button>
</form>
</div>
{% endblock %}
+41
View File
@@ -0,0 +1,41 @@
from . import m_auth
from flask import render_template
from flask import redirect
from flask import request
from flask import session
from app._tools.database import SessionManager
from app._tools.database import DataManager
from app._tools.decorators import auth_required
from app._tools import passhash
from app.config import _SALT as SALT
@m_auth.route('/')
def login_page():
return render_template('auth/login_form.html')
@m_auth.route('/session/login', methods=['POST'])
def login():
data = dict(request.form)
if (len(data['username']) == 0 or len(data['password']) == 0):
return redirect("/auth")
user_i = DataManager.get_user_by_name(data['username'])
if user_i == None:
return render_template("error.html", error = "Пользователь не найден!")
if not passhash.isValid(data['password'], SALT, user_i.passkey):
return render_template("error.html", error = "Неверный пароль!")
new_token = passhash.genToken()
SessionManager.add_session(new_token, user_i.id)
session.permanent = True
session["token"] = new_token
return redirect("/")
@m_auth.route('/logout')
@auth_required
def logout():
current_token = session["token"]
session.clear()
SessionManager.remove_session(current_token)
return redirect("/")