mirror of
https://github.com/EDeev/tablo.git
synced 2026-10-07 20:49:31 +03:00
- экспорт в JSON/CSV/PDF/PNG пускал любого вошедшего к любому расписанию, у которого есть хоть одна ссылка-приглашение (достаточно перебрать id); теперь — только владелец и редакторы, как и просмотр по id; - три копии проверки прав сведены в app/access.py; - без SECRET_KEY приложение не запускается (кроме отладки и тестов): со значением по умолчанию cookie сессии можно было подделать и войти под любым пользователем; - текст исключения от ИИ-провайдера больше не уходит в интерфейс, ошибка пишется в лог; - DATABASE_URL как альтернатива DB_*; debug в run.py — из FLASK_DEBUG; - неиспользуемые импорты и переменные удалены (ruff).
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
from flask import Flask
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
from flask_migrate import Migrate
|
|
from flask_login import LoginManager
|
|
from flask_wtf.csrf import CSRFProtect
|
|
|
|
db = SQLAlchemy()
|
|
migrate = Migrate()
|
|
login_manager = LoginManager()
|
|
csrf = CSRFProtect()
|
|
|
|
def create_app(config_overrides=None):
|
|
app = Flask(__name__)
|
|
app.config.from_object('app.config.Config')
|
|
if config_overrides:
|
|
app.config.update(config_overrides)
|
|
if not app.config.get('SECRET_KEY'):
|
|
if not (app.debug or app.testing):
|
|
raise RuntimeError('Задайте SECRET_KEY: без него cookie сессий можно подделать')
|
|
app.config['SECRET_KEY'] = 'dev-only-secret' # noqa: S105 — только для отладки и тестов
|
|
|
|
db.init_app(app)
|
|
migrate.init_app(app, db)
|
|
login_manager.init_app(app)
|
|
csrf.init_app(app)
|
|
|
|
login_manager.login_view = 'auth.login'
|
|
login_manager.login_message = 'Войдите для доступа'
|
|
login_manager.login_message_category = 'warning'
|
|
|
|
from app.routes import auth, schedules, subjects, shares, export
|
|
app.register_blueprint(auth.bp)
|
|
app.register_blueprint(schedules.bp)
|
|
app.register_blueprint(subjects.bp)
|
|
app.register_blueprint(shares.bp)
|
|
app.register_blueprint(export.bp)
|
|
|
|
return app
|