Jun 26 - Implement registration function for user to register account
This commit is contained in:
+48
-2
@@ -8,8 +8,9 @@ from models import (
|
||||
authenticate, check_login_allowed, change_password, log_action,
|
||||
get_user_by_email, create_password_reset_token,
|
||||
get_password_reset_user, consume_password_reset_token,
|
||||
purge_expired_reset_tokens, update_user_profile,
|
||||
purge_expired_reset_tokens, update_user_profile, register_user,
|
||||
)
|
||||
from config import get_setting
|
||||
from utils.decorators import login_required
|
||||
from utils.email import send_email
|
||||
|
||||
@@ -59,7 +60,52 @@ def login():
|
||||
else:
|
||||
error = "Invalid username or password."
|
||||
|
||||
return render_template("login.html", error=error)
|
||||
reg_enabled = get_setting("registration.enabled", "0") == "1"
|
||||
return render_template("login.html", error=error, reg_enabled=reg_enabled)
|
||||
|
||||
|
||||
@auth_bp.route("/register", methods=["GET", "POST"])
|
||||
def register():
|
||||
if "user" in session:
|
||||
return redirect(url_for("index"))
|
||||
|
||||
if get_setting("registration.enabled", "0") != "1":
|
||||
flash("Registration is currently disabled. Contact your administrator.", "warning")
|
||||
return redirect(url_for("auth.login"))
|
||||
|
||||
if request.method == "GET":
|
||||
return render_template("register.html")
|
||||
|
||||
username = request.form.get("username", "").strip()
|
||||
full_name = request.form.get("full_name", "").strip()
|
||||
email = request.form.get("email", "").strip().lower()
|
||||
password = request.form.get("password", "")
|
||||
confirm = request.form.get("confirm_password", "")
|
||||
|
||||
errors = []
|
||||
if not username or len(username) < 3:
|
||||
errors.append("Username must be at least 3 characters.")
|
||||
if len(password) < 8:
|
||||
errors.append("Password must be at least 8 characters.")
|
||||
if password != confirm:
|
||||
errors.append("Passwords do not match.")
|
||||
|
||||
if errors:
|
||||
return render_template("register.html", errors=errors,
|
||||
username=username, full_name=full_name, email=email)
|
||||
try:
|
||||
new_id = register_user(username, password, full_name, email or None)
|
||||
logger.info(f"New user registered: '{username}' id={new_id}.")
|
||||
flash("Account created successfully. You can now sign in.", "success")
|
||||
return redirect(url_for("auth.login"))
|
||||
except ValueError as e:
|
||||
return render_template("register.html", errors=[str(e)],
|
||||
username=username, full_name=full_name, email=email)
|
||||
except Exception as e:
|
||||
logger.error(f"register error: {e}")
|
||||
return render_template("register.html",
|
||||
errors=["An unexpected error occurred. Please try again."],
|
||||
username=username, full_name=full_name, email=email)
|
||||
|
||||
|
||||
@auth_bp.route("/logout")
|
||||
|
||||
Reference in New Issue
Block a user