modified: web/blueprints/site_admin.py

modified:   web/panel_db.py
	modified:   web/templates/admin/user_edit.html
This commit is contained in:
SimolZimol
2026-04-01 03:04:38 +02:00
parent 4952b52ba4
commit a2db1585de
3 changed files with 11 additions and 1 deletions

View File

@@ -167,6 +167,8 @@ def user_new():
flash("All fields are required.", "danger") flash("All fields are required.", "danger")
elif db.get_user_by_username(username): elif db.get_user_by_username(username):
flash("Username already taken.", "danger") flash("Username already taken.", "danger")
elif db.get_user_by_email(email):
flash("Email address already in use.", "danger")
else: else:
db.create_user(username, email, password, is_site_admin) db.create_user(username, email, password, is_site_admin)
flash(f"User '{username}' created.", "success") flash(f"User '{username}' created.", "success")
@@ -186,6 +188,10 @@ def user_edit(user_id):
email = request.form.get("email", "").strip() email = request.form.get("email", "").strip()
is_site_admin = request.form.get("is_site_admin") == "1" is_site_admin = request.form.get("is_site_admin") == "1"
new_password = request.form.get("new_password", "") new_password = request.form.get("new_password", "")
existing = db.get_user_by_email(email)
if existing and existing["id"] != user_id:
flash("Email address already in use.", "danger")
return render_template("admin/user_edit.html", user=user)
db.update_user(user_id, username, email, is_site_admin) db.update_user(user_id, username, email, is_site_admin)
if new_password: if new_password:
db.change_password(user_id, new_password) db.change_password(user_id, new_password)

View File

@@ -150,6 +150,10 @@ def get_user_by_username(username: str):
return _panel_query("SELECT * FROM users WHERE username=%s", (username,), fetchone=True) return _panel_query("SELECT * FROM users WHERE username=%s", (username,), fetchone=True)
def get_user_by_email(email: str):
return _panel_query("SELECT * FROM users WHERE email=%s", (email,), fetchone=True)
def get_user_by_id(user_id: int): def get_user_by_id(user_id: int):
return _panel_query("SELECT * FROM users WHERE id=%s", (user_id,), fetchone=True) return _panel_query("SELECT * FROM users WHERE id=%s", (user_id,), fetchone=True)

View File

@@ -25,7 +25,7 @@
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ 'New Password (leave blank = unchanged)' if user else 'Password *' }}</label> <label class="form-label">{{ 'New Password (leave blank = unchanged)' if user else 'Password *' }}</label>
<input type="password" name="password" class="form-control" <input type="password" name="{{ 'new_password' if user else 'password' }}" class="form-control"
{{ '' if user else 'required' }}> {{ '' if user else 'required' }}>
{% if not user %} {% if not user %}
<div class="form-text">Minimum 8 characters recommended.</div> <div class="form-text">Minimum 8 characters recommended.</div>