From 23d6a455842f9daddbb5d5ff61472c75eb42829a Mon Sep 17 00:00:00 2001 From: jessikitty Date: Fri, 25 Sep 2026 00:44:57 +1000 Subject: [PATCH] Gate registration behind the site setting; land on dashboard after login --- app/routes/auth.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/routes/auth.py b/app/routes/auth.py index 6202f62..5677312 100644 --- a/app/routes/auth.py +++ b/app/routes/auth.py @@ -2,6 +2,7 @@ from flask import Blueprint, render_template, redirect, url_for, flash, request from flask_login import login_user, logout_user, login_required, current_user from app import db from app.models.user import User +from app.models.site_setting import SiteSetting auth_bp = Blueprint('auth', __name__, url_prefix='/auth') @@ -11,6 +12,14 @@ def register(): """User registration.""" if current_user.is_authenticated: return redirect(url_for('main.index')) + + # Admins can close signups from Site Settings. The very first account is + # always allowed through, otherwise a fresh install locks itself out. + if not SiteSetting.get_bool('allow_registration', True) and \ + User.query.first() is not None: + flash('Registration is currently closed. Ask an administrator for an account.', + 'warning') + return redirect(url_for('auth.login')) if request.method == 'POST': username = request.form.get('username') @@ -74,7 +83,7 @@ def login(): login_user(user, remember=bool(remember)) next_page = request.args.get('next') flash(f'Welcome back, {user.username}!', 'success') - return redirect(next_page) if next_page else redirect(url_for('main.index')) + return redirect(next_page) if next_page else redirect(url_for('main.dashboard')) else: flash('Invalid username or password.', 'danger')