modified: web/blueprints/site_admin.py
modified: web/panel_db.py modified: web/templates/admin/user_edit.html
This commit is contained in:
@@ -167,6 +167,8 @@ def user_new():
|
||||
flash("All fields are required.", "danger")
|
||||
elif db.get_user_by_username(username):
|
||||
flash("Username already taken.", "danger")
|
||||
elif db.get_user_by_email(email):
|
||||
flash("Email address already in use.", "danger")
|
||||
else:
|
||||
db.create_user(username, email, password, is_site_admin)
|
||||
flash(f"User '{username}' created.", "success")
|
||||
@@ -186,6 +188,10 @@ def user_edit(user_id):
|
||||
email = request.form.get("email", "").strip()
|
||||
is_site_admin = request.form.get("is_site_admin") == "1"
|
||||
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)
|
||||
if new_password:
|
||||
db.change_password(user_id, new_password)
|
||||
|
||||
@@ -150,6 +150,10 @@ def get_user_by_username(username: str):
|
||||
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):
|
||||
return _panel_query("SELECT * FROM users WHERE id=%s", (user_id,), fetchone=True)
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<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 not user %}
|
||||
<div class="form-text">Minimum 8 characters recommended.</div>
|
||||
|
||||
Reference in New Issue
Block a user