v2.1-enterprise

This commit is contained in:
2026-03-23 19:32:57 +01:00
parent b1500e5d87
commit 988a8b143f
35 changed files with 1304 additions and 0 deletions
@@ -0,0 +1,28 @@
import os
from flask import current_app
from ..models import User, db
def bootstrap_system(app):
admin_username = os.getenv('ADMIN_USERNAME', 'admin').strip()
admin_email = os.getenv('ADMIN_EMAIL', 'admin@example.com').strip()
admin_password = os.getenv('ADMIN_PASSWORD', 'change-me-admin').strip()
existing = User.query.filter_by(username=admin_username).first()
if existing:
return
admin = User(
username=admin_username,
email=admin_email,
display_name='Administrator',
role='admin',
active=True,
force_password_change=False,
)
admin.set_password(admin_password)
db.session.add(admin)
db.session.commit()
current_app.logger.info(f'Bootstrap admin created: {admin_username}')
@@ -0,0 +1,55 @@
import smtplib
from email.message import EmailMessage
from flask import current_app, url_for
def _send_mail(to_email: str, subject: str, body: str):
if not current_app.config['MAIL_ENABLED']:
current_app.logger.info(f"MAIL DISABLED -> To: {to_email} | Subject: {subject}\n{body}")
return
msg = EmailMessage()
msg['Subject'] = subject
msg['From'] = current_app.config['MAIL_FROM']
msg['To'] = to_email
msg.set_content(body)
with smtplib.SMTP(current_app.config['SMTP_HOST'], current_app.config['SMTP_PORT'], timeout=20) as smtp:
smtp.starttls()
smtp.login(current_app.config['SMTP_USERNAME'], current_app.config['SMTP_PASSWORD'])
smtp.send_message(msg)
def send_welcome_email(user, temporary_password: str):
login_url = url_for('main.login', _external=True)
body = f"""Hej {user.display_name},
Din TuxiNet StreamHub-konto er blevet oprettet.
Brugernavn: {user.username}
Midlertidig kode: {temporary_password}
Login: {login_url}
Du skal ændre din kode ved første login.
Hilsen
TuxiNet StreamHub
"""
_send_mail(user.email, 'Velkommen til TuxiNet StreamHub', body)
def send_reset_email(user, reset_url: str):
body = f"""Hej {user.display_name},
Du har bedt om at nulstille din adgangskode.
Reset-link:
{reset_url}
Linket udløber automatisk.
Hvis du ikke har bedt om dette, kan du ignorere mailen.
Hilsen
TuxiNet StreamHub
"""
_send_mail(user.email, 'Nulstil din adgangskode', body)