From c9c3c80f4fa4e25109660138ede9056f8dfe7dc1 Mon Sep 17 00:00:00 2001 From: ske087 Date: Sun, 27 Jul 2025 00:15:39 +0300 Subject: [PATCH] Fix: Gmail SMTP guidance, registration form field, and conditional admin auto-refresh --- app/routes/auth.py | 23 +++++++++++++++++++++-- app/templates/admin/base.html | 16 ++++++++++++---- app/templates/admin/mail_settings.html | 12 ++++++++++++ migrations/create_map_routes.py | 0 4 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 migrations/create_map_routes.py diff --git a/app/routes/auth.py b/app/routes/auth.py index 9f412b3..e2963ae 100644 --- a/app/routes/auth.py +++ b/app/routes/auth.py @@ -2,15 +2,34 @@ from flask import Blueprint, render_template, request, redirect, url_for, flash from flask_login import login_user, logout_user, login_required, current_user from werkzeug.security import check_password_hash from app.models import User, db -from app.forms import LoginForm, RegisterForm, ForgotPasswordForm from app.routes.reset_password import RequestResetForm, ResetPasswordForm from flask_mail import Message from app.routes.mail import mail from app.utils.token import generate_reset_token, verify_reset_token import re -from app.forms import LoginForm, RegisterForm, ForgotPasswordForm +from flask_wtf import FlaskForm +from wtforms import StringField, PasswordField, BooleanField, SubmitField +from wtforms.validators import DataRequired, Email, EqualTo, Length + auth = Blueprint('auth', __name__) +class LoginForm(FlaskForm): + email = StringField('Email', validators=[DataRequired(), Email()]) + password = PasswordField('Password', validators=[DataRequired()]) + remember_me = BooleanField('Remember Me') + submit = SubmitField('Sign In') + +class RegisterForm(FlaskForm): + nickname = StringField('Nickname', validators=[DataRequired(), Length(min=3, max=32)]) + email = StringField('Email', validators=[DataRequired(), Email()]) + password = PasswordField('Password', validators=[DataRequired(), Length(min=8)]) + password2 = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')]) + submit = SubmitField('Register') + +class ForgotPasswordForm(FlaskForm): + email = StringField('Email', validators=[DataRequired(), Email()]) + submit = SubmitField('Request Password Reset') + @auth.route('/login', methods=['GET', 'POST']) def login(): """User login page""" diff --git a/app/templates/admin/base.html b/app/templates/admin/base.html index 5c2071c..c044fb5 100644 --- a/app/templates/admin/base.html +++ b/app/templates/admin/base.html @@ -229,10 +229,18 @@ document.getElementById('sidebar').classList.toggle('show'); }); - // Auto-refresh stats every 30 seconds - setTimeout(function() { - location.reload(); - }, 30000); + // Conditional auto-refresh logic + {% if request.endpoint == 'admin.mail_settings' %} + {% if settings and settings.enabled %} + setTimeout(function() { + location.reload(); + }, 30000); + {% endif %} + {% else %} + setTimeout(function() { + location.reload(); + }, 30000); + {% endif %} diff --git a/app/templates/admin/mail_settings.html b/app/templates/admin/mail_settings.html index 58ba4cd..36954bc 100644 --- a/app/templates/admin/mail_settings.html +++ b/app/templates/admin/mail_settings.html @@ -1,6 +1,18 @@ {% extends 'admin/base.html' %} {% block admin_content %}

Mail Server Settings

+
+ Recommended Gmail SMTP Settings:
+ + To use Gmail SMTP, you must create an App Password in your Google Account security settings. +
diff --git a/migrations/create_map_routes.py b/migrations/create_map_routes.py new file mode 100644 index 0000000..e69de29